Class: Vedeu::Dimension

Inherits:
Object
  • Object
show all
Defined in:
lib/vedeu/geometry/dimension.rb

Overview

A Dimension is either the height or width of an entity.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ Vedeu::Dimension

Returns a new instance of Vedeu::Dimension.

Parameters:

  • attributes (Hash<Symbol => Fixnum, NilClass>) (defaults to: {})

Options Hash (attributes):

  • d (Fixnum|NilClass)

    The starting value (y or x).

  • dn (Fixnum|NilClass)

    The ending value (yn or xn).

  • d_dn (Fixnum|NilClass)

    A width or a height.

  • default (Fixnum|NilClass)

    The terminal width or height.

  • options (Hash)


21
22
23
24
25
26
27
# File 'lib/vedeu/geometry/dimension.rb', line 21

def initialize(attributes = {})
  @d       = attributes[:d]
  @dn      = attributes[:dn]
  @d_dn    = attributes[:d_dn]
  @default = attributes[:default]
  @options = attributes.fetch(:options, {})
end

Instance Attribute Details

#dFixnum|NilClass (readonly, protected)

Returns:

  • (Fixnum|NilClass)


48
49
50
# File 'lib/vedeu/geometry/dimension.rb', line 48

def d
  @d
end

#d_dnFixnum|NilClass (readonly, protected)

Returns:

  • (Fixnum|NilClass)


56
57
58
# File 'lib/vedeu/geometry/dimension.rb', line 56

def d_dn
  @d_dn
end

#defaultFixnum|NilClass (readonly, protected)

Returns:

  • (Fixnum|NilClass)


60
61
62
# File 'lib/vedeu/geometry/dimension.rb', line 60

def default
  @default
end

#dnFixnum|NilClass (readonly, protected)

Returns:

  • (Fixnum|NilClass)


52
53
54
# File 'lib/vedeu/geometry/dimension.rb', line 52

def dn
  @dn
end

Class Method Details

.pair(attributes = {}) ⇒ Array<Fixnum>

Parameters:

  • attributes (Hash<Symbol => Fixnum, NilClass>) (defaults to: {})

Returns:

  • (Array<Fixnum>)


8
9
10
# File 'lib/vedeu/geometry/dimension.rb', line 8

def self.pair(attributes = {})
  new(attributes).pair
end

Instance Method Details

#_dFixnum (private)

Returns:

  • (Fixnum)


113
114
115
# File 'lib/vedeu/geometry/dimension.rb', line 113

def _d
  d || 1
end

#_dnFixnum (private)

Returns:

  • (Fixnum)


118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/vedeu/geometry/dimension.rb', line 118

def _dn
  if dn
    dn

  elsif d.nil? && d_dn
    d_dn

  elsif d && d_dn
    (d + d_dn) - 1

  else
    default

  end
end

#centred?Boolean (private)

Returns:

  • (Boolean)


98
99
100
# File 'lib/vedeu/geometry/dimension.rb', line 98

def centred?
  options[:centred]
end

#centred_dFixnum (private)

Returns:

  • (Fixnum)


103
104
105
# File 'lib/vedeu/geometry/dimension.rb', line 103

def centred_d
  (default / 2) - (length / 2)
end

#centred_dnFixnum (private)

Returns:

  • (Fixnum)


108
109
110
# File 'lib/vedeu/geometry/dimension.rb', line 108

def centred_dn
  (default / 2) + (length / 2)
end

#d1Fixnum

Returns:

  • (Fixnum)


30
31
32
# File 'lib/vedeu/geometry/dimension.rb', line 30

def d1
  dimension.first < 1 ? 1 : dimension.first
end

#d2Fixnum

Returns:

  • (Fixnum)


35
36
37
# File 'lib/vedeu/geometry/dimension.rb', line 35

def d2
  dimension.last
end

#defaultsHash<Symbol => Boolean> (private)

Returns:

  • (Hash<Symbol => Boolean>)


145
146
147
148
149
150
# File 'lib/vedeu/geometry/dimension.rb', line 145

def defaults
  {
    centred:   false,
    maximised: false,
  }
end

#dimensionArray<Fixnum> (private)

Returns:

  • (Array<Fixnum>)


65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/vedeu/geometry/dimension.rb', line 65

def dimension
  @dimension = if maximised?
                 [1, default]

               elsif centred? && length?
                 [centred_d, centred_dn]

               else
                 [_d, _dn]

               end
end

#lengthFixnum|NilClass (private)

Returns:

  • (Fixnum|NilClass)


84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/vedeu/geometry/dimension.rb', line 84

def length
  if d && dn
    (d..dn).size

  elsif d_dn
    d_dn

  elsif default
    default

  end
end

#length?Boolean (private)

Returns:

  • (Boolean)


79
80
81
# File 'lib/vedeu/geometry/dimension.rb', line 79

def length?
  default && length
end

#maximised?Boolean (private)

Returns:

  • (Boolean)


135
136
137
# File 'lib/vedeu/geometry/dimension.rb', line 135

def maximised?
  options[:maximised]
end

#optionsHash<Symbol => Boolean> (private)

Returns:

  • (Hash<Symbol => Boolean>)


140
141
142
# File 'lib/vedeu/geometry/dimension.rb', line 140

def options
  defaults.merge!(@options)
end

#pairArray<Fixnum>

Returns:

  • (Array<Fixnum>)


40
41
42
# File 'lib/vedeu/geometry/dimension.rb', line 40

def pair
  dimension
end