rubysketch 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aeebec01d05ee86260f24da80e85d4ac04bb41029145d8d47e7acc800919e00d
4
- data.tar.gz: d227536ed72e88ef159c347c8ace10ff20532d52cbeb4588956f0c6e794283d7
3
+ metadata.gz: 9068a9fe7e5239420f8e32fb2e30912748bf9c90c52f40516604997b1166830a
4
+ data.tar.gz: 2a75b3ec215aeb15bfba929f561abd2a4f94c4c8093b27bad4de1ee74dd15efa
5
5
  SHA512:
6
- metadata.gz: 9e144994fd11251d589853d0c6439b2d9924a4e76751b6c6147ad1bc4ebb6081d720f1bca5a77b9c1e69228fb4ab87b4807d463db3ca565243a1261f098caed1
7
- data.tar.gz: fd03275e8730519d1095d60f1dbbca5a33ddc93f2e412ff32548f22c678cbe614bdd42fd9166de7c8dac9370d698a95482c2f71575d8c6bdac581d57bd5722fb
6
+ metadata.gz: d7a6252c38ab1fdda0c761c390bb5d0bb3583e740d7beea5efe3c5939a1f52840aac93c41aee693870dde4539df3f69dba20476c34b85a2eb5791fb3bcd63498
7
+ data.tar.gz: ccd6c65ff6b5e0340e7a8e779c2d1da2f277294ae9e03386a7d1317568badade0d4fe51758559680ef22ccc080486a3d2df43dab0501c91c9a6da3cc7144eb1d
@@ -0,0 +1,17 @@
1
+ # RubySketch ChangeLog
2
+
3
+
4
+ ## [0.2.6] - 2020-04-17
5
+
6
+ - push(), pushMatrix() and pushStyle() take block to automatic pop
7
+ - add stroke_cap() and stroke_join()
8
+ - refine startup process
9
+ - add curve() and bezier()
10
+ - add imageMode(), Image#resize(), Image#copy() and copy()
11
+ - add loop(), noLoop() and redraw()
12
+
13
+
14
+ ## [0.2.5] - 2020-03-29
15
+
16
+ - delete debug prints
17
+ - show unsupported image type
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.5
1
+ 0.2.6
@@ -20,12 +20,10 @@ end
20
20
  draw do
21
21
  background 0
22
22
 
23
- begin
24
- pushMatrix
23
+ pushMatrix do
25
24
  translate width / 2, height / 2
26
25
 
27
- begin
28
- pushMatrix
26
+ pushMatrix do
29
27
  fill COLORS[0]
30
28
  ellipse 0, 0, 20, 20
31
29
  rotate (now - start) / 60.0 * 360
@@ -33,32 +31,25 @@ draw do
33
31
  strokeWeight 5
34
32
  line 0, 0, 200, 0
35
33
  fill 1
36
- popMatrix
37
34
  end
38
35
 
39
- begin
40
- pushMatrix
36
+ pushMatrix do
41
37
  strokeWeight 3
42
38
  60.times do
43
39
  rotate 6
44
40
  stroke COLORS[1]
45
41
  line 200, 0, 210, 0
46
42
  end
47
- popMatrix
48
43
  end
49
44
 
50
- begin
51
- pushMatrix
45
+ pushMatrix do
52
46
  strokeWeight 5
53
47
  12.times do
54
48
  rotate 30
55
49
  stroke COLORS[3]
56
50
  line 190, 0, 210, 0
57
51
  end
58
- popMatrix
59
52
  end
60
-
61
- popMatrix
62
53
  end
63
54
 
64
55
  textSize 20
@@ -1,4 +1,33 @@
1
1
  require 'rubysketch'
2
2
 
3
3
 
