wxruby3-shapes 0.9.0.pre.beta.3 → 0.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +5 -7
  3. data/README.md +38 -6
  4. data/assets/logo.svg +339 -0
  5. data/assets/logo.xpm +60 -0
  6. data/assets/screenshot.png +0 -0
  7. data/assets/social.png +0 -0
  8. data/bin/wx-shapes +1 -1
  9. data/lib/wx/shapes/arrow_base.rb +4 -11
  10. data/lib/wx/shapes/arrows/circle_arrow.rb +22 -11
  11. data/lib/wx/shapes/arrows/circle_prong_arrow.rb +48 -0
  12. data/lib/wx/shapes/arrows/cross_bar_arrow.rb +57 -0
  13. data/lib/wx/shapes/arrows/cross_bar_circle_arrow.rb +56 -0
  14. data/lib/wx/shapes/arrows/cross_bar_prong_arrow.rb +49 -0
  15. data/lib/wx/shapes/arrows/crossed_circle.rb +46 -0
  16. data/lib/wx/shapes/arrows/cup_arrow.rb +65 -0
  17. data/lib/wx/shapes/arrows/diamond_arrow.rb +8 -13
  18. data/lib/wx/shapes/arrows/double_cross_bar_arrow.rb +27 -0
  19. data/lib/wx/shapes/arrows/filled_arrow.rb +60 -0
  20. data/lib/wx/shapes/arrows/line_arrow.rb +67 -0
  21. data/lib/wx/shapes/arrows/open_arrow.rb +22 -23
  22. data/lib/wx/shapes/arrows/prong_arrow.rb +42 -0
  23. data/lib/wx/shapes/arrows/solid_arrow.rb +21 -35
  24. data/lib/wx/shapes/arrows/square_arrow.rb +37 -0
  25. data/lib/wx/shapes/auto_layout.rb +2 -2
  26. data/lib/wx/shapes/base.rb +1 -1
  27. data/lib/wx/shapes/canvas_history.rb +20 -0
  28. data/lib/wx/shapes/connection_point.rb +10 -6
  29. data/lib/wx/shapes/diagram.rb +98 -78
  30. data/lib/wx/shapes/events.rb +8 -8
  31. data/lib/wx/shapes/printout.rb +3 -16
  32. data/lib/wx/shapes/serializable.rb +2 -436
  33. data/lib/wx/shapes/serialize/wx.rb +30 -18
  34. data/lib/wx/shapes/shape.rb +211 -168
  35. data/lib/wx/shapes/shape_canvas.rb +728 -267
  36. data/lib/wx/shapes/shape_data_object.rb +99 -18
  37. data/lib/wx/shapes/shape_handle.rb +18 -11
  38. data/lib/wx/shapes/shape_list.rb +34 -67
  39. data/lib/wx/shapes/shapes/bitmap_shape.rb +23 -24
  40. data/lib/wx/shapes/shapes/box_shape.rb +389 -0
  41. data/lib/wx/shapes/shapes/circle_shape.rb +19 -22
  42. data/lib/wx/shapes/shapes/control_shape.rb +77 -41
  43. data/lib/wx/shapes/shapes/curve_shape.rb +38 -31
  44. data/lib/wx/shapes/shapes/diamond_shape.rb +7 -17
  45. data/lib/wx/shapes/shapes/edit_text_shape.rb +6 -9
  46. data/lib/wx/shapes/shapes/ellipse_shape.rb +12 -15
  47. data/lib/wx/shapes/shapes/flex_grid_shape.rb +58 -33
  48. data/lib/wx/shapes/shapes/grid_shape.rb +259 -161
  49. data/lib/wx/shapes/shapes/line_shape.rb +155 -161
  50. data/lib/wx/shapes/shapes/manager_shape.rb +77 -0
  51. data/lib/wx/shapes/shapes/multi_sel_rect.rb +8 -8
  52. data/lib/wx/shapes/shapes/ortho_shape.rb +31 -36
  53. data/lib/wx/shapes/shapes/polygon_shape.rb +23 -29
  54. data/lib/wx/shapes/shapes/rect_shape.rb +95 -53
  55. data/lib/wx/shapes/shapes/round_ortho_shape.rb +6 -8
  56. data/lib/wx/shapes/shapes/round_rect_shape.rb +20 -24
  57. data/lib/wx/shapes/shapes/square_shape.rb +14 -17
  58. data/lib/wx/shapes/shapes/text_shape.rb +95 -53
  59. data/lib/wx/shapes/version.rb +1 -1
  60. data/lib/wx/shapes/wx.rb +16 -7
  61. data/lib/wx/wx-shapes/cmd/test.rb +1 -1
  62. data/samples/demo/arrows.json +1 -0
  63. data/samples/demo/arrows.yaml +793 -0
  64. data/samples/demo/art/HBox.xpm +22 -0
  65. data/samples/demo/art/VBox.xpm +22 -0
  66. data/samples/demo/art/logo.xpm +60 -0
  67. data/samples/demo/class.json +1 -0
  68. data/samples/demo/class.yaml +5631 -0
  69. data/samples/demo/demo.rb +301 -91
  70. data/samples/demo/dialogs.rb +1405 -0
  71. data/samples/demo/erd.json +1 -0
  72. data/samples/demo/erd.yaml +4072 -0
  73. data/samples/demo/frame_canvas.rb +409 -33
  74. data/samples/sample1/art/logo.xpm +60 -0
  75. data/samples/sample1/sample.rb +11 -11
  76. data/samples/sample2/art/logo.xpm +60 -0
  77. data/samples/sample2/sample.rb +2 -2
  78. data/samples/sample2/sample_shape.rb +15 -15
  79. data/samples/sample3/art/logo.xpm +60 -0
  80. data/samples/sample3/sample.rb +3 -3
  81. data/samples/sample4/art/logo.xpm +60 -0
  82. data/samples/sample4/sample.rb +2 -2
  83. data/tests/lib/wxapp_runner.rb +4 -0
  84. data/tests/serializer_tests.rb +8 -441
  85. data/tests/test_grid_shapes.rb +2 -2
  86. data/tests/test_serialize_xml.rb +17 -0
  87. data/tests/test_serialize_yaml.rb +2 -2
  88. metadata +78 -28
  89. data/lib/wx/shapes/serialize/core.rb +0 -40
  90. data/lib/wx/shapes/serialize/id.rb +0 -82
  91. data/lib/wx/shapes/serializer/json.rb +0 -258
  92. data/lib/wx/shapes/serializer/yaml.rb +0 -125
  93. data/samples/demo/art/sample.xpm +0 -251
  94. data/samples/sample1/art/sample.xpm +0 -251
  95. data/samples/sample2/art/sample.xpm +0 -251
  96. data/samples/sample3/art/sample.xpm +0 -251
  97. data/samples/sample4/art/sample.xpm +0 -251
