class Size

class Size

lib/geometry/size.tya:2

Size provides the geometry/Size standard library API.

Source
# Size provides the geometry/Size standard library API.
class Size
  # Size.height stores instance state.
  # @type Int
  height: 0

  # Size.width stores instance state.
  # @type Int
  width: 0

  # Size.initialize provides the geometry/Size standard library operation.
  # @param width Int width value.
  # @param height Int height value.
  # @return Self the initialized object.
  initialize: width = 0, height = 0 ->
    self.width = self.dimension(width, "width")
    self.height = self.dimension(height, "height")

  # Size.area provides the geometry/Size standard library operation.
  # @param size Int size value.
  # @return Any the resulting value.
  area: size = nil ->
    if size == nil
      size = self
    self.expect(size, "size")
    size.width * size.height

  # Size.aspect_ratio provides the geometry/Size standard library operation.
  # @param size Int size value.
  # @return Any the resulting value.
  aspect_ratio: size = nil ->
    if size == nil
      size = self
    self.expect(size, "size")
    if size.height == 0
      raise error("geometry.Size.aspect_ratio: height is zero")
    size.width / size.height

  # Size.dimension provides the geometry/Size standard library operation.
  # @param value String value value.
  # @param name String name value.
  # @return Any the resulting value.
  dimension: value, name ->
    if value.class != Number
      raise error("geometry.Size: " + name + " must be a number")
    if value < 0
      raise error("geometry.Size: " + name + " must be non-negative")
    value

  # Size.equal? provides the geometry/Size standard library operation.
  # @param a Int a value.
  # @param b Int b value.
  # @return Boolean whether the condition is true.
  equal?: a, b = nil ->
    if b == nil
      b = a
      a = self
    a.class == Size and b.class == Size and a.width == b.width and a.height == b.height

  # Size.expect provides the geometry/Size standard library operation.
  # @param value String value value.
  # @param name String name value.
  # @return Any the resulting value.
  expect: value, name ->
    if value.class != Size
      raise error("geometry.Size: " + name + " must be a Size")

  # Size.new provides the geometry/Size standard library operation.
  # @param width Int width value.
  # @param height Int height value.
  # @return Self the resulting value.
  new: width, height ->
    Size(width, height)

  # Size.zero provides the geometry/Size standard library operation.
  # @return Any the resulting value.
  zero: ->
    Size(0, 0)

Instance Variables

height

Size.height

lib/geometry/size.tya:5

Size.height stores instance state.

Source
  # Size.height stores instance state.
  # @type Int
  height: 0

width

Size.width

lib/geometry/size.tya:9

Size.width stores instance state.

Source
  # Size.width stores instance state.
  # @type Int
  width: 0

Methods

area

Size.area(size = nil)

lib/geometry/size.tya:22

Size.area provides the geometry/Size standard library operation.

Source
  # Size.area provides the geometry/Size standard library operation.
  # @param size Int size value.
  # @return Any the resulting value.
  area: size = nil ->
    if size == nil
      size = self
    self.expect(size, "size")
    size.width * size.height

aspect_ratio

Size.aspect_ratio(size = nil)

lib/geometry/size.tya:31

Size.aspect_ratio provides the geometry/Size standard library operation.

Source
  # Size.aspect_ratio provides the geometry/Size standard library operation.
  # @param size Int size value.
  # @return Any the resulting value.
  aspect_ratio: size = nil ->
    if size == nil
      size = self
    self.expect(size, "size")
    if size.height == 0
      raise error("geometry.Size.aspect_ratio: height is zero")
    size.width / size.height

dimension

Size.dimension(value, name)

lib/geometry/size.tya:43

Size.dimension provides the geometry/Size standard library operation.

Source
  # Size.dimension provides the geometry/Size standard library operation.
  # @param value String value value.
  # @param name String name value.
  # @return Any the resulting value.
  dimension: value, name ->
    if value.class != Number
      raise error("geometry.Size: " + name + " must be a number")
    if value < 0
      raise error("geometry.Size: " + name + " must be non-negative")
    value

equal?

Size.equal?(a, b = nil)

lib/geometry/size.tya:54

Size.equal? provides the geometry/Size standard library operation.

Source
  # Size.equal? provides the geometry/Size standard library operation.
  # @param a Int a value.
  # @param b Int b value.
  # @return Boolean whether the condition is true.
  equal?: a, b = nil ->
    if b == nil
      b = a
      a = self
    a.class == Size and b.class == Size and a.width == b.width and a.height == b.height

expect

Size.expect(value, name)

lib/geometry/size.tya:64

Size.expect provides the geometry/Size standard library operation.

Source
  # Size.expect provides the geometry/Size standard library operation.
  # @param value String value value.
  # @param name String name value.
  # @return Any the resulting value.
  expect: value, name ->
    if value.class != Size
      raise error("geometry.Size: " + name + " must be a Size")

initialize

Size.initialize(width = 0, height = 0)

lib/geometry/size.tya:15

Size.initialize provides the geometry/Size standard library operation.

Source
  # Size.initialize provides the geometry/Size standard library operation.
  # @param width Int width value.
  # @param height Int height value.
  # @return Self the initialized object.
  initialize: width = 0, height = 0 ->
    self.width = self.dimension(width, "width")
    self.height = self.dimension(height, "height")

new

Size.new(width, height)

lib/geometry/size.tya:72

Size.new provides the geometry/Size standard library operation.

Source
  # Size.new provides the geometry/Size standard library operation.
  # @param width Int width value.
  # @param height Int height value.
  # @return Self the resulting value.
  new: width, height ->
    Size(width, height)

zero

Size.zero()

lib/geometry/size.tya:77

Size.zero provides the geometry/Size standard library operation.

Source
  # Size.zero provides the geometry/Size standard library operation.
  # @return Any the resulting value.
  zero: ->
    Size(0, 0)