4
- RubySketch.__send__ :start_on_object_at_exit, self, RubySketch::Processing.new
4
+ begin
5
+ context = RubySketch::Processing.new
6
+ methods = context.class.instance_methods(false)
7
+ .reject {|name| name =~ /__$/}
8
+ consts = context.class.constants
9
+ .reject {|name| name =~ /__$/}
10
+ .each_with_object({}) {|name, h| h[name] = context.class.const_get name}
11
+
12
+ self.class.class_eval do
13
+ methods.each do |name|
14
+ define_method name do |*args, &block|
15
+ context.__send__ name, *args, &block
16
+ end
17
+ end
18
+ consts.each do |(name, value)|
19
+ const_set name, value
20
+ end
21
+ end
22
+
23
+ window = RubySketch::Window.new do |_|
24
+ window.start
25
+ end
26
+ context.setup__ window
27
+
28
+ window.canvas_painter.__send__ :begin_paint
29
+ at_exit do
30
+ window.canvas_painter.__send__ :end_paint
31
+ Reflex.start {window.show}
32
+ end
33
+ end
@@ -5,7 +5,6 @@ require 'open-uri'
5
5
 
6
6
  require 'reflex'
7
7
  require 'rubysketch/module'
8
- require 'rubysketch/starter'
9
8
  require 'rubysketch/window'
10
9
  require 'rubysketch/processing'
11
10
  require 'rubysketch/glsl'
@@ -4,8 +4,6 @@ module RubySketch
4
4
  # @private
5
5
  class GLSL
6
6
 
7
- extend Starter
8
-
9
7
  def initialize (glsl)
10
8
  @shader = Reflex::Shader.new glsl
11
9
  end
@@ -7,8 +7,6 @@ module RubySketch
7
7
 
8
8
  include Math
9
9
 
10
- extend Starter
11
-
12
10
  HALF_PI = PI / 2
13
11
  QUARTER_PI = PI / 4
14
12
  TWO_PI = PI * 2
@@ -43,6 +41,8 @@ module RubySketch
43
41
 
44
42
  # @private
45
43
  def initialize ()
44
+ @loop__ = true
45
+ @redraw__ = false
46
46
  @matrixStack__ = []
47
47
  @styleStack__ = []
48
48
  @frameCount__ = 0
@@ -59,18 +59,67 @@ module RubySketch
59
59
  angleMode RADIANS
60
60
  rectMode CORNER
61
61
  ellipseMode CENTER
62
+ imageMode CORNER
62
63
  end
63
64
 
64
65
  # @private
65
- def on_start__ (window)
66
+ def setup__ (window)
66
67
  @window__ = window
67
- @painter__ = window.canvas_painter
68
+ @painter__ = window.canvas_painter.tap do |o|
69
+ o.miter_limit = 10
70
+ end
68
71
 
69
- setupDrawBlock__
70
- setupMousePressedBlock__
71
- setupMouseReleasedBlock__
72
- setupMouseMovedBlock__
73
- setupMouseDraggedBlock__
72
+ drawFrame = -> event {
73
+ @painter__ = window.canvas_painter
74
+ @matrixStack__.clear
75
+ @styleStack__.clear
76
+ begin
77
+ push
78
+ @drawBlock__.call event if @drawBlock__
79
+ ensure
80
+ pop
81
+ end
82
+ @frameCount__ += 1
83
+ }
84
+
85
+ updateMouseState = -> x, y, pressed = nil {
86
+ @mouseX__ = x
87
+ @mouseY__ = y
88
+ @mousePressed__ = pressed if pressed != nil
89
+ }
90
+
91
+ updateMousePrevPos = -> {
92
+ @mousePrevX__ = @mouseX__
93
+ @mousePrevY__ = @mouseY__
94
+ }
95
+
96
+ @window__.draw = proc do |e|
97
+ if @loop__ || @redraw__
98
+ @redraw__ = false
99
+ drawFrame.call e
100
+ end
101
+ updateMousePrevPos.call
102
+ end
103
+
104
+ @window__.pointer_down = proc do |e|
105
+ updateMouseState.call e.x, e.y, true
106
+ @mousePressedBlock__.call e if @mousePressedBlock__
107
+ end
108
+
109
+ @window__.pointer_up = proc do |e|
110
+ updateMouseState.call e.x, e.y, false
111
+ @mouseReleasedBlock__.call e if @mouseReleasedBlock__
112
+ end
113
+
114
+ @window__.pointer_move = proc do |e|
115
+ updateMouseState.call e.x, e.y
116
+ @mouseMovedBlock__.call e if @mouseMovedBlock__
117
+ end
118
+
119
+ @window__.pointer_drag = proc do |e|
120
+ updateMouseState.call e.x, e.y
121
+ @mouseDraggedBlock__.call e if @mouseDraggedBlock__
122
+ end
74
123
  end
