lib/perfect_shape/shape.rb in perfect-shape-0.0.6 vs lib/perfect_shape/shape.rb in perfect-shape-0.0.7

- old
+ new

@@ -20,9 +20,51 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. module PerfectShape # Superclass of all shapes class Shape + # Subclasses must implement + def min_x + end + + # Subclasses must implement + def min_y + end + + # Subclasses must implement + def max_x + end + + # Subclasses must implement + def max_y + end + + # Subclasses must implement + def width + end + + # Subclasses must implement + def height + end + + # center_x is min_x + width/2.0 by default + # Returns nil if min_x or width are nil + def center_x + min_x + width / BigDecimal('2.0') if min_x && width + end + + # center_y is min_y + height/2.0 by default + # Returns nil if min_y or height are nil + def center_y + min_y + height / BigDecimal('2.0') if min_y && height + end + + # Rectangle with x = self.min_x, y = self.min_y, width = self.width, height = self.height + def bounding_box + require 'perfect_shape/rectangle' + Rectangle.new(x: min_x, y: min_y, width: width, height: height) + end + # Normalizes point args whether two-number Array or x, y args returning # normalized point array of two BigDecimal's # # @param x_or_point The point or X coordinate of the point to test. # @param y The Y coordinate of the point to test.