Class: Vedeu::Geometry::Area Private

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/vedeu/geometry/area.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Define an area from dimensions or points.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, y:, yn:, x:, xn:) ⇒ Vedeu::Geometry::Area

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Vedeu::Area.

Parameters:

  • name (Symbol|String)
  • y (Fixnum)

    The starting row/line position.

  • yn (Fixnum)

    The ending row/line position.

  • x (Fixnum)

    The starting column/character position.

  • xn (Fixnum)

    The ending column/character position.



91
92
93
94
95
96
97
# File 'lib/vedeu/geometry/area.rb', line 91

def initialize(name:, y:, yn:, x:, xn:)
  @name = name
  @y    = y
  @yn   = yn
  @x    = x
  @xn   = xn
end

Instance Attribute Details

#nameString|Symbol (readonly, protected)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (String|Symbol)


259
260
261
# File 'lib/vedeu/geometry/area.rb', line 259

def name
  @name
end

#xFixnum (readonly) Also known as: left

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the left coordinate (column/character start position) of the interface.

Returns:

  • (Fixnum)

    Returns the left coordinate (column/character start position) of the interface.



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

def x
  @x
end

#xnFixnum (readonly) Also known as: right

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the right coordinate (column/ character end position) of the interface.

Returns:

  • (Fixnum)

    Returns the right coordinate (column/ character end position) of the interface.



41
42
43
# File 'lib/vedeu/geometry/area.rb', line 41

def xn
  @xn
end

#yFixnum (readonly) Also known as: top

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the top coordinate (row/line start position) of the interface.

Returns:

  • (Fixnum)

    Returns the top coordinate (row/line start position) of the interface.



23
24
25
# File 'lib/vedeu/geometry/area.rb', line 23

def y
  @y
end

#ynFixnum (readonly) Also known as: bottom

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the bottom coordinate (row/line end position) of the interface.

Returns:

  • (Fixnum)

    Returns the bottom coordinate (row/line end position) of the interface.



29
30
31
# File 'lib/vedeu/geometry/area.rb', line 29

def yn
  @yn
end

Class Method Details

.from_attributes(attributes = {}) ⇒ Vedeu::Geometry::Area

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • attributes (Hash<Symbol => Boolean|Fixnum|Symbol>) (defaults to: {})

Options Hash (attributes):

  • horizontal_alignment (Symbol)
  • maximised (Boolean)
  • name (String|Symbol)
  • vertical_alignment (Symbol)
  • x (Fixnum)
  • xn (Fixnum)
  • x_xn (Fixnum)
  • x_default (Fixnum)
  • y (Fixnum)
  • yn (Fixnum)
  • y_yn (Fixnum)
  • y_default (Fixnum)

Returns:



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/vedeu/geometry/area.rb', line 58

def self.from_attributes(attributes = {})
  y_attributes = {
    alignment: attributes[:vertical_alignment],
    d:         attributes[:y],
    dn:        attributes[:yn],
    d_dn:      attributes[:y_yn],
    maximised: attributes[:maximised],
  }
  x_attributes = {
    alignment: attributes[:horizontal_alignment],
    d:         attributes[:x],
    dn:        attributes[:xn],
    d_dn:      attributes[:x_xn],
    maximised: attributes[:maximised],
  }
  y_yn = Vedeu::Geometry::YDimension.pair(y_attributes)
  x_xn = Vedeu::Geometry::XDimension.pair(x_attributes)

  new(name: attributes[:name],
      y:    y_yn[0],
      yn:   y_yn[-1],
      x:    x_xn[0],
      xn:   x_xn[-1])
end

Instance Method Details

#borderVedeu::Borders::Border (private)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



264
265
266
# File 'lib/vedeu/geometry/area.rb', line 264

def border
  @border = Vedeu.borders.by_name(name)
end

#bordered_heightFixnum

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the height of the interface determined by whether a top, bottom, both or neither borders are shown.

Returns:

  • (Fixnum)


121
122
123
# File 'lib/vedeu/geometry/area.rb', line 121

def bordered_height
  (byn - by) + 1
end

#bordered_widthFixnum

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the width of the interface determined by whether a left, right, both or neither borders are shown.

Returns:

  • (Fixnum)


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

def bordered_width
  (bxn - bx) + 1
end