75
124
 
76
125
  # Returns the absolute number of the value.
@@ -293,23 +342,6 @@ module RubySketch
293
342
  nil
294
343
  end
295
344
 
296
- # @private
297
- private def setupDrawBlock__ ()
298
- @window__.draw = proc do |e, painter|
299
- @painter__ = painter
300
- @matrixStack__.clear
301
- @styleStack__.clear
302
- begin
303
- push
304
- @drawBlock__.call e if @drawBlock__
305
- ensure
306
- pop
307
- end
308
- @frameCount__ += 1
309
- updateMousePrevPos__
310
- end
311
- end
312
-
313
345
  # Define draw block.
314
346
  #
315
347
  def draw (&block)
@@ -322,71 +354,26 @@ module RubySketch
322
354
  nil
323
355
  end
324
356
 
325
- # @private
326
- private def setupMousePressedBlock__ ()
327
- @window__.pointer_down = proc do |e|
328
- updateMouseState__ e.x, e.y, true
329
- @mousePressedBlock__.call e if @mousePressedBlock__
330
- end
331
- end
332
-
333
357
  def mousePressed (&block)
334
358
  @mousePressedBlock__ = block if block
335
359
  @mousePressed__
336
360
  end
337
361
 
338
- # @private
339
- private def setupMouseReleasedBlock__ ()
340
- @window__.pointer_up = proc do |e|
341
- updateMouseState__ e.x, e.y, false
342
- @mouseReleasedBlock__.call e if @mouseReleasedBlock__
343
- end
344
- end
345
-
346
362
  def mouseReleased (&block)
347
363
  @mouseReleasedBlock__ = block if block
348
364
  nil
349
365
  end
350
366
 
351
- # @private
352
- private def setupMouseMovedBlock__ ()
353
- @window__.pointer_move = proc do |e|
354
- updateMouseState__ e.x, e.y
355
- @mouseMovedBlock__.call e if @mouseMovedBlock__
356
- end
357
- end
358
-
359
367
  def mouseMoved (&block)
360
368
  @mouseMovedBlock__ = block if block
361
369
  nil
362
370
  end
363
371
 
364
- # @private
365
- private def setupMouseDraggedBlock__ ()
366
- @window__.pointer_drag = proc do |e|
367
- updateMouseState__ e.x, e.y
368
- @mouseDraggedBlock__.call e if @mouseDraggedBlock__
369
- end
370
- end
371
-
372
372
  def mouseDragged (&block)
373
373
  @mouseDraggedBlock__ = block if block
374
374
  nil
375
375
  end
376
376
 
377
- # @private
378
- private def updateMouseState__ (x, y, pressed = nil)
379
- @mouseX__ = x
380
- @mouseY__ = y
381
- @mousePressed__ = pressed if pressed != nil
382
- end
383
-
384
- # @private
385
- private def updateMousePrevPos__ ()
386
- @mousePrevX__ = @mouseX__
387
- @mousePrevY__ = @mouseY__
388
- end
389
-
390
377
  # @private
391
378
  private def size__ (width, height)
392
379
  raise 'size() must be called on startup or setup block' if @started__
@@ -577,6 +564,20 @@ module RubySketch
577
564
  @ellipseMode__ = mode
578
565
  end
579
566
 
567
+ # Sets image mode. Default is CORNER.
568
+ #
569
+ # CORNER -> image(img, left, top, width, height)
570
+ # CORNERS -> image(img, left, top, right, bottom)
571
+ # CENTER -> image(img, center_x, center_y, width, height)
572
+ #
573
+ # @param mode [CORNER, CORNERS, CENTER]
574
+ #
575
+ # @return [nil] nil
576
+ #
577
+ def imageMode (mode)
578
+ @imageMode__ = mode
579
+ end
580
+
580
581
  # @private
