Class: ChunkyPNG::Point

Inherits:
Object
  • Object
show all
Defined in:
lib/chunky_png/point.rb

Overview

Simple class that represents a point on a canvas using an x and y coordinate.

This class implements some basic methods to handle comparison, the splat operator and bounds checking that make it easier to work with coordinates.

See Also:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(x, y) ⇒ Point

Initializes a new point instance.

Parameters:

  • x (Integer, :to_i)

    The x-coordinate.

  • y (Integer, :to_i)

    The y-coordinate.



87
88
89
# File 'lib/chunky_png/point.rb', line 87

def initialize(x, y)
  @x, @y = x.to_i, y.to_i
end

Instance Attribute Details

#xInteger

Returns The x-coordinate of the point.

Returns:

  • (Integer)

    The x-coordinate of the point.



79
80
81
# File 'lib/chunky_png/point.rb', line 79

def x
  @x
end

#yInteger

Returns The y-coordinate of the point.

Returns:

  • (Integer)

    The y-coordinate of the point.



82
83
84
# File 'lib/chunky_png/point.rb', line 82

def y
  @y
end

Instance Method Details

#<=>(other) ⇒ -1, ...

Compares 2 points.

It will first compare the y coordinate, and it only takes the x-coordinate into account if the y-coordinates of the points are identical. This way, an array of points will be sorted into the order in which they would occur in the pixels array returned by Canvas#pixels.

Parameters:

Returns:

  • (-1, 0, 1)

    -1 If this point comes before the other one, 1 if after, and 0 if the points are identical.



109
110
111
# File 'lib/chunky_png/point.rb', line 109

def <=>(other)
  (y <=> other.y) == 0 ? x <=> other.x : y <=> other.y
end

#eql?(other) ⇒ true, false Also known as: ==

Checks whether 2 points are identical.

Returns:

  • (true, false)

    true iff the x and y coordinates match



93
94
95
# File 'lib/chunky_png/point.rb', line 93

def eql?(other)
  other.x == x && other.y == y
end

#to_aArray Also known as: to_ary

Converts the point instance to an array.

Returns:

  • (Array)

    A 2-element array, i.e. [x, y].



115
116
117
# File 'lib/chunky_png/point.rb', line 115

def to_a
  [x, y]
end

#within_bounds?(*dimension_like) ⇒ true, false

Checks whether the point falls into a dimension

Parameters:

  • dimension_like (ChunkyPNG::Dimension, ...)

    The dimension of which the bounds should be taken for the check.

Returns:

  • (true, false)

    true iff the x and y coordinate fall width the width and height of the dimension.



126
127
128
# File 'lib/chunky_png/point.rb', line 126

def within_bounds?(*dimension_like)
  ChunkyPNG::Dimension(*dimension_like).include?(self)
end