@@ -6,26 +6,22 @@ module Wx::SF
6
6
  # Class encapsulating rounded rectangle. It extends the basic rectangular shape.
7
7
  class RoundRectShape < RectShape
8
8
 
9
- RADIUS = 20
9
+ # Default values
10
+ module DEFAULT
11
+ # Default corner radius
12
+ RADIUS = 20
13
+ end
10
14
 
11
15
  property :radius
12
16
 
13
- # @overload initialize()
14
- # Default constructor.
15
- # @overload initialize(pos, size, diagram)
16
- # User constructor.
17
- # @param [Wx::RealPoint] pos Initial position
18
- # @param [Wx::RealPoint] size Initial size
19
- # @param [Float] radius Corner radius
20
- # @param [Wx::SF::Diagram] diagram parent diagram
21
- def initialize(*args)
22
- if args.empty?
23
- super
24
- @radius = RADIUS
25
- else
26
- pos, size, @radius, diagram = args
27
- super(pos, size, diagram)
28
- end
17
+ # Constructor.
18
+ # @param [Wx::RealPoint,Wx::Point] pos Initial position
19
+ # @param [Wx::RealPoint,Wx::Size,Wx::Point] size Initial size
20
+ # @param [Float] radius Corner radius
21
+ # @param [Wx::SF::Diagram] diagram parent diagram
22
+ def initialize(pos = Shape::DEFAULT::POSITION, size = RectShape::DEFAULT::SIZE, radius: DEFAULT::RADIUS, diagram: nil)
23
+ super(pos, size, diagram: diagram)
24
+ @radius = radius
29
25
  end
30
26
 
31
27
  # Access (get/set) radius.
@@ -73,8 +69,8 @@ module Wx::SF
73
69
  super
74
70
  return
75
71
  end
76
- dc.with_pen(@border) do
77
- dc.with_brush(@fill) do
72
+ dc.with_pen(border) do
73
+ dc.with_brush(fill) do
78
74
  dc.draw_rounded_rectangle(get_absolute_position.to_point, @rect_size.to_size, @radius)
79
75
  end
80
76
  end
@@ -88,8 +84,8 @@ module Wx::SF
88
84
  super
89
85
  return
90
86
  end
91
- dc.with_pen(Wx::Pen.new(@hover_color, 1)) do
92
- dc.with_brush(@fill) do
87
+ dc.with_pen(Wx::Pen.new(hover_colour, 1)) do
88
+ dc.with_brush(fill) do
93
89
  dc.draw_rounded_rectangle(get_absolute_position.to_point, @rect_size.to_size, @radius)