581
582
  private def toXYWH__ (mode, a, b, c, d)
582
583
  case mode
@@ -588,6 +589,30 @@ module RubySketch
588
589
  end
589
590
  end
590
591
 
592
+ # Enables calling draw block on every frame.
593
+ #
594
+ # @return [nil] nil
595
+ #
596
+ def loop ()
597
+ @loop__ = true
598
+ end
599
+
600
+ # Disables calling draw block on every frame.
601
+ #
602
+ # @return [nil] nil
603
+ #
604
+ def noLoop ()
605
+ @loop__ = false
606
+ end
607
+
608
+ # Calls draw block to redraw frame.
609
+ #
610
+ # @return [nil] nil
611
+ #
612
+ def redraw ()
613
+ @redraw__ = true
614
+ end
615
+
591
616
  # Clears screen.
592
617
  #
593
618
  # @overload background(str)
@@ -732,10 +757,10 @@ module RubySketch
732
757
 
733
758
  # Draws a line.
734
759
  #
735
- # @param x1 [Numeric] horizontal position for first point
736
- # @param y1 [Numeric] vertical position for first point
737
- # @param x2 [Numeric] horizontal position for second point
738
- # @param y2 [Numeric] vertical position for second point
760
+ # @param x1 [Numeric] horizontal position of first point
761
+ # @param y1 [Numeric] vertical position of first point
762
+ # @param x2 [Numeric] horizontal position of second point
763
+ # @param y2 [Numeric] vertical position of second point
739
764
  #
740
765
  # @return [nil] nil
741
766
  #
@@ -865,6 +890,42 @@ module RubySketch
865
890
  nil
866
891
  end
867
892
 
893
+ # Draws a Catmull-Rom spline curve.
894
+ #
895
+ # @param cx1 [Numeric] horizontal position of beginning control point
896
+ # @param cy1 [Numeric] vertical position of beginning control point
897
+ # @param x1 [Numeric] horizontal position of first point
898
+ # @param y1 [Numeric] vertical position of first point
899
+ # @param x2 [Numeric] horizontal position of second point
900
+ # @param y2 [Numeric] vertical position of second point
901
+ # @param cx2 [Numeric] horizontal position of ending control point
902
+ # @param cy2 [Numeric] vertical position of ending control point
903
+ #
904
+ # @return [nil] nil
905
+ #
906
+ def curve (cx1, cy1, x1, y1, x2, y2, cx2, cy2)
907
+ @painter__.curve cx1, cy1, x1, y1, x2, y2, cx2, cy2
908
+ nil
909
+ end
910
+
911
+ # Draws a Bezier spline curve.
912
+ #
913
+ # @param x1 [Numeric] horizontal position of first point
914
+ # @param y1 [Numeric] vertical position of first point
915
+ # @param cx1 [Numeric] horizontal position of first control point
916
+ # @param cy1 [Numeric] vertical position of first control point
917
+ # @param cx2 [Numeric] horizontal position of second control point
918
+ # @param cy2 [Numeric] vertical position of second control point
919
+ # @param x2 [Numeric] horizontal position of second point
920
+ # @param y2 [Numeric] vertical position of second point
921
+ #
922
+ # @return [nil] nil
923
+ #
924
+ def bezier (x1, y1, cx1, cy1, cx2, cy2, x2, y2)
925
+ @painter__.bezier x1, y1, cx1, cy1, cx2, cy2, x2, y2
926
+ nil
927
+ end
928
+
868
929
  # Draws a text.
869
930
  #
870
931
  # @overload text(str)
@@ -883,24 +944,45 @@ module RubySketch
883
944
 
884
945
  # Draws an image.
885
946
  #
886
- # @overload image(img, x, y)
887
- # @overload image(img, x, y, w, h)
947
+ # @overload image(img, a, b)
948
+ # @overload image(img, a, b, c, d)
888
949
  #
