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:

Constant Summary

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (Point) initialize(x, y)

Initializes a new point instance.



72
73
74
# File 'lib/chunky_png/point.rb', line 72

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

Instance Attribute Details

- (Integer) x



64
65
66
# File 'lib/chunky_png/point.rb', line 64

def x
  @x
end

- (Integer) y



67
68
69
# File 'lib/chunky_png/point.rb', line 67

def y
  @y
end

Instance Method Details

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

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.



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

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

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

Checks whether 2 points are identical.



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

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

- (Array) to_a Also known as: to_ary

Converts the point instance to an array.



100
101
102
# File 'lib/chunky_png/point.rb', line 100

def to_a
  [x, y]
end

- (true, false) within_bounds?(*dimension_like)

Checks whether the point falls into a dimension



111
112
113
# File 'lib/chunky_png/point.rb', line 111

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