94
90
  end
95
91
  end
@@ -104,8 +100,8 @@ module Wx::SF
104
100
  super
105
101
  return
106
102
  end
107
- dc.with_pen(Wx::Pen.new(@hover_color, 2)) do
108
- dc.with_brush(@fill) do
103
+ dc.with_pen(Wx::Pen.new(hover_colour, 2)) do
104
+ dc.with_brush(fill) do
109
105
  dc.draw_rounded_rectangle(get_absolute_position.to_point, @rect_size.to_size, @radius)
110
106
  end
111
107
  end
@@ -118,7 +114,7 @@ module Wx::SF
118
114
  super
119
115
  return
120
116
  end
121
- if @fill.style != Wx::BrushStyle::BRUSHSTYLE_TRANSPARENT
117
+ if fill.style != Wx::BrushStyle::BRUSHSTYLE_TRANSPARENT
122
118
  dc.with_pen(Wx::TRANSPARENT_PEN) do
123
119
  dc.with_brush(get_parent_canvas.get_shadow_fill) do
124
120
  dc.draw_rounded_rectangle((get_absolute_position + get_parent_canvas.get_shadow_offset).to_point,
@@ -7,22 +7,19 @@ module Wx::SF
7
7
 
8
8
  class SquareShape < RectShape
9
9
 
10
+ # Default values
11
+ module DEFAULT
12
+ # Default square size
13
+ SIZE = 100.0
14
+ end
10
15
 
11
- # @overload initialize()
12
- # Default constructor.
13
- # @overload initialize(pos, size, diagram)
14
- # User constructor.
15
- # @param [Wx::RealPoint] pos Initial position
16
- # @param [Float] size Initial size
17
- # @param [Wx::SF::Diagram] diagram parent diagram
18
- def initialize(*args)
19
- if args.empty?
20
- super
21
- set_rect_size(100,100)
22
- else
23
- pos, sz, diagram = args
24
- super(pos, Wx::RealPoint.new(sz, sz), diagram)
25
- end
16
+
17
+ # Constructor.
18
+ # @param [Wx::RealPoint,Wx::Point] pos Initial position
19
+ # @param [Float] size Initial size
20
+ # @param [Wx::SF::Diagram] diagram parent diagram
21
+ def initialize(pos = Shape::DEFAULT::POSITION, size = DEFAULT::SIZE, diagram: nil)
22
+ super(pos, Wx::RealPoint.new(size, size), diagram: diagram)
26
23
  end
27
24
 
28
25
  # Get shape's center. Default implementation does nothing. The function can be overridden if necessary.
@@ -56,7 +53,7 @@ module Wx::SF
56
53
  # @param [Shape::Handle] handle Reference to dragged handle
57
54
  # @see #on_handle
58
55
  def do_on_handle(handle)
59
- prev_size = @rect_size.dup
56
+ prev_x, prev_y = @rect_size
60
57
 
61
58
  # perform standard operations
62
59
  case handle.type
@@ -75,7 +72,7 @@ module Wx::SF
75
72
  end
76
73
 
77
74
  # calculate common size and some auxiliary values
78
- if (prev_size.x < @rect_size.x) || (prev_size.y < @rect_size.y)
75
+ if (prev_x < @rect_size.x) || (prev_y < @rect_size.y)
79
76
  if @rect_size.x >= @rect_size.y
80
77
  maxsize = @rect_size.x
81
78
  else
@@ -9,50 +9,61 @@ module Wx::SF
9
9
 
10
10
  # default values
11
11
  module DEFAULT
12
- # Default value of TextShape @font data member.
13
- FONT = Wx::SWISS_FONT if Wx::App.is_main_loop_running
14
- Wx.add_delayed_constant(self, :FONT) { Wx::SWISS_FONT }
15
- # Default value of TextShape @text_color data member.
16
- TEXTCOLOR = Wx::BLACK if Wx::App.is_main_loop_running
17
- Wx.add_delayed_constant(self, :TEXTCOLOR) { Wx::BLACK }
12
+ class << self
13
+ # Default value of TextShape @font data member.
14
+ def font; begin; @font = Wx::SWISS_FONT.dup; @font.point_size = 12; end unless @font; @font; end
15
+ # Default value of TextShape @text_color data member.
16
+ def text_color; @txtclr ||= Wx::BLACK.dup; end
17
+ # Standard value of TextShape @fill data member
18
+ def text_fill; @text_fill ||= Wx::TRANSPARENT_BRUSH.dup; end
19
+ # Standard value of TextShape @border data member
20
+ def text_border; @text_border ||= Wx::TRANSPARENT_PEN.dup; end
21
+ end
22
+ TEXT = 'Text'
18
23
  end
19
24
 
20
- property :font, :text_colour, :text
21
-
22
- # @overload initialize()
23
- # Default constructor.
24
- # @overload initialize(pos, size, diagram)
25
- # User constructor.
26
- # @param [Wx::RealPoint] pos Initial position
27
- # @param [String] txt Text content
28
- # @param [Wx::SF::Diagram] diagram parent diagram
29
- def initialize(*args)
30
- txt = nil
31
- if args.empty?
32
- super
33
- else
34
- pos, txt, diagram = args
35
- super(pos, Wx::RealPoint.new, diagram)
36
- end
37
- @font = DEFAULT::FONT
38
- @font.set_point_size(12)
25
+ property :text
26
+ property({ text_colour: :serialize_text_colour,
27
+ font: :serialize_text_font }, optional: true)
28
+
29
+ # Constructor.
30
+ # @param [Wx::RealPoint,Wx::Point] pos Initial position
31
+ # @param [String] txt Text content
32
+ # @param [Wx::SF::Diagram] diagram parent diagram
33
+ def initialize(pos = Shape::DEFAULT::POSITION, txt = DEFAULT::TEXT, diagram: nil)
34
+ super(pos, Wx::RealPoint.new, diagram: diagram)
35
+ @font = nil
36
+ @scaled_font = nil
39
37
 
40
38
  @line_height = 12
41
39
 
42
- @text_color = DEFAULT::TEXTCOLOR
43
- @text = txt || 'Text'
40
+ @text_color = nil
41
+ @text = txt
44
42
 
45
- @fill = Wx::TRANSPARENT_BRUSH
46
- @border = Wx::TRANSPARENT_PEN
47
43
  @rect_size = Wx::RealPoint.new
48
44
 
49
45
  update_rect_size
50
46
  end
51
47
 
52
48
  # Set text font.
53
- # @param [Wx::Font] font Font
54
- def set_font(font)
55
- @font = font
49
+ # @overload set_text_font(font)
50
+ # @param [Wx::Font] font
51
+ # @overload set_text_font(font_info)
52
+ # @param [Wx::FontInfo] font_info
53
+ # @overload set_text_font(pointSize, family, style, weight, underline=false, faceName=(''), encoding=Wx::FontEncoding::FONTENCODING_DEFAULT)
54
+ # @param pointSize [Integer] Size in points. See {Wx::Font#initialize}.
55
+ # @param family [Wx::FontFamily] The font family. See {Wx::Font#initialize}.
56
+ # @param style [Wx::FontStyle] One of {Wx::FontStyle::FONTSTYLE_NORMAL}, {Wx::FontStyle::FONTSTYLE_SLANT} and {Wx::FontStyle::FONTSTYLE_ITALIC}. See {Wx::Font#initialize}.
57
+ # @param weight [Wx::FontWeight] Font weight. One of the {Wx::FontWeight} enumeration values. See {Wx::Font#initialize}.
58
+ # @param underline [Boolean] The value can be true or false. See {Wx::Font#initialize}.
59
+ # @param faceName [String] An optional string specifying the face name to be used. See {Wx::Font#initialize}.
60
+ # @param encoding [Wx::FontEncoding] An encoding which may be one of the enumeration values of {Wx::FontEncoding}. See {Wx::Font#initialize}.
61
+ def set_font(*args)
62
+ @font = if args.size == 1 && Wx::Font === args.first
63
+ args.first
64
+ else
65
+ Wx::Font.new(*args)
66
+ end
56
67
  update_rect_size
57
68
  end
58
69
  alias :font= :set_font
@@ -60,7 +71,7 @@ module Wx::SF
60
71
  # Get text font.
61
72
  # @return [Wx::Font] Font
62
73
  def get_font
63
- @font
74
+ @font || (@diagram&.shape_canvas ? @diagram.shape_canvas.text_font : DEFAULT.font)
64
75
  end
65
76
  alias :font :get_font
66
77
 
@@ -79,23 +90,36 @@ module Wx::SF
79
90
  end
80
91
  alias :text :get_text
81
92
 
93
+ # Get current fill style.
94
+ # @return [Wx::Brush] Current brush
95
+ def get_fill
96
+ @fill || (@diagram&.shape_canvas ? @diagram.shape_canvas.text_fill : DEFAULT.text_fill)
97
+ end
98
+ alias :fill :get_fill
99
+
100
+ # Get current border style.
101
+ # @return [Wx::Pen] Current pen
102
+ def get_border
103
+ @border || (@diagram&.shape_canvas ? @diagram.shape_canvas.text_border : DEFAULT.text_border)
104
+ end
105
+ alias :border :get_border
82
106
 
83
107
  # Set text color.
84
- # @param [Wx::Colour] col Text color
108
+ # @param [Wx::Colour,String,Symbol] col Text color
85
109
  def set_text_colour(col)
86
- @text_color = col
110
+ @text_color = Wx::Colour === col ? col : Wx::Colour.new(col)
87
111
  end
88
112
  alias :text_colour= :set_text_colour
89
113
 
90
114
  # Get text color.
91
115
  # @return [Wx::Colour] Current text color
92
116
  def get_text_colour
93
- @text_color
117
+ @text_color || (@diagram&.shape_canvas ? @diagram.shape_canvas.text_colour : DEFAULT.text_color)
94
118
  end
95
119
  alias :text_colour :get_text_colour
96
120
 
97
121
  # Update shape (align all child shapes and resize it to fit them)
98
- def update
122
+ def update(recurse = true)
99
123
  update_rect_size
100
124
  super
101
125
  end
@@ -106,13 +130,14 @@ module Wx::SF
106
130
  w = -1
107
131
  h = -1
108
132
  if get_parent_canvas
133
+ cur_font = @scaled_font || font
109
134
  if ShapeCanvas.gc_enabled?
110
135
  Wx::GraphicsContext.draw_on(get_parent_canvas) do |gc|
111
136
  # calculate text extent
112
137
  hd = -1
113
138
  e = 0
114
139
 
115
- gc.set_font(@font, Wx::BLACK)
140
+ gc.set_font(cur_font, Wx::BLACK)
116
141
 
117
142
  # we must use split string to inspect all lines of possible multiline text
118
143
  h = 0
@@ -127,7 +152,7 @@ module Wx::SF
127
152
  end
128
153
  else
129
154
  get_parent_canvas.paint do |dc|
130
- dc.set_font(@font)
155
+ dc.set_font(cur_font)
131
156
  w, h, @line_height = dc.get_multi_line_text_extent(@text)
132
157
  dc.set_font(Wx::NULL_FONT)
133
158
  end
@@ -160,8 +185,6 @@ module Wx::SF
160
185
  # @param [Float] x Horizontal scale factor
161
186
  # @param [Float] y Vertical scale factor
162
187
  def scale_rectangle(x, y)
163
- s = 1.0
164
-
165
188
  if x == 1.0
166
189
  s = y
167
190
  elsif y == 1.0
@@ -172,10 +195,17 @@ module Wx::SF
172
195
  s = y
173
196
  end
174
197
 
175
- size = @font.get_point_size * s
198
+ cur_font = @scaled_font || font
199
+
200
+ size = cur_font.get_point_size * s
176
201
  size = 5 if size < 5
177
202
 
178
- @font.set_point_size(size)
203
+ if size == font.point_size
204
+ @scaled_font = nil
205
+ else
206
+ @scaled_font ||= font.dup
207
+ @scaled_font.set_point_size(size.to_i) unless size == @scaled_font.get_point_size
208
+ end
179
209
  update_rect_size
180
210
  end
181
211
 
@@ -235,7 +265,7 @@ module Wx::SF
235
265
 
236
266
  # Draw the shape in the highlighted mode (another shape is dragged over this
237
267
  # shape and this shape will accept the dragged one if it will be dropped on it).
238
- # The function can be overridden if neccessary.
268
+ # The function can be overridden if necessary.
239
269
  # @param [Wx::DC] dc Reference to device context where the shape will be drawn to
240
270
  def draw_highlighted(dc)
241
271
  super
@@ -277,7 +307,7 @@ module Wx::SF
277
307
  end
278
308
 
279
309
  # Event handler called during dragging of the right shape handle.
280
- # The function can be overridden if neccessary.
310
+ # The function can be overridden if necessary.
281
311
  # @param [Shape::Handle] handle Reference to dragged shape handle
282
312
  def on_right_handle(handle)
283
313
  # HINT: overload it for custom actions...
@@ -286,7 +316,7 @@ module Wx::SF
286
316
  end
287
317
 
288
318
  # Event handler called during dragging of the bottom shape handle.
289
- # The function can be overridden if neccessary.
319
+ # The function can be overridden if necessary.
290
320
  # @param [Shape::Handle] handle Reference to dragged shape handle
291
321
  def on_bottom_handle(handle)
292
322
  # HINT: overload it for custom actions...
@@ -297,10 +327,10 @@ module Wx::SF
297
327
  # Draw text shape.
298
328
  # @param [Wx::DC] dc Device context where the text shape will be drawn to
299
329
  def draw_text_content(dc)
300
- dc.with_brush(@fill) do
301
- dc.set_background_mode(Wx::BrushStyle::BRUSHSTYLE_TRANSPARENT)
302
- dc.set_text_foreground(@text_color)
303
- dc.with_font(@font) do
330
+ dc.with_brush(fill) do
331
+ dc.set_background_mode(Wx::BrushStyle::BRUSHSTYLE_TRANSPARENT.to_i)
332
+ dc.set_text_foreground(text_colour)
333
+ dc.with_font(@scaled_font || font) do
304
334
  pos = get_absolute_position
305
335
  # draw all text lines
306
336
  @text.split("\n").each_with_index do |line, i|
@@ -310,15 +340,27 @@ module Wx::SF
310
340
  end
311
341
  end
312
342
 
343
+ # (de-)serialize text colour; allows for nil values
344
+ def serialize_text_colour(*val)
345
+ @text_color = val.first unless val.empty?
346
+ @text_color
347
+ end
348
+
349
+ # (de-)serialize text colour; allows for nil values
350
+ def serialize_text_font(*val)
351
+ @font = val.first unless val.empty?
352
+ @font
353
+ end
354
+
313
355
  # Deserialize attributes and recalculate rectangle size afterwards.
314
- # @param [Hash] data
315
356
  # @return [self]
316
- def from_serialized(data)
317
- super
357
+ def deserialize_finalize
318
358
  update_rect_size
319
359
  self
320
360
  end
321
361
 
362
+ define_deserialize_finalizer :deserialize_finalize
363
+
322
364
  end
323
365
 
324
366
  end
@@ -5,7 +5,7 @@ module Wx
5
5
 
6
6
  module SF
7
7
 
8
- VERSION = '0.9.0-beta.3'
8
+ VERSION = '0.9.6'
9
9
 
10
10
  end
11
11
 
data/lib/wx/shapes/wx.rb CHANGED
@@ -3,17 +3,15 @@
3
3
 
4
4
  module Wx
5
5
 
6
- class Wx::RealPoint
6
+ class RealPoint
7
7
 
8
8
  # Returns distance from this point to given point.
9
- # @param [Wx::RealPoint,Wx::Point,Array(Integer,Integer)] pt2
9
+ # @param [Wx::RealPoint,Wx::Point,Array(Integer,Integer),Array(Float,Float)] pt2
10
10
  # @return [Float] distance to given point
11
11
  def distance_to(pt2)
12
- if Array === pt2 && pt2.size == 2
13
- to_x, to_y = pt2
14
- else
15
- to_x = pt2.x; to_y = pt2.y
16
- end
12
+ to_x, to_y = pt2
13
+ to_x = to_x.to_f
14
+ to_y = to_y.to_f
17
15
  Math.sqrt((to_x - self.x)*(to_x - self.x) + (to_y - self.y)*(to_y - self.y))
18
16
  end
19
17
  alias :distance :distance_to
@@ -26,4 +24,15 @@ module Wx
26
24
 
27
25
  end
28
26
 
27
+ class Size
28
+
29
+ # Returns this size as a Wx::RealPoint.
30
+ # @return [Wx::RealPoint]
31
+ def to_real_point
32
+ Wx::RealPoint.new(self.width.to_f, self.height.to_f)
33
+ end
34
+ alias :to_real :to_real_point
35
+
36
+ end
37
+
29
38
  end
@@ -16,7 +16,7 @@ module WxShapes
16
16
  description
17
17
  else
18
18
  Dir[File.join(WxShapes::ROOT, 'tests', 'test_*.rb')].each do |test|
19
- system(RUBY, test)
19
+ exit(1) unless system(RUBY, test)
20
20
  end
21
21
  end
22
22
  end
@@ -0,0 +1 @@
1
+ {"rbklass":"Array","data":[{"rbklass":"Wx::SF::ShapeCanvas::Version","data":{"version_info":{"rbklass":"Wx::SF::ShapeCanvas::Version::VersionInfo","v":[0,9,0]}}},{"rbklass":"Wx::SF::ShapeCanvas::Settings","data":{"scale":1.0,"min_scale":0.1,"max_scale":2.0,"background_color":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[240,240,240,255]}}},"common_hover_color":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[120,120,255,255]}},"&id":3597080},"common_border_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","data":{"value":100},"&id":3526760}},"&id":3600900},"common_fill_brush":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","data":{"value":100},"&id":3526840}},"&id":3600960},"common_line_pen":{"rbklass":"Wx::Pen","*id":3600900},"common_arrow_fill":{"rbklass":"Wx::Brush","*id":3600960},"common_text_color":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"common_text_fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"style":{"rbklass":"Wx::BrushStyle","data":{"value":106},"&id":8740}}},"common_text_border":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","data":{"value":106},"&id":7640}}},"common_text_font":{"rbklass":"Wx::Font","data":{"font_info":"Sans 12"}},"common_control_fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":8740}}},"common_control_border":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":7640}}},"common_control_mod_fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","data":{"value":111}}}},"common_control_mod_border":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,255,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"grid_line_mult":10,"grid_color":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[200,200,200,255]}}},"grid_style":{"rbklass":"Wx::PenStyle","data":{"value":103}},"gradient_from":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[240,240,240,255]}}},"gradient_to":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[200,200,255,255]}}},"style":{"rbklass":"Wx::SF::ShapeCanvas::STYLE","data":{"value":3071}},"shadow_offset":{"rbklass":"Wx::RealPoint","data":{"x":4.0,"y":4.0}},"shadow_fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[150,150,150,128]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"print_h_align":{"rbklass":"Wx::SF::ShapeCanvas::HALIGN","data":{"value":2}},"print_v_align":{"rbklass":"Wx::SF::ShapeCanvas::VALIGN","data":{"value":2}},"print_mode":{"rbklass":"Wx::SF::ShapeCanvas::PRINTMODE","data":{"value":2}},"grid_size":10}},{"rbklass":"Wx::SF::Diagram","data":{"shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[{"rbklass":"Wx::SF::SquareShape","data":{"rect_size":{"rbklass":"Wx::RealPoint","data":{"x":100.0,"y":100.0}},"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"border":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","data":{"value":319}},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":110.0,"y":230.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","data":{"value":0},"&id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","data":{"value":0},"&id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}},"&id":3596520},{"rbklass":"Wx::SF::EllipseShape","data":{"rect_size":{"rbklass":"Wx::RealPoint","data":{"x":100.0,"y":50.0}},"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"border":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","data":{"value":319}},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":830.0,"y":250.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","*id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","*id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}},"&id":3596540},{"rbklass":"Wx::SF::LineShape","data":{"src_shape":{"rbklass":"Wx::SF::SquareShape","*id":3596520},"trg_shape":{"rbklass":"Wx::SF::EllipseShape","*id":3596540},"src_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"trg_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"stand_alone":false,"src_arrow":{"rbklass":"Wx::SF::ProngArrow","data":{"pen":null}},"trg_arrow":{"rbklass":"Wx::SF::CrossBarArrow","data":{"pen":null}},"src_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"trg_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"dock_point":18446744073709551616,"control_points":{"rbklass":"Array","data":[]},"line_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","data":{"value":319},"&id":3597680},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":540.0,"y":290.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","*id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","*id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}}},{"rbklass":"Wx::SF::LineShape","data":{"src_shape":{"rbklass":"Wx::SF::SquareShape","*id":3596520},"trg_shape":{"rbklass":"Wx::SF::EllipseShape","*id":3596540},"src_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"trg_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"stand_alone":false,"src_arrow":{"rbklass":"Wx::SF::DiamondArrow","data":{"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"pen":null}},"trg_arrow":{"rbklass":"Wx::SF::DoubleCrossBarArrow","data":{"pen":null}},"src_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"trg_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"dock_point":18446744073709551616,"control_points":{"rbklass":"Array","data":[{"rbklass":"Wx::RealPoint","data":{"x":310.0,"y":380.0}},{"rbklass":"Wx::RealPoint","data":{"x":770.0,"y":380.0}}]},"line_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","*id":3597680},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":540.0,"y":290.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","*id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","*id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}}},{"rbklass":"Wx::SF::LineShape","data":{"src_shape":{"rbklass":"Wx::SF::SquareShape","*id":3596520},"trg_shape":{"rbklass":"Wx::SF::EllipseShape","*id":3596540},"src_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"trg_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"stand_alone":false,"src_arrow":{"rbklass":"Wx::SF::SquareArrow","data":{"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"pen":null}},"trg_arrow":{"rbklass":"Wx::SF::CrossBarCircleArrow","data":{"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"pen":null}},"src_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"trg_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"dock_point":18446744073709551616,"control_points":{"rbklass":"Array","data":[{"rbklass":"Wx::RealPoint","data":{"x":260.0,"y":460.0}},{"rbklass":"Wx::RealPoint","data":{"x":780.0,"y":460.0}}]},"line_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","*id":3597680},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":540.0,"y":290.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","*id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","*id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}}},{"rbklass":"Wx::SF::LineShape","data":{"src_shape":{"rbklass":"Wx::SF::SquareShape","*id":3596520},"trg_shape":{"rbklass":"Wx::SF::EllipseShape","*id":3596540},"src_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"trg_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"stand_alone":false,"src_arrow":{"rbklass":"Wx::SF::CrossBarProngArrow","data":{"pen":null}},"trg_arrow":{"rbklass":"Wx::SF::CircleProngArrow","data":{"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"pen":null}},"src_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"trg_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"dock_point":18446744073709551616,"control_points":{"rbklass":"Array","data":[{"rbklass":"Wx::RealPoint","data":{"x":230.0,"y":550.0}},{"rbklass":"Wx::RealPoint","data":{"x":810.0,"y":540.0}}]},"line_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","*id":3597680},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":540.0,"y":290.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","*id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","*id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}}},{"rbklass":"Wx::SF::LineShape","data":{"src_shape":{"rbklass":"Wx::SF::SquareShape","*id":3596520},"trg_shape":{"rbklass":"Wx::SF::EllipseShape","*id":3596540},"src_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"trg_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"stand_alone":false,"src_arrow":{"rbklass":"Wx::SF::CupArrow","data":{"pen":null}},"trg_arrow":{"rbklass":"Wx::SF::OpenArrow","data":{"pen":null}},"src_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"trg_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"dock_point":18446744073709551616,"control_points":{"rbklass":"Array","data":[{"rbklass":"Wx::RealPoint","data":{"x":300.0,"y":150.0}},{"rbklass":"Wx::RealPoint","data":{"x":770.0,"y":150.0}}]},"line_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","*id":3597680},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":540.0,"y":290.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","*id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","*id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}}},{"rbklass":"Wx::SF::LineShape","data":{"src_shape":{"rbklass":"Wx::SF::SquareShape","*id":3596520},"trg_shape":{"rbklass":"Wx::SF::EllipseShape","*id":3596540},"src_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"trg_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"stand_alone":false,"src_arrow":{"rbklass":"Wx::SF::CircleArrow","data":{"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"pen":null}},"trg_arrow":{"rbklass":"Wx::SF::SolidArrow","data":{"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"pen":null}},"src_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"trg_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"dock_point":18446744073709551616,"control_points":{"rbklass":"Array","data":[{"rbklass":"Wx::RealPoint","data":{"x":280.0,"y":90.0}},{"rbklass":"Wx::RealPoint","data":{"x":790.0,"y":90.0}}]},"line_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","*id":3597680},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":540.0,"y":290.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","*id":3597020},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","*id":3597040},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}}},{"rbklass":"Wx::SF::LineShape","data":{"src_shape":{"rbklass":"Wx::SF::SquareShape","*id":3596520},"trg_shape":{"rbklass":"Wx::SF::EllipseShape","*id":3596540},"src_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"trg_point":{"rbklass":"Wx::RealPoint","data":{"x":0.0,"y":0.0}},"stand_alone":false,"src_arrow":{"rbklass":"Wx::SF::CrossedCircleArrow","data":{"fill":{"rbklass":"Wx::Brush","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[255,255,255,255]}}},"style":{"rbklass":"Wx::BrushStyle","*id":3526840}}},"pen":null}},"trg_arrow":null,"src_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"trg_offset":{"rbklass":"Wx::RealPoint","data":{"x":-1.0,"y":-1.0}},"dock_point":18446744073709551616,"control_points":{"rbklass":"Array","data":[{"rbklass":"Wx::RealPoint","data":{"x":220.0,"y":60.0}},{"rbklass":"Wx::RealPoint","data":{"x":830.0,"y":60.0}}]},"line_pen":{"rbklass":"Wx::Pen","data":{"colour":{"rbklass":"Wx::Colour","data":{"colour":{"rbklass":"Array","data":[0,0,0,255]}}},"width":1,"style":{"rbklass":"Wx::PenStyle","*id":3526760}}},"active":true,"visibility":true,"style":{"rbklass":"Wx::SF::Shape::STYLE","data":{"value":319}},"accepted_children":{"rbklass":"Set","a":["Wx::SF::TextShape","Wx::SF::EditTextShape"]},"accepted_connections":{"rbklass":"Set","a":["NilClass"]},"accepted_src_neighbours":{"rbklass":"Set","a":["NilClass"]},"accepted_trg_neighbours":{"rbklass":"Set","a":["NilClass"]},"relative_position":{"rbklass":"Wx::RealPoint","data":{"x":540.0,"y":290.0}},"h_align":{"rbklass":"Wx::SF::Shape::HALIGN","data":{"value":0}},"v_align":{"rbklass":"Wx::SF::Shape::VALIGN","data":{"value":0}},"h_border":0.0,"v_border":0.0,"custom_dock_point":-3,"connection_points":{"rbklass":"Array","data":[]},"user_data":null,"hover_colour":{"rbklass":"Wx::Colour","*id":3597080},"child_shapes":{"rbklass":"Wx::SF::ShapeList","data":{"list":{"rbklass":"Set","a":[]}}}}}]}}},"accepted_shapes":{"rbklass":"Set","a":["NilClass"]},"accepted_top_shapes":{"rbklass":"Set","a":["NilClass"]}}}]}