889
950
  # @param img [Image] image to draw
890
- # @param x [Numeric] horizontal position of the image
891
- # @param y [Numeric] vertical position of the image
892
- # @param w [Numeric] width of the image
893
- # @param h [Numeric] height of the image
951
+ # @param a [Numeric] horizontal position of the image
952
+ # @param b [Numeric] vertical position of the image
953
+ # @param c [Numeric] width of the image
954
+ # @param d [Numeric] height of the image
894
955
  #
895
956
  # @return [nil] nil
896
957
  #
897
- def image (img, x, y, w = nil, h = nil)
898
- w ||= img.width
899
- h ||= img.height
900
- @painter__.image img.internal, x, y, w, h
958
+ def image (img, a, b, c = nil, d = nil)
959
+ x, y, w, h = toXYWH__ @imageMode__, a, b, c || img.width, d || img.height
960
+ @painter__.image img.to_internal__, x, y, w, h
901
961
  nil
902
962
  end
903
963
 
964
+ # Copies image.
965
+ #
966
+ # @overload copy(sx, sy, sw, sh, dx, dy, dw, dh)
967
+ # @overload copy(img, sx, sy, sw, sh, dx, dy, dw, dh)
968
+ #
969
+ # @param img [Image] image for copy source
970
+ # @param sx [Numrtic] x position of source region
971
+ # @param sy [Numrtic] y position of source region
972
+ # @param sw [Numrtic] width of source region
973
+ # @param sh [Numrtic] height of source region
974
+ # @param dx [Numrtic] x position of destination region
975
+ # @param dy [Numrtic] y position of destination region
976
+ # @param dw [Numrtic] width of destination region
977
+ # @param dh [Numrtic] height of destination region
978
+ #
979
+ # @return [nil] nil
980
+ #
981
+ def copy (img = nil, sx, sy, sw, sh, dx, dy, dw, dh)
982
+ src = img&.to_internal__ || @window__.canvas
983
+ @painter__.image src, sx, sy, sw, sh, dx, dy, dw, dh
984
+ end
985
+
904
986
  # Applies translation matrix to current transformation matrix.
905
987
  #
906
988
  # @param x [Numeric] horizontal transformation
@@ -944,8 +1026,12 @@ module RubySketch
944
1026
  #
945
1027
  # @return [nil] nil
946
1028
  #
947
- def pushMatrix ()
1029
+ def pushMatrix (&block)
948
1030
  @matrixStack__.push @painter__.matrix
1031
+ if block
1032
+ block.call
1033
+ popMatrix
1034
+ end
949
1035
  nil
950
1036
  end
951
1037
 
@@ -972,18 +1058,25 @@ module RubySketch
972
1058
  #
973
1059
  # @return [nil] nil
974
1060
  #
975
- def pushStyle ()
1061
+ def pushStyle (&block)
976
1062
  @styleStack__.push [
977
1063
  @painter__.fill,
978
1064
  @painter__.stroke,
979
1065
  @painter__.stroke_width,
1066
+ @painter__.stroke_cap,
1067
+ @painter__.stroke_join,
980
1068
  @painter__.font,
981
1069
  @hsbColor__,
982
1070
  @colorMaxes__,
983
1071
  @angleScale__,
984
1072
  @rectMode__,
985
- @ellipseMode__
1073
+ @ellipseMode__,
1074
+ @imageMode__
986
1075
  ]
1076
+ if block
1077
+ block.call
1078
+ popStyle
1079
+ end
987
1080
  nil
988
1081
  end
989
1082
 
@@ -996,12 +1089,15 @@ module RubySketch
996
1089
  @painter__.fill,
997
1090
  @painter__.stroke,
998
1091
  @painter__.stroke_width,
1092
+ @painter__.stroke_cap,
1093
+ @painter__.stroke_join,
999
1094
  @painter__.font,
1000
1095
  @hsbColor__,
1001
1096
  @colorMaxes__,
1002
1097
  @angleScale__,
