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