#bxFixnum

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return the column position for 1 character right of the left

border.

Returns:

  • (Fixnum)


129
130
131
# File 'lib/vedeu/geometry/area.rb', line 129

def bx
  (enabled? && left?) ? x + 1 : x
end

#bxnFixnum

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return the column position for 1 character left of the right

border.

Returns:

  • (Fixnum)


137
138
139
# File 'lib/vedeu/geometry/area.rb', line 137

def bxn
  (enabled? && right?) ? xn - 1 : xn
end

#byFixnum

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return the row position for 1 character under of the top

border.

Returns:

  • (Fixnum)


145
146
147
# File 'lib/vedeu/geometry/area.rb', line 145

def by
  (enabled? && top?) ? y + 1 : y
end

#bynFixnum

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return the column position for 1 character above of the bottom

border.

Returns:

  • (Fixnum)


153
154
155
# File 'lib/vedeu/geometry/area.rb', line 153

def byn
  (enabled? && bottom?) ? yn - 1 : yn
end

#centreArray<Fixnum>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns an array containing the centred y and x coordinates of the interface.

Returns:

  • (Array<Fixnum>)


161
162
163
# File 'lib/vedeu/geometry/area.rb', line 161

def centre
  [centre_y, centre_x]
end

#centre_xFixnum

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the centred x coordinate (the horizontal centre character) of the interface.

Returns:

  • (Fixnum)


177
178
179
# File 'lib/vedeu/geometry/area.rb', line 177

def centre_x
  (width / 2) + x
end

#centre_yFixnum

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the centred y coordinate (the vertical centre row) of the interface.

Returns:

  • (Fixnum)


169
170
171
# File 'lib/vedeu/geometry/area.rb', line 169

def centre_y
  (height / 2) + y
end

#east(offset = 1) ⇒ Fixnum

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the column after right by default.

Examples:

`right` or `xn` is 19.

east     # => 20
east(2)  # => 21 (positive goes 'more' east)
east(-4) # => 15 (negative goes west)

Parameters:

  • offset (Fixnum) (defaults to: 1)

Returns:

  • (Fixnum)


221
222
223
# File 'lib/vedeu/geometry/area.rb', line 221

def east(offset = 1)
  xn + offset
end

#eql?(other) ⇒ Boolean Also known as: ==

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

An object is equal when its values are the same.

Parameters:

Returns:

  • (Boolean)


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

def eql?(other)
  self.class == other.class && y == other.y && yn == other.yn &&
    x == other.x && xn == other.xn
end

#heightFixnum

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the height of the interface.

Returns:

  • (Fixnum)


184
185
186
# File 'lib/vedeu/geometry/area.rb', line 184

def height
  (yn - y) + 1
end

#north(offset = 1) ⇒ Fixnum

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the row above the top by default.

Examples:

`top` or `y` is 4.

north     # => 3
north(2)  # => 2 (positive goes 'more' north)
north(-4) # => 8 (negative goes south)

Parameters:

  • offset (Fixnum) (defaults to: 1)

Returns:

  • (Fixnum)


206
207
208
# File 'lib/vedeu/geometry/area.rb', line 206

def north(offset = 1)
  y - offset
end

#south(offset = 1) ⇒ Fixnum

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the row below the bottom by default.

Examples:

`bottom` or `yn` is 12.

south     # => 13
south(2)  # => 14 (positive goes 'more' south)
south(-4) # => 8  (negative goes north)

Parameters:

  • offset (Fixnum) (defaults to: 1)

Returns:

  • (Fixnum)


236
237
238
# File 'lib/vedeu/geometry/area.rb', line 236

def south(offset = 1)
  yn + offset
end

#west(offset = 1) ⇒ Fixnum

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the column before left by default.

Examples:

`left` or `x` is 8.

west      # => 7
west(2)   # => 6  (positive goes 'more' west)
west(-4)  # => 12 (negative goes east)

Parameters:

  • offset (Fixnum) (defaults to: 1)

Returns:

  • (Fixnum)


251
252
253
# File 'lib/vedeu/geometry/area.rb', line 251

def west(offset = 1)
  x - offset
end

#widthFixnum

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the width of the interface.

Returns:

  • (Fixnum)


191
192
193
# File 'lib/vedeu/geometry/area.rb', line 191

def width
  (xn - x) + 1
end