1003
1098
  @rectMode__,
1004
- @ellipseMode__ = @styleStack__.pop
1099
+ @ellipseMode__,
1100
+ @imageMode__ = @styleStack__.pop
1005
1101
  nil
1006
1102
  end
1007
1103
 
@@ -1009,9 +1105,13 @@ module RubySketch
1009
1105
  #
1010
1106
  # @return [nil] nil
1011
1107
  #
1012
- def push ()
1108
+ def push (&block)
1013
1109
  pushMatrix
1014
1110
  pushStyle
1111
+ if block
1112
+ block.call
1113
+ pop
1114
+ end
1015
1115
  end
1016
1116
 
1017
1117
  # Restore styles and transformations from stack.
@@ -1080,8 +1180,7 @@ module RubySketch
1080
1180
  #
1081
1181
  class Processing::Image
1082
1182
 
1083
- # Initialize image.
1084
- #
1183
+ # @private
1085
1184
  def initialize (image)
1086
1185
  @image = image
1087
1186
  end
@@ -1102,6 +1201,44 @@ module RubySketch
1102
1201
  @image.height
1103
1202
  end
1104
1203
 
1204
+ # Resizes image.
1205
+ #
1206
+ # @param width [Numeric] width for resized image
1207
+ # @param height [Numeric] height for resized image
1208
+ #
1209
+ # @return [nil] nil
1210
+ #
1211
+ def resize (width, height)
1212
+ @image = Rays::Image.new(width, height).paint do |painter|
1213
+ painter.image @image, 0, 0, width, height
1214
+ end
1215
+ nil
1216
+ end
1217
+
1218
+ # Copies image.
1219
+ #
1220
+ # @overload copy(sx, sy, sw, sh, dx, dy, dw, dh)
1221
+ # @overload copy(img, sx, sy, sw, sh, dx, dy, dw, dh)
1222
+ #
1223
+ # @param img [Image] image for copy source
1224
+ # @param sx [Numrtic] x position of source region
1225
+ # @param sy [Numrtic] y position of source region
1226
+ # @param sw [Numrtic] width of source region
1227
+ # @param sh [Numrtic] height of source region
1228
+ # @param dx [Numrtic] x position of destination region
1229
+ # @param dy [Numrtic] y position of destination region
1230
+ # @param dw [Numrtic] width of destination region
1231
+ # @param dh [Numrtic] height of destination region
1232
+ #
1233
+ # @return [nil] nil
1234
+ #
1235
+ def copy (img = nil, sx, sy, sw, sh, dx, dy, dw, dh)
1236
+ img ||= self
1237
+ @image.paint do |painter|
1238
+ painter.image img.to_internal__, sx, sy, sw, sh, dx, dy, dw, dh
1239
+ end
1240
+ end
1241
+
1105
1242
  # Saves image to file.
1106
1243
  #
1107
1244
  # @param filename [String] file name to save image
@@ -1111,7 +1248,7 @@ module RubySketch
1111
1248
  end
1112
1249
 
1113
1250
  # @private
1114
- def internal ()
1251
+ def to_internal__ ()
1115
1252
  @image
1116
1253
  end
1117
1254
 
@@ -1122,10 +1259,7 @@ module RubySketch
1122
1259
  #
1123
1260
  class Processing::Font
1124
1261
 
1125
- # Initialize font.
1126
- #
1127
1262
  # @private
1128
- #
1129
1263
  def initialize (font)
1130
1264
  @font = font
1131
1265
  end
@@ -1171,13 +1305,7 @@ module RubySketch
1171
1305
  #
1172
1306
  attr_reader :h
1173
1307
 
1174
- # Initialize bouding box.
1175
- #
1176
- # @param x [Numeric] horizontal position
1177
- # @param y [Numeric] vertical position
1178
- # @param w [Numeric] width of bounding box
1179
- # @param h [Numeric] height of bounding box
1180
- #
1308
+ # @private
1181
1309
  def initialize (x, y, w, h)
1182
1310
  @x, @y, @w, @h = x, y, w, h
