lib/glimmer/libui/shape/line.rb in glimmer-dsl-libui-0.4.18 vs lib/glimmer/libui/shape/line.rb in glimmer-dsl-libui-0.4.19

- old
+ new

@@ -22,16 +22,36 @@ require 'glimmer/libui/shape' module Glimmer module LibUI class Shape + # Line to use as part of a figure (when having 2 args) + # or independently (when having 4 args representing start point x/y and end point x/y) class Line < Shape - parameters :x, :y - parameter_defaults 0, 0 + parameters :x, :y, :end_x, :end_y + parameter_defaults 0, 0, nil, nil def draw(area_draw_params) - ::LibUI.draw_path_line_to(path_proxy.libui, *@args) + if parent.is_a?(Figure) + ::LibUI.draw_path_line_to(path_proxy.libui, x, y) + else + if include_start_point? + ::LibUI.draw_path_new_figure(path_proxy.libui, x, y) + ::LibUI.draw_path_line_to(path_proxy.libui, end_x, end_y) + else + ::LibUI.draw_path_new_figure(path_proxy.libui, 0, 0) + ::LibUI.draw_path_line_to(path_proxy.libui, x, y) + end + end super + end + + # Indicates if line is not part of a figure and yet it includes the start point in addition to end point + def include_start_point? + # if the last 2 args are available, it means that the first 2 args represent the start point + # if line is part of a figure, then the last 2 args are ignored and it is never assumed to include + # start point + !parent.is_a?(Figure) && end_x && end_y end end end end end