1183
1311
  end
@@ -17,9 +17,7 @@ module RubySketch
17
17
 
18
18
  reset_canvas 1, 1
19
19
 
20
- super *args, size: [width, height] do |_|
21
- start &block if block
22
- end
20
+ super *args, size: [width, height], &block
23
21
  end
24
22
 
25
23
  def start (&block)
@@ -43,8 +41,8 @@ module RubySketch
43
41
  end
44
42
 
45
43
  def on_draw (e)
46
- @canvas_painter.paint do |painter|
47
- call_block @draw, e, painter
44
+ @canvas_painter.paint do |_|
45
+ call_block @draw, e
48
46
  end
49
47
  e.painter.image @canvas
50
48
  end
@@ -80,7 +78,7 @@ module RubySketch
80
78
  old_canvas = @canvas
81
79
  old_painter = @canvas_painter
82
80
 
83
- cs = old_canvas&.color_space || Rays::ColorSpace::RGBA
81
+ cs = old_canvas&.color_space || Rays::RGBA
84
82
  @canvas = Rays::Image.new width, height, cs, painter.pixel_density
85
83
  @canvas_painter = @canvas.painter
86
84
 
@@ -94,6 +92,9 @@ module RubySketch
94
92
  to.fill = from.fill
95
93
  to.stroke = from.stroke
96
94
  to.stroke_width = from.stroke_width
95
+ to.stroke_cap = from.stroke_cap
96
+ to.stroke_join = from.stroke_join
97
+ to.miter_limit = from.miter_limit
97
98
  to.font = from.font
98
99
  end
99
100
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubysketch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-28 00:00:00.000000000 Z
11
+ date: 2020-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yard
@@ -103,6 +103,7 @@ extra_rdoc_files: []
103
103
  files:
104
104
  - ".gitignore"
105
105
  - ".yardopts"
106
+ - ChangeLog.md
106
107
  - LICENSE
107
108
  - README.md
108
109
  - Rakefile
@@ -117,7 +118,6 @@ files:
117
118
  - lib/rubysketch/glsl.rb
118
119
  - lib/rubysketch/module.rb
119
120
  - lib/rubysketch/processing.rb
120
- - lib/rubysketch/starter.rb
121
121
  - lib/rubysketch/window.rb
122
122
  - rubysketch.gemspec
123
123
  homepage: https://github.com/xord/rubysketch
@@ -1,67 +0,0 @@
1
- module RubySketch
2
-
3
-
4
- extend module Functions
5
-
6
- def start (context, start_at_exit: false, &block)
7
- window = Window.new do
8
- context.instance_eval &block if block
9
- end
10
-
11
- context.on_start__ window
12
-
13
- start = proc do
14
- Reflex.start {window.show}
15
- end
16
-
17
- if start_at_exit
18
- at_exit {start.call unless $!}
19
- else
20
- start.call
21
- end
22
-
23
- window
24
- end
25
-
26
- private
27
-
28
- def start_on_object_at_exit (object, context)
29
- klass = context.class
30
- methods = klass.instance_methods(false)
31
- .reject {|name| name =~ /__$/}
32
- consts = klass.constants
33
- .reject {|name| name =~ /__$/}
34
- .each_with_object({}) {|name, h| h[name] = klass.const_get name}
35
-
36
- object.class.class_eval do
37
- methods.each do |name|
38
- define_method name do |*args, &block|
39
- context.__send__ name, *args, &block
40
- end
41
- end
42
- consts.each do |(name, value)|
43
- const_set name, value
44
- end
45
- end
46
-
47
- window = start context, start_at_exit: true
48
-
49
- window.canvas_painter.__send__ :begin_paint
50
- at_exit {window.canvas_painter.__send__ :end_paint}
51
- end
52
-
53
- self
54
-
55
- end# Functions
56
-
57
-
58
- module Starter
59
-
60
- def start (*args, &block)
61
- RubySketch.start self.new(*args), start_at_exit: true, &block
62
- end
63
-
64
- end# Starter
65
-
66
-
67
- end# RubySketch