processing 0.5.33 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog.md +25 -1
- data/Gemfile +1 -0
- data/Gemfile.lock +2 -0
- data/Rakefile +5 -5
- data/VERSION +1 -1
- data/lib/processing/all.rb +4 -1
- data/lib/processing/context.rb +128 -0
- data/lib/processing/font.rb +5 -0
- data/lib/processing/graphics.rb +9 -0
- data/lib/processing/graphics_context.rb +640 -42
- data/lib/processing/image.rb +86 -0
- data/lib/processing/shader.rb +29 -16
- data/lib/processing/shape.rb +369 -28
- data/lib/processing/svg.rb +248 -0
- data/lib/processing/vector.rb +126 -0
- data/lib/processing/window.rb +2 -0
- data/processing.gemspec +4 -4
- data/test/{p5.rb → browser.rb} +37 -3
- data/test/helper.rb +40 -7
- data/test/test_color.rb +94 -0
- data/test/test_graphics_context.rb +26 -59
- data/test/test_shape.rb +129 -6
- data/test/test_svg.rb +257 -0
- metadata +17 -12
@@ -70,6 +70,14 @@ module Processing
|
|
70
70
|
#
|
71
71
|
RADIUS = :radius
|
72
72
|
|
73
|
+
# Mode for strokeCap() and strokeJoin().
|
74
|
+
#
|
75
|
+
ROUND = :round
|
76
|
+
|
77
|
+
# Mode for strokeCap().
|
78
|
+
#
|
79
|
+
SQUARE = :butt
|
80
|
+
|
73
81
|
# Mode for strokeCap().
|
74
82
|
#
|
75
83
|
PROJECT = :square
|
@@ -80,11 +88,7 @@ module Processing
|
|
80
88
|
|
81
89
|
# Mode for strokeCap() and strokeJoin().
|
82
90
|
#
|
83
|
-
|
84
|
-
|
85
|
-
# Mode for strokeCap() and strokeJoin().
|
86
|
-
#
|
87
|
-
SQUARE = :butt
|
91
|
+
BEVEL = :square
|
88
92
|
|
89
93
|
# Mode for blendMode().
|
90
94
|
#
|
@@ -123,96 +127,127 @@ module Processing
|
|
123
127
|
REPLACE = :replace
|
124
128
|
|
125
129
|
# Key code or Mode for textAlign().
|
130
|
+
#
|
126
131
|
LEFT = :left
|
127
132
|
|
128
133
|
# Key code or Mode for textAlign().
|
134
|
+
#
|
129
135
|
RIGHT = :right
|
130
136
|
|
131
137
|
# Mode for textAlign().
|
138
|
+
#
|
132
139
|
TOP = :top
|
133
140
|
|
134
141
|
# Mode for textAlign().
|
142
|
+
#
|
135
143
|
BOTTOM = :bottom
|
136
144
|
|
137
145
|
# Mode for textAlign().
|
146
|
+
#
|
138
147
|
BASELINE = :baseline
|
139
148
|
|
140
149
|
# Mode for textureMode().
|
150
|
+
#
|
141
151
|
IMAGE = :image
|
142
152
|
|
143
153
|
# Mode for textureMode().
|
154
|
+
#
|
144
155
|
NORMAL = :normal
|
145
156
|
|
146
157
|
# Mode for textureWrap().
|
158
|
+
#
|
147
159
|
CLAMP = :clamp
|
148
160
|
|
149
161
|
# Mode for textureWrap().
|
162
|
+
#
|
150
163
|
REPEAT = :repeat
|
151
164
|
|
152
165
|
# Filter type for filter()
|
166
|
+
#
|
153
167
|
THRESHOLD = :threshold
|
154
168
|
|
155
169
|
# Filter type for filter()
|
170
|
+
#
|
156
171
|
GRAY = :gray
|
157
172
|
|
158
173
|
# Filter type for filter()
|
174
|
+
#
|
159
175
|
INVERT = :invert
|
160
176
|
|
161
177
|
# Filter type for filter()
|
178
|
+
#
|
162
179
|
BLUR = :blur
|
163
180
|
|
164
181
|
# Shape mode for createShape()
|
182
|
+
#
|
165
183
|
LINE = :line
|
166
184
|
|
167
185
|
# Shape mode for createShape()
|
186
|
+
#
|
168
187
|
RECT = :rect
|
169
188
|
|
170
189
|
# Shape mode for createShape()
|
190
|
+
#
|
171
191
|
ELLIPSE = :ellipse
|
172
192
|
|
173
193
|
# Shape mode for createShape()
|
194
|
+
#
|
174
195
|
ARC = :arc
|
175
196
|
|
176
197
|
# Shape mode for createShape()
|
198
|
+
#
|
177
199
|
TRIANGLE = :triangle
|
178
200
|
|
179
201
|
# Shape mode for createShape()
|
202
|
+
#
|
180
203
|
QUAD = :quad
|
181
204
|
|
182
205
|
# Shape mode for createShape()
|
206
|
+
#
|
183
207
|
GROUP = :group
|
184
208
|
|
185
209
|
# Shape mode for beginShape()
|
210
|
+
#
|
186
211
|
POINTS = :points
|
187
212
|
|
188
213
|
# Shape mode for beginShape()
|
214
|
+
#
|
189
215
|
LINES = :lines
|
190
216
|
|
191
217
|
# Shape mode for beginShape()
|
218
|
+
#
|
192
219
|
TRIANGLES = :triangles
|
193
220
|
|
194
221
|
# Shape mode for beginShape()
|
222
|
+
#
|
195
223
|
TRIANGLE_FAN = :triangle_fan
|
196
224
|
|
197
225
|
# Shape mode for beginShape()
|
226
|
+
#
|
198
227
|
TRIANGLE_STRIP = :triangle_strip
|
199
228
|
|
200
229
|
# Shape mode for beginShape()
|
230
|
+
#
|
201
231
|
QUADS = :quads
|
202
232
|
|
203
233
|
# Shape mode for beginShape()
|
234
|
+
#
|
204
235
|
QUAD_STRIP = :quad_strip
|
205
236
|
|
206
237
|
# Shape mode for beginShape()
|
238
|
+
#
|
207
239
|
TESS = :tess
|
208
240
|
|
209
241
|
# OPEN flag for endShape()
|
242
|
+
#
|
210
243
|
OPEN = :open
|
211
244
|
|
212
245
|
# CLOSE flag for endShape()
|
246
|
+
#
|
213
247
|
CLOSE = :close
|
214
248
|
|
215
249
|
# Key codes.
|
250
|
+
#
|
216
251
|
ENTER = :enter
|
217
252
|
SPACE = :space
|
218
253
|
TAB = :tab
|
@@ -261,6 +296,158 @@ module Processing
|
|
261
296
|
UP = :up
|
262
297
|
DOWN = :down
|
263
298
|
|
299
|
+
COLOR_CODES = {
|
300
|
+
aliceblue: '#f0f8ff',
|
301
|
+
antiquewhite: '#faebd7',
|
302
|
+
aqua: '#00ffff',
|
303
|
+
aquamarine: '#7fffd4',
|
304
|
+
azure: '#f0ffff',
|
305
|
+
beige: '#f5f5dc',
|
306
|
+
bisque: '#ffe4c4',
|
307
|
+
black: '#000000',
|
308
|
+
blanchedalmond: '#ffebcd',
|
309
|
+
blue: '#0000ff',
|
310
|
+
blueviolet: '#8a2be2',
|
311
|
+
brown: '#a52a2a',
|
312
|
+
burlywood: '#deb887',
|
313
|
+
cadetblue: '#5f9ea0',
|
314
|
+
chartreuse: '#7fff00',
|
315
|
+
chocolate: '#d2691e',
|
316
|
+
coral: '#ff7f50',
|
317
|
+
cornflowerblue: '#6495ed',
|
318
|
+
cornsilk: '#fff8dc',
|
319
|
+
crimson: '#dc143c',
|
320
|
+
cyan: '#00ffff',
|
321
|
+
darkblue: '#00008b',
|
322
|
+
darkcyan: '#008b8b',
|
323
|
+
darkgoldenrod: '#b8860b',
|
324
|
+
darkgray: '#a9a9a9',
|
325
|
+
darkgreen: '#006400',
|
326
|
+
darkgrey: '#a9a9a9',
|
327
|
+
darkkhaki: '#bdb76b',
|
328
|
+
darkmagenta: '#8b008b',
|
329
|
+
darkolivegreen: '#556b2f',
|
330
|
+
darkorange: '#ff8c00',
|
331
|
+
darkorchid: '#9932cc',
|
332
|
+
darkred: '#8b0000',
|
333
|
+
darksalmon: '#e9967a',
|
334
|
+
darkseagreen: '#8fbc8f',
|
335
|
+
darkslateblue: '#483d8b',
|
336
|
+
darkslategray: '#2f4f4f',
|
337
|
+
darkslategrey: '#2f4f4f',
|
338
|
+
darkturquoise: '#00ced1',
|
339
|
+
darkviolet: '#9400d3',
|
340
|
+
deeppink: '#ff1493',
|
341
|
+
deepskyblue: '#00bfff',
|
342
|
+
dimgray: '#696969',
|
343
|
+
dimgrey: '#696969',
|
344
|
+
dodgerblue: '#1e90ff',
|
345
|
+
firebrick: '#b22222',
|
346
|
+
floralwhite: '#fffaf0',
|
347
|
+
forestgreen: '#228b22',
|
348
|
+
fuchsia: '#ff00ff',
|
349
|
+
gainsboro: '#dcdcdc',
|
350
|
+
ghostwhite: '#f8f8ff',
|
351
|
+
goldenrod: '#daa520',
|
352
|
+
gold: '#ffd700',
|
353
|
+
gray: '#808080',
|
354
|
+
green: '#008000',
|
355
|
+
greenyellow: '#adff2f',
|
356
|
+
grey: '#808080',
|
357
|
+
honeydew: '#f0fff0',
|
358
|
+
hotpink: '#ff69b4',
|
359
|
+
indianred: '#cd5c5c',
|
360
|
+
indigo: '#4b0082',
|
361
|
+
ivory: '#fffff0',
|
362
|
+
khaki: '#f0e68c',
|
363
|
+
lavenderblush: '#fff0f5',
|
364
|
+
lavender: '#e6e6fa',
|
365
|
+
lawngreen: '#7cfc00',
|
366
|
+
lemonchiffon: '#fffacd',
|
367
|
+
lightblue: '#add8e6',
|
368
|
+
lightcoral: '#f08080',
|
369
|
+
lightcyan: '#e0ffff',
|
370
|
+
lightgoldenrodyellow: '#fafad2',
|
371
|
+
lightgray: '#d3d3d3',
|
372
|
+
lightgreen: '#90ee90',
|
373
|
+
lightgrey: '#d3d3d3',
|
374
|
+
lightpink: '#ffb6c1',
|
375
|
+
lightsalmon: '#ffa07a',
|
376
|
+
lightseagreen: '#20b2aa',
|
377
|
+
lightskyblue: '#87cefa',
|
378
|
+
lightslategray: '#778899',
|
379
|
+
lightslategrey: '#778899',
|
380
|
+
lightsteelblue: '#b0c4de',
|
381
|
+
lightyellow: '#ffffe0',
|
382
|
+
lime: '#00ff00',
|
383
|
+
limegreen: '#32cd32',
|
384
|
+
linen: '#faf0e6',
|
385
|
+
magenta: '#ff00ff',
|
386
|
+
maroon: '#800000',
|
387
|
+
mediumaquamarine: '#66cdaa',
|
388
|
+
mediumblue: '#0000cd',
|
389
|
+
mediumorchid: '#ba55d3',
|
390
|
+
mediumpurple: '#9370db',
|
391
|
+
mediumseagreen: '#3cb371',
|
392
|
+
mediumslateblue: '#7b68ee',
|
393
|
+
mediumspringgreen: '#00fa9a',
|
394
|
+
mediumturquoise: '#48d1cc',
|
395
|
+
mediumvioletred: '#c71585',
|
396
|
+
midnightblue: '#191970',
|
397
|
+
mintcream: '#f5fffa',
|
398
|
+
mistyrose: '#ffe4e1',
|
399
|
+
moccasin: '#ffe4b5',
|
400
|
+
navajowhite: '#ffdead',
|
401
|
+
navy: '#000080',
|
402
|
+
oldlace: '#fdf5e6',
|
403
|
+
olive: '#808000',
|
404
|
+
olivedrab: '#6b8e23',
|
405
|
+
orange: '#ffa500',
|
406
|
+
orangered: '#ff4500',
|
407
|
+
orchid: '#da70d6',
|
408
|
+
palegoldenrod: '#eee8aa',
|
409
|
+
palegreen: '#98fb98',
|
410
|
+
paleturquoise: '#afeeee',
|
411
|
+
palevioletred: '#db7093',
|
412
|
+
papayawhip: '#ffefd5',
|
413
|
+
peachpuff: '#ffdab9',
|
414
|
+
peru: '#cd853f',
|
415
|
+
pink: '#ffc0cb',
|
416
|
+
plum: '#dda0dd',
|
417
|
+
powderblue: '#b0e0e6',
|
418
|
+
purple: '#800080',
|
419
|
+
rebeccapurple: '#663399',
|
420
|
+
red: '#ff0000',
|
421
|
+
rosybrown: '#bc8f8f',
|
422
|
+
royalblue: '#4169e1',
|
423
|
+
saddlebrown: '#8b4513',
|
424
|
+
salmon: '#fa8072',
|
425
|
+
sandybrown: '#f4a460',
|
426
|
+
seagreen: '#2e8b57',
|
427
|
+
seashell: '#fff5ee',
|
428
|
+
sienna: '#a0522d',
|
429
|
+
silver: '#c0c0c0',
|
430
|
+
skyblue: '#87ceeb',
|
431
|
+
slateblue: '#6a5acd',
|
432
|
+
slategray: '#708090',
|
433
|
+
slategrey: '#708090',
|
434
|
+
snow: '#fffafa',
|
435
|
+
springgreen: '#00ff7f',
|
436
|
+
steelblue: '#4682b4',
|
437
|
+
tan: '#d2b48c',
|
438
|
+
teal: '#008080',
|
439
|
+
thistle: '#d8bfd8',
|
440
|
+
tomato: '#ff6347',
|
441
|
+
turquoise: '#40e0d0',
|
442
|
+
violet: '#ee82ee',
|
443
|
+
wheat: '#f5deb3',
|
444
|
+
white: '#ffffff',
|
445
|
+
whitesmoke: '#f5f5f5',
|
446
|
+
yellow: '#ffff00',
|
447
|
+
yellowgreen: '#9acd32',
|
448
|
+
none: '#00000000',
|
449
|
+
}
|
450
|
+
|
264
451
|
# @private
|
265
452
|
DEG2RAD__ = Math::PI / 180.0
|
266
453
|
|
@@ -382,6 +569,9 @@ module Processing
|
|
382
569
|
#
|
383
570
|
# @return [Numeric] width
|
384
571
|
#
|
572
|
+
# @see https://processing.org/reference/width.html
|
573
|
+
# @see https://p5js.org/reference/#/p5/width
|
574
|
+
#
|
385
575
|
def width()
|
386
576
|
getInternal__.width
|
387
577
|
end
|
@@ -390,6 +580,9 @@ module Processing
|
|
390
580
|
#
|
391
581
|
# @return [Numeric] height
|
392
582
|
#
|
583
|
+
# @see https://processing.org/reference/height.html
|
584
|
+
# @see https://p5js.org/reference/#/p5/height
|
585
|
+
#
|
393
586
|
def height()
|
394
587
|
getInternal__.height
|
395
588
|
end
|
@@ -398,6 +591,8 @@ module Processing
|
|
398
591
|
#
|
399
592
|
# @return [Numeric] width
|
400
593
|
#
|
594
|
+
# @see https://processing.org/reference/pixelWidth.html
|
595
|
+
#
|
401
596
|
def pixelWidth()
|
402
597
|
width * pixelDensity
|
403
598
|
end
|
@@ -406,6 +601,8 @@ module Processing
|
|
406
601
|
#
|
407
602
|
# @return [Numeric] height
|
408
603
|
#
|
604
|
+
# @see https://processing.org/reference/pixelHeight.html
|
605
|
+
#
|
409
606
|
def pixelHeight()
|
410
607
|
height * pixelDensity
|
411
608
|
end
|
@@ -414,6 +611,9 @@ module Processing
|
|
414
611
|
#
|
415
612
|
# @return [Numeric] pixel density
|
416
613
|
#
|
614
|
+
# @see https://processing.org/reference/pixelDensity_.html
|
615
|
+
# @see https://p5js.org/reference/#/p5/pixelDensity
|
616
|
+
#
|
417
617
|
def pixelDensity()
|
418
618
|
@painter__.pixel_density
|
419
619
|
end
|
@@ -448,6 +648,9 @@ module Processing
|
|
448
648
|
#
|
449
649
|
# @return [RGB, HSB] current mode
|
450
650
|
#
|
651
|
+
# @see https://processing.org/reference/colorMode_.html
|
652
|
+
# @see https://p5js.org/reference/#/p5/colorMode
|
653
|
+
#
|
451
654
|
def colorMode(mode = nil, *maxes)
|
452
655
|
if mode != nil
|
453
656
|
mode = mode.downcase.to_sym
|
@@ -479,18 +682,33 @@ module Processing
|
|
479
682
|
#
|
480
683
|
# @return [Integer] the rgba color value
|
481
684
|
#
|
685
|
+
# @see https://processing.org/reference/color_.html
|
686
|
+
# @see https://p5js.org/reference/#/p5/color
|
687
|
+
#
|
482
688
|
def color(*args)
|
483
689
|
toRGBA__(*args)
|
484
690
|
.map {|n| (n * 255).to_i.clamp 0, 255}
|
485
691
|
.then {|r, g, b, a| Image.toColor__ r, g, b, a}
|
486
692
|
end
|
487
693
|
|
694
|
+
# @private
|
695
|
+
private def color2raw__(color)
|
696
|
+
Rays::Color.new(
|
697
|
+
((color >> 16) & 0xff) / 255.0,
|
698
|
+
((color >> 8) & 0xff) / 255.0,
|
699
|
+
( color & 0xff) / 255.0,
|
700
|
+
((color >> 24) & 0xff) / 255.0)
|
701
|
+
end
|
702
|
+
|
488
703
|
# Returns the red value of the color.
|
489
704
|
#
|
490
705
|
# @param color [Numeric] color value
|
491
706
|
#
|
492
707
|
# @return [Numeric] the red value
|
493
708
|
#
|
709
|
+
# @see https://processing.org/reference/red_.html
|
710
|
+
# @see https://p5js.org/reference/#/p5/red
|
711
|
+
#
|
494
712
|
def red(color)
|
495
713
|
((color >> 16) & 0xff) / 255.0 * @colorMaxes__[0]
|
496
714
|
end
|
@@ -501,6 +719,9 @@ module Processing
|
|
501
719
|
#
|
502
720
|
# @return [Numeric] the green value
|
503
721
|
#
|
722
|
+
# @see https://processing.org/reference/green_.html
|
723
|
+
# @see https://p5js.org/reference/#/p5/green
|
724
|
+
#
|
504
725
|
def green(color)
|
505
726
|
((color >> 8) & 0xff) / 255.0 * @colorMaxes__[1]
|
506
727
|
end
|
@@ -511,6 +732,9 @@ module Processing
|
|
511
732
|
#
|
512
733
|
# @return [Numeric] the blue value
|
513
734
|
#
|
735
|
+
# @see https://processing.org/reference/blue_.html
|
736
|
+
# @see https://p5js.org/reference/#/p5/blue
|
737
|
+
#
|
514
738
|
def blue(color)
|
515
739
|
(color & 0xff) / 255.0 * @colorMaxes__[2]
|
516
740
|
end
|
@@ -521,6 +745,9 @@ module Processing
|
|
521
745
|
#
|
522
746
|
# @return [Numeric] the red value
|
523
747
|
#
|
748
|
+
# @see https://processing.org/reference/alpha_.html
|
749
|
+
# @see https://p5js.org/reference/#/p5/alpha
|
750
|
+
#
|
524
751
|
def alpha(color)
|
525
752
|
((color >> 24) & 0xff) / 255.0 * @colorMaxes__[3]
|
526
753
|
end
|
@@ -531,8 +758,11 @@ module Processing
|
|
531
758
|
#
|
532
759
|
# @return [Numeric] the hue value
|
533
760
|
#
|
761
|
+
# @see https://processing.org/reference/hue_.html
|
762
|
+
# @see https://p5js.org/reference/#/p5/hue
|
763
|
+
#
|
534
764
|
def hue(color)
|
535
|
-
h, =
|
765
|
+
h, = color2raw__(color).to_hsv
|
536
766
|
h * (@hsbColor__ ? @colorMaxes__[0] : 1)
|
537
767
|
end
|
538
768
|
|
@@ -542,8 +772,11 @@ module Processing
|
|
542
772
|
#
|
543
773
|
# @return [Numeric] the saturation value
|
544
774
|
#
|
775
|
+
# @see https://processing.org/reference/saturation_.html
|
776
|
+
# @see https://p5js.org/reference/#/p5/saturation
|
777
|
+
#
|
545
778
|
def saturation(color)
|
546
|
-
_, s, =
|
779
|
+
_, s, = color2raw__(color).to_hsv
|
547
780
|
s * (@hsbColor__ ? @colorMaxes__[1] : 1)
|
548
781
|
end
|
549
782
|
|
@@ -553,37 +786,46 @@ module Processing
|
|
553
786
|
#
|
554
787
|
# @return [Numeric] the brightness value
|
555
788
|
#
|
789
|
+
# @see https://processing.org/reference/brightness_.html
|
790
|
+
# @see https://p5js.org/reference/#/p5/brightness
|
791
|
+
#
|
556
792
|
def brightness(color)
|
557
|
-
_, _, b =
|
793
|
+
_, _, b = color2raw__(color).to_hsv
|
558
794
|
b * (@hsbColor__ ? @colorMaxes__[2] : 1)
|
559
795
|
end
|
560
796
|
|
561
797
|
# @private
|
562
798
|
private def toRGBA__(*args)
|
563
|
-
|
564
|
-
return parseColor__(a, b || alphaMax__) if a.kind_of?(String)
|
565
|
-
rawColor__(*args).to_a
|
799
|
+
toRawColor__(*args).to_a
|
566
800
|
end
|
567
801
|
|
568
802
|
# @private
|
569
|
-
def
|
803
|
+
def toRawColor__(*args)
|
570
804
|
a, b, c, d = args
|
571
|
-
|
805
|
+
return parseColor__(a, b || alphaMax__) if a.is_a?(String) || a.is_a?(Symbol)
|
806
|
+
rgba =
|
807
|
+
case args.size
|
572
808
|
when 1, 2 then [a, a, a, b || alphaMax__]
|
573
809
|
when 3, 4 then [a, b, c, d || alphaMax__]
|
574
810
|
else raise ArgumentError
|
575
811
|
end
|
576
|
-
rgba = rgba.map.with_index {|
|
812
|
+
rgba = rgba.map.with_index {|n, i| n / @colorMaxes__[i]}
|
577
813
|
@hsbColor__ ? Rays::Color.hsv(*rgba) : Rays::Color.new(*rgba)
|
578
814
|
end
|
579
815
|
|
580
816
|
# @private
|
581
817
|
private def parseColor__(str, alpha)
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
818
|
+
str = COLOR_CODES[str.downcase.to_sym] || str if str !~ /^\s*#\d+/
|
819
|
+
r, g, b, a =
|
820
|
+
case str
|
821
|
+
when /^\s*##{'([0-9a-f]{2})' * 3}([0-9a-f]{2})?\s*$/i
|
822
|
+
$~[1..4].map {|n| n.to_i(16) / 255.0 if n}
|
823
|
+
when /^\s*##{'([0-9a-f]{1})' * 3}([0-9a-f]{1})?\s*$/i
|
824
|
+
$~[1..4].map {|n| n.to_i(16) / 15.0 if n}
|
825
|
+
else
|
826
|
+
raise ArgumentError, "invalid color code: '#{str}'"
|
827
|
+
end
|
828
|
+
Rays::Color.new(r, g, b, a || (alpha / alphaMax__))
|
587
829
|
end
|
588
830
|
|
589
831
|
# @private
|
@@ -591,21 +833,14 @@ module Processing
|
|
591
833
|
@colorMaxes__[3]
|
592
834
|
end
|
593
835
|
|
594
|
-
# @private
|
595
|
-
private def toRawColor__(color)
|
596
|
-
Rays::Color.new(
|
597
|
-
((color >> 16) & 0xff) / 255.0,
|
598
|
-
((color >> 8) & 0xff) / 255.0,
|
599
|
-
( color & 0xff) / 255.0,
|
600
|
-
((color >> 24) & 0xff) / 255.0)
|
601
|
-
end
|
602
|
-
|
603
836
|
# Sets angle mode.
|
604
837
|
#
|
605
838
|
# @param mode [RADIANS, DEGREES] RADIANS or DEGREES
|
606
839
|
#
|
607
840
|
# @return [RADIANS, DEGREES] current mode
|
608
841
|
#
|
842
|
+
# @see https://p5js.org/reference/#/p5/angleMode
|
843
|
+
#
|
609
844
|
def angleMode(mode = nil)
|
610
845
|
if mode != nil
|
611
846
|
@angleMode__ = mode
|
@@ -650,6 +885,9 @@ module Processing
|
|
650
885
|
#
|
651
886
|
# @return [nil] nil
|
652
887
|
#
|
888
|
+
# @see https://processing.org/reference/rectMode_.html
|
889
|
+
# @see https://p5js.org/reference/#/p5/rectMode
|
890
|
+
#
|
653
891
|
def rectMode(mode)
|
654
892
|
@rectMode__ = mode
|
655
893
|
end
|
@@ -665,6 +903,9 @@ module Processing
|
|
665
903
|
#
|
666
904
|
# @return [nil] nil
|
667
905
|
#
|
906
|
+
# @see https://processing.org/reference/ellipseMode_.html
|
907
|
+
# @see https://p5js.org/reference/#/p5/ellipseMode
|
908
|
+
#
|
668
909
|
def ellipseMode(mode)
|
669
910
|
@ellipseMode__ = mode
|
670
911
|
end
|
@@ -679,6 +920,9 @@ module Processing
|
|
679
920
|
#
|
680
921
|
# @return [nil] nil
|
681
922
|
#
|
923
|
+
# @see https://processing.org/reference/imageMode_.html
|
924
|
+
# @see https://p5js.org/reference/#/p5/imageMode
|
925
|
+
#
|
682
926
|
def imageMode(mode)
|
683
927
|
@imageMode__ = mode
|
684
928
|
end
|
@@ -693,6 +937,8 @@ module Processing
|
|
693
937
|
#
|
694
938
|
# @return [nil] nil
|
695
939
|
#
|
940
|
+
# @see https://processing.org/reference/shapeMode_.html
|
941
|
+
#
|
696
942
|
def shapeMode(mode)
|
697
943
|
@shapeMode__ = mode
|
698
944
|
end
|
@@ -714,6 +960,9 @@ module Processing
|
|
714
960
|
#
|
715
961
|
# @return [nil] nil
|
716
962
|
#
|
963
|
+
# @see https://processing.org/reference/blendMode_.html
|
964
|
+
# @see https://p5js.org/reference/#/p5/blendMode
|
965
|
+
#
|
717
966
|
def blendMode(mode = nil)
|
718
967
|
if mode != nil
|
719
968
|
@blendMode__ = mode
|
@@ -740,20 +989,21 @@ module Processing
|
|
740
989
|
#
|
741
990
|
# @return [nil] nil
|
742
991
|
#
|
992
|
+
# @see https://processing.org/reference/fill_.html
|
993
|
+
# @see https://p5js.org/reference/#/p5/fill
|
994
|
+
#
|
743
995
|
def fill(*args)
|
744
996
|
@painter__.fill(*toRGBA__(*args))
|
745
997
|
nil
|
746
998
|
end
|
747
999
|
|
748
|
-
# @private
|
749
|
-
def getFill__()
|
750
|
-
@painter__.fill
|
751
|
-
end
|
752
|
-
|
753
1000
|
# Disables filling.
|
754
1001
|
#
|
755
1002
|
# @return [nil] nil
|
756
1003
|
#
|
1004
|
+
# @see https://processing.org/reference/noFill_.html
|
1005
|
+
# @see https://p5js.org/reference/#/p5/noFill
|
1006
|
+
#
|
757
1007
|
def noFill()
|
758
1008
|
@painter__.fill nil
|
759
1009
|
nil
|
@@ -777,6 +1027,9 @@ module Processing
|
|
777
1027
|
#
|
778
1028
|
# @return [nil] nil
|
779
1029
|
#
|
1030
|
+
# @see https://processing.org/reference/stroke_.html
|
1031
|
+
# @see https://p5js.org/reference/#/p5/stroke
|
1032
|
+
#
|
780
1033
|
def stroke(*args)
|
781
1034
|
@painter__.stroke(*toRGBA__(*args))
|
782
1035
|
nil
|
@@ -786,6 +1039,9 @@ module Processing
|
|
786
1039
|
#
|
787
1040
|
# @return [nil] nil
|
788
1041
|
#
|
1042
|
+
# @see https://processing.org/reference/noStroke_.html
|
1043
|
+
# @see https://p5js.org/reference/#/p5/noStroke
|
1044
|
+
#
|
789
1045
|
def noStroke()
|
790
1046
|
@painter__.stroke nil
|
791
1047
|
nil
|
@@ -797,28 +1053,39 @@ module Processing
|
|
797
1053
|
#
|
798
1054
|
# @return [nil] nil
|
799
1055
|
#
|
1056
|
+
# @see https://processing.org/reference/strokeWeight_.html
|
1057
|
+
# @see https://p5js.org/reference/#/p5/strokeWeight
|
1058
|
+
#
|
800
1059
|
def strokeWeight(weight)
|
801
1060
|
@painter__.stroke_width weight
|
802
1061
|
nil
|
803
1062
|
end
|
804
1063
|
|
805
1064
|
# Sets stroke cap mode.
|
1065
|
+
# The default cap if ROUND.
|
806
1066
|
#
|
807
|
-
# @param cap [
|
1067
|
+
# @param cap [ROUND, SQUARE, PROJECT]
|
808
1068
|
#
|
809
1069
|
# @return [nil] nil
|
810
1070
|
#
|
1071
|
+
# @see https://processing.org/reference/strokeCap_.html
|
1072
|
+
# @see https://p5js.org/reference/#/p5/strokeCap
|
1073
|
+
#
|
811
1074
|
def strokeCap(cap)
|
812
1075
|
@painter__.stroke_cap cap
|
813
1076
|
nil
|
814
1077
|
end
|
815
1078
|
|
816
1079
|
# Sets stroke join mode.
|
1080
|
+
# The default join is MITER.
|
817
1081
|
#
|
818
|
-
# @param join [MITER,
|
1082
|
+
# @param join [MITER, BEVEL, ROUND]
|
819
1083
|
#
|
820
1084
|
# @return [nil] nil
|
821
1085
|
#
|
1086
|
+
# @see https://processing.org/reference/strokeJoin_.html
|
1087
|
+
# @see https://p5js.org/reference/#/p5/strokeJoin
|
1088
|
+
#
|
822
1089
|
def strokeJoin(join)
|
823
1090
|
@painter__.stroke_join join
|
824
1091
|
nil
|
@@ -888,6 +1155,9 @@ module Processing
|
|
888
1155
|
#
|
889
1156
|
# @return [nil] nil
|
890
1157
|
#
|
1158
|
+
# @see https://processing.org/reference/tint_.html
|
1159
|
+
# @see https://p5js.org/reference/#/p5/tint
|
1160
|
+
#
|
891
1161
|
def tint(*args)
|
892
1162
|
@tint__ = args
|
893
1163
|
nil
|
@@ -897,6 +1167,9 @@ module Processing
|
|
897
1167
|
#
|
898
1168
|
# @return [nil] nil
|
899
1169
|
#
|
1170
|
+
# @see https://processing.org/reference/noTint_.html
|
1171
|
+
# @see https://p5js.org/reference/#/p5/noTint
|
1172
|
+
#
|
900
1173
|
def noTint()
|
901
1174
|
@tint__ = nil
|
902
1175
|
end
|
@@ -917,6 +1190,9 @@ module Processing
|
|
917
1190
|
#
|
918
1191
|
# @return [nil] nil
|
919
1192
|
#
|
1193
|
+
# @see https://processing.org/reference/clip_.html
|
1194
|
+
# @see https://p5js.org/reference/#/p5/clip
|
1195
|
+
#
|
920
1196
|
def clip(a, b, c, d)
|
921
1197
|
x, y, w, h = toXYWH__ @imageMode__, a, b, c, d
|
922
1198
|
@painter__.clip x, y, w, h
|
@@ -927,6 +1203,8 @@ module Processing
|
|
927
1203
|
#
|
928
1204
|
# @return [nil] nil
|
929
1205
|
#
|
1206
|
+
# @see https://processing.org/reference/noClip_.html
|
1207
|
+
#
|
930
1208
|
def noClip()
|
931
1209
|
@painter__.no_clip
|
932
1210
|
nil
|
@@ -947,6 +1225,9 @@ module Processing
|
|
947
1225
|
#
|
948
1226
|
# @return [Font] current font
|
949
1227
|
#
|
1228
|
+
# @see https://processing.org/reference/textFont_.html
|
1229
|
+
# @see https://p5js.org/reference/#/p5/textFont
|
1230
|
+
#
|
950
1231
|
def textFont(font = nil, size = nil)
|
951
1232
|
if font != nil || size != nil
|
952
1233
|
size = FONT_SIZE_MAX__ if size && size > FONT_SIZE_MAX__
|
@@ -967,25 +1248,63 @@ module Processing
|
|
967
1248
|
#
|
968
1249
|
# @return [nil] nil
|
969
1250
|
#
|
1251
|
+
# @see https://processing.org/reference/textSize_.html
|
1252
|
+
# @see https://p5js.org/reference/#/p5/textSize
|
1253
|
+
#
|
970
1254
|
def textSize(size)
|
971
1255
|
textFont @textFont__, size
|
1256
|
+
nil
|
972
1257
|
end
|
973
1258
|
|
1259
|
+
# Returns the width of the text.
|
1260
|
+
#
|
1261
|
+
# @param str [String] text string
|
1262
|
+
#
|
1263
|
+
# @return [Numeric] width of the text
|
1264
|
+
#
|
1265
|
+
# @see https://processing.org/reference/textWidth_.html
|
1266
|
+
# @see https://p5js.org/reference/#/p5/textWidth
|
1267
|
+
#
|
974
1268
|
def textWidth(str)
|
975
1269
|
@painter__.font.width str
|
976
1270
|
end
|
977
1271
|
|
1272
|
+
# Returns ascent of the current font at its current size.
|
1273
|
+
#
|
1274
|
+
# @return [Numeric] ascent
|
1275
|
+
#
|
1276
|
+
# @see https://processing.org/reference/textAscent_.html
|
1277
|
+
# @see https://p5js.org/reference/#/p5/textAscent
|
1278
|
+
#
|
978
1279
|
def textAscent()
|
979
1280
|
@painter__.font.ascent
|
980
1281
|
end
|
981
1282
|
|
1283
|
+
# Returns descent of the current font at its current size.
|
1284
|
+
#
|
1285
|
+
# @return [Numeric] descent
|
1286
|
+
#
|
1287
|
+
# @see https://processing.org/reference/textDescent_.html
|
1288
|
+
# @see https://p5js.org/reference/#/p5/textDescent
|
1289
|
+
#
|
982
1290
|
def textDescent()
|
983
1291
|
@painter__.font.descent
|
984
1292
|
end
|
985
1293
|
|
1294
|
+
# Sets the alignment for drawing text.
|
1295
|
+
#
|
1296
|
+
# @param horizontal [LEFT, CENTER, RIGHT] horizontal alignment
|
1297
|
+
# @param vertical [TOP, BOTTOM, CENTER, BASELINE] vertical alignment
|
1298
|
+
#
|
1299
|
+
# @return [nil] nil
|
1300
|
+
#
|
1301
|
+
# @see https://processing.org/reference/textAlign_.html
|
1302
|
+
# @see https://p5js.org/reference/#/p5/textAlign
|
1303
|
+
#
|
986
1304
|
def textAlign(horizontal, vertical = BASELINE)
|
987
1305
|
@textAlignH__ = horizontal
|
988
1306
|
@textAlignV__ = vertical
|
1307
|
+
nil
|
989
1308
|
end
|
990
1309
|
|
991
1310
|
# Sets the spacing between lines of text in units of pixels.
|
@@ -997,11 +1316,23 @@ module Processing
|
|
997
1316
|
#
|
998
1317
|
# @return [Numeric] current spacing
|
999
1318
|
#
|
1319
|
+
# @see https://processing.org/reference/textLeading_.html
|
1320
|
+
# @see https://p5js.org/reference/#/p5/textLeading
|
1321
|
+
#
|
1000
1322
|
def textLeading(leading = nil)
|
1001
1323
|
@painter__.line_height = leading if leading
|
1002
1324
|
@painter__.line_height
|
1003
1325
|
end
|
1004
1326
|
|
1327
|
+
# Sets texture.
|
1328
|
+
#
|
1329
|
+
# @param image [Image] texture image
|
1330
|
+
#
|
1331
|
+
# @return [nil] nil
|
1332
|
+
#
|
1333
|
+
# @see https://processing.org/reference/texture_.html
|
1334
|
+
# @see https://p5js.org/reference/#/p5/texture
|
1335
|
+
#
|
1005
1336
|
def texture(image)
|
1006
1337
|
@painter__.texture image&.getInternal__
|
1007
1338
|
nil
|
@@ -1050,6 +1381,9 @@ module Processing
|
|
1050
1381
|
#
|
1051
1382
|
# @return [nil] nil
|
1052
1383
|
#
|
1384
|
+
# @see https://processing.org/reference/shader_.html
|
1385
|
+
# @see https://p5js.org/reference/#/p5/shader
|
1386
|
+
#
|
1053
1387
|
def shader(shader)
|
1054
1388
|
@painter__.shader shader&.getInternal__
|
1055
1389
|
nil
|
@@ -1059,6 +1393,9 @@ module Processing
|
|
1059
1393
|
#
|
1060
1394
|
# @return [nil] nil
|
1061
1395
|
#
|
1396
|
+
# @see https://processing.org/reference/resetShader_.html
|
1397
|
+
# @see https://p5js.org/reference/#/p5/resetShader
|
1398
|
+
#
|
1062
1399
|
def resetShader()
|
1063
1400
|
@painter__.no_shader
|
1064
1401
|
nil
|
@@ -1074,8 +1411,14 @@ module Processing
|
|
1074
1411
|
# @param type [THRESHOLD, GRAY, INVERT, BLUR] filter type
|
1075
1412
|
# @param param [Numeric] a parameter for each filter
|
1076
1413
|
#
|
1414
|
+
# @return [nil] nil
|
1415
|
+
#
|
1416
|
+
# @see https://processing.org/reference/filter_.html
|
1417
|
+
# @see https://p5js.org/reference/#/p5/filter
|
1418
|
+
#
|
1077
1419
|
def filter(*args)
|
1078
1420
|
@filter__ = Shader.createFilter__(*args)
|
1421
|
+
nil
|
1079
1422
|
end
|
1080
1423
|
|
1081
1424
|
# Clears screen.
|
@@ -1096,6 +1439,9 @@ module Processing
|
|
1096
1439
|
#
|
1097
1440
|
# @return [nil] nil
|
1098
1441
|
#
|
1442
|
+
# @see https://processing.org/reference/background_.html
|
1443
|
+
# @see https://p5js.org/reference/#/p5/background
|
1444
|
+
#
|
1099
1445
|
def background(*args)
|
1100
1446
|
assertDrawing__
|
1101
1447
|
rgba = toRGBA__(*args)
|
@@ -1122,6 +1468,9 @@ module Processing
|
|
1122
1468
|
#
|
1123
1469
|
# @return [nil] nil
|
1124
1470
|
#
|
1471
|
+
# @see https://processing.org/reference/point_.html
|
1472
|
+
# @see https://p5js.org/reference/#/p5/point
|
1473
|
+
#
|
1125
1474
|
def point(x, y)
|
1126
1475
|
assertDrawing__
|
1127
1476
|
@painter__.point x, y
|
@@ -1139,6 +1488,9 @@ module Processing
|
|
1139
1488
|
#
|
1140
1489
|
# @return [nil] nil
|
1141
1490
|
#
|
1491
|
+
# @see https://processing.org/reference/line_.html
|
1492
|
+
# @see https://p5js.org/reference/#/p5/line
|
1493
|
+
#
|
1142
1494
|
def line(x1, y1, x2, y2)
|
1143
1495
|
assertDrawing__
|
1144
1496
|
@painter__.line x1, y1, x2, y2
|
@@ -1167,6 +1519,9 @@ module Processing
|
|
1167
1519
|
#
|
1168
1520
|
# @return [nil] nil
|
1169
1521
|
#
|
1522
|
+
# @see https://processing.org/reference/rect_.html
|
1523
|
+
# @see https://p5js.org/reference/#/p5/rect
|
1524
|
+
#
|
1170
1525
|
def rect(a, b, c, d, *args)
|
1171
1526
|
assertDrawing__
|
1172
1527
|
x, y, w, h = toXYWH__ @rectMode__, a, b, c, d
|
@@ -1192,6 +1547,9 @@ module Processing
|
|
1192
1547
|
#
|
1193
1548
|
# @return [nil] nil
|
1194
1549
|
#
|
1550
|
+
# @see https://processing.org/reference/ellipse_.html
|
1551
|
+
# @see https://p5js.org/reference/#/p5/ellipse
|
1552
|
+
#
|
1195
1553
|
def ellipse(a, b, c, d)
|
1196
1554
|
assertDrawing__
|
1197
1555
|
x, y, w, h = toXYWH__ @ellipseMode__, a, b, c, d
|
@@ -1209,6 +1567,9 @@ module Processing
|
|
1209
1567
|
#
|
1210
1568
|
# @return [nil] nil
|
1211
1569
|
#
|
1570
|
+
# @see https://processing.org/reference/circle_.html
|
1571
|
+
# @see https://p5js.org/reference/#/p5/circle
|
1572
|
+
#
|
1212
1573
|
def circle(x, y, extent)
|
1213
1574
|
ellipse x, y, extent, extent
|
1214
1575
|
end
|
@@ -1228,6 +1589,9 @@ module Processing
|
|
1228
1589
|
#
|
1229
1590
|
# @return [nil] nil
|
1230
1591
|
#
|
1592
|
+
# @see https://processing.org/reference/arc_.html
|
1593
|
+
# @see https://p5js.org/reference/#/p5/arc
|
1594
|
+
#
|
1231
1595
|
def arc(a, b, c, d, start, stop)
|
1232
1596
|
assertDrawing__
|
1233
1597
|
x, y, w, h = toXYWH__ @ellipseMode__, a, b, c, d
|
@@ -1246,6 +1610,9 @@ module Processing
|
|
1246
1610
|
#
|
1247
1611
|
# @return [nil] nil
|
1248
1612
|
#
|
1613
|
+
# @see https://processing.org/reference/square_.html
|
1614
|
+
# @see https://p5js.org/reference/#/p5/square
|
1615
|
+
#
|
1249
1616
|
def square(x, y, extent)
|
1250
1617
|
rect x, y, extent, extent
|
1251
1618
|
end
|
@@ -1263,6 +1630,9 @@ module Processing
|
|
1263
1630
|
#
|
1264
1631
|
# @return [nil] nil
|
1265
1632
|
#
|
1633
|
+
# @see https://processing.org/reference/triangle_.html
|
1634
|
+
# @see https://p5js.org/reference/#/p5/triangle
|
1635
|
+
#
|
1266
1636
|
def triangle(x1, y1, x2, y2, x3, y3)
|
1267
1637
|
assertDrawing__
|
1268
1638
|
@painter__.line x1, y1, x2, y2, x3, y3, loop: true
|
@@ -1284,6 +1654,9 @@ module Processing
|
|
1284
1654
|
#
|
1285
1655
|
# @return [nil] nil
|
1286
1656
|
#
|
1657
|
+
# @see https://processing.org/reference/quad_.html
|
1658
|
+
# @see https://p5js.org/reference/#/p5/quad
|
1659
|
+
#
|
1287
1660
|
def quad(x1, y1, x2, y2, x3, y3, x4, y4)
|
1288
1661
|
assertDrawing__
|
1289
1662
|
@painter__.line x1, y1, x2, y2, x3, y3, x4, y4, loop: true
|
@@ -1305,6 +1678,9 @@ module Processing
|
|
1305
1678
|
#
|
1306
1679
|
# @return [nil] nil
|
1307
1680
|
#
|
1681
|
+
# @see https://processing.org/reference/curve_.html
|
1682
|
+
# @see https://p5js.org/reference/#/p5/curve
|
1683
|
+
#
|
1308
1684
|
def curve(cx1, cy1, x1, y1, x2, y2, cx2, cy2)
|
1309
1685
|
assertDrawing__
|
1310
1686
|
@painter__.nsegment = @curveDetail__
|
@@ -1328,6 +1704,9 @@ module Processing
|
|
1328
1704
|
#
|
1329
1705
|
# @return [nil] nil
|
1330
1706
|
#
|
1707
|
+
# @see https://processing.org/reference/bezier_.html
|
1708
|
+
# @see https://p5js.org/reference/#/p5/bezier
|
1709
|
+
#
|
1331
1710
|
def bezier(x1, y1, cx1, cy1, cx2, cy2, x2, y2)
|
1332
1711
|
assertDrawing__
|
1333
1712
|
@painter__.nsegment = @bezierDetail__
|
@@ -1356,6 +1735,9 @@ module Processing
|
|
1356
1735
|
#
|
1357
1736
|
# @return [nil] nil
|
1358
1737
|
#
|
1738
|
+
# @see https://processing.org/reference/text_.html
|
1739
|
+
# @see https://p5js.org/reference/#/p5/text
|
1740
|
+
#
|
1359
1741
|
def text(str, x, y, x2 = nil, y2 = nil)
|
1360
1742
|
assertDrawing__
|
1361
1743
|
if x2
|
@@ -1394,6 +1776,9 @@ module Processing
|
|
1394
1776
|
#
|
1395
1777
|
# @return [nil] nil
|
1396
1778
|
#
|
1779
|
+
# @see https://processing.org/reference/image_.html
|
1780
|
+
# @see https://p5js.org/reference/#/p5/image
|
1781
|
+
#
|
1397
1782
|
def image(img, a, b, c = nil, d = nil)
|
1398
1783
|
assertDrawing__
|
1399
1784
|
x, y, w, h = toXYWH__ @imageMode__, a, b, c || img.width, d || img.height
|
@@ -1418,6 +1803,8 @@ module Processing
|
|
1418
1803
|
#
|
1419
1804
|
# @return [nil] nil
|
1420
1805
|
#
|
1806
|
+
# @see https://processing.org/reference/shape_.html
|
1807
|
+
#
|
1421
1808
|
def shape(shp, a = 0, b = 0, c = nil, d = nil)
|
1422
1809
|
assertDrawing__
|
1423
1810
|
return nil unless shp.isVisible
|
@@ -1604,6 +1991,9 @@ module Processing
|
|
1604
1991
|
#
|
1605
1992
|
# @return [nil] nil
|
1606
1993
|
#
|
1994
|
+
# @see https://processing.org/reference/copy_.html
|
1995
|
+
# @see https://p5js.org/reference/#/p5/copy
|
1996
|
+
#
|
1607
1997
|
def copy(img = nil, sx, sy, sw, sh, dx, dy, dw, dh)
|
1608
1998
|
blend img, sx, sy, sw, sh, dx, dy, dw, dh, BLEND
|
1609
1999
|
end
|
@@ -1626,6 +2016,9 @@ module Processing
|
|
1626
2016
|
#
|
1627
2017
|
# @return [nil] nil
|
1628
2018
|
#
|
2019
|
+
# @see https://processing.org/reference/blend_.html
|
2020
|
+
# @see https://p5js.org/reference/#/p5/blend
|
2021
|
+
#
|
1629
2022
|
def blend(img = nil, sx, sy, sw, sh, dx, dy, dw, dh, mode)
|
1630
2023
|
assertDrawing__
|
1631
2024
|
(img || self).drawImage__(
|
@@ -1637,6 +2030,9 @@ module Processing
|
|
1637
2030
|
#
|
1638
2031
|
# @return [nil] nil
|
1639
2032
|
#
|
2033
|
+
# @see https://processing.org/reference/loadPixels_.html
|
2034
|
+
# @see https://p5js.org/reference/#/p5/loadPixels
|
2035
|
+
#
|
1640
2036
|
def loadPixels()
|
1641
2037
|
@pixels__ = getInternal__.pixels
|
1642
2038
|
end
|
@@ -1645,6 +2041,9 @@ module Processing
|
|
1645
2041
|
#
|
1646
2042
|
# @return [nil] nil
|
1647
2043
|
#
|
2044
|
+
# @see https://processing.org/reference/updatePixels_.html
|
2045
|
+
# @see https://p5js.org/reference/#/p5/updatePixels
|
2046
|
+
#
|
1648
2047
|
def updatePixels(&block)
|
1649
2048
|
return if !block && !@pixels__
|
1650
2049
|
if block
|
@@ -1661,6 +2060,11 @@ module Processing
|
|
1661
2060
|
# An array of all pixels.
|
1662
2061
|
# Call loadPixels() before accessing the array.
|
1663
2062
|
#
|
2063
|
+
# @return [Array] color array
|
2064
|
+
#
|
2065
|
+
# @see https://processing.org/reference/pixels.html
|
2066
|
+
# @see https://p5js.org/reference/#/p5/pixels
|
2067
|
+
#
|
1664
2068
|
def pixels()
|
1665
2069
|
@pixels__
|
1666
2070
|
end
|
@@ -1671,6 +2075,9 @@ module Processing
|
|
1671
2075
|
#
|
1672
2076
|
# @return [nil] nil
|
1673
2077
|
#
|
2078
|
+
# @see https://processing.org/reference/save_.html
|
2079
|
+
# @see https://p5js.org/reference/#/p5/save
|
2080
|
+
#
|
1674
2081
|
def save(filename)
|
1675
2082
|
getInternal__.save filename
|
1676
2083
|
nil
|
@@ -1683,10 +2090,13 @@ module Processing
|
|
1683
2090
|
#
|
1684
2091
|
# @param x [Numeric] left/right translation
|
1685
2092
|
# @param y [Numeric] up/down translation
|
1686
|
-
# @param
|
2093
|
+
# @param z [Numeric] forward/backward translation
|
1687
2094
|
#
|
1688
2095
|
# @return [nil] nil
|
1689
2096
|
#
|
2097
|
+
# @see https://processing.org/reference/translate_.html
|
2098
|
+
# @see https://p5js.org/reference/#/p5/translate
|
2099
|
+
#
|
1690
2100
|
def translate(x, y, z = 0)
|
1691
2101
|
assertDrawing__
|
1692
2102
|
@painter__.translate x, y, z
|
@@ -1697,13 +2107,18 @@ module Processing
|
|
1697
2107
|
#
|
1698
2108
|
# @overload scale(s)
|
1699
2109
|
# @overload scale(x, y)
|
2110
|
+
# @overload scale(x, y, z)
|
1700
2111
|
#
|
1701
2112
|
# @param s [Numeric] horizontal and vertical scale
|
1702
2113
|
# @param x [Numeric] horizontal scale
|
1703
2114
|
# @param y [Numeric] vertical scale
|
2115
|
+
# @param z [Numeric] depth scale
|
1704
2116
|
#
|
1705
2117
|
# @return [nil] nil
|
1706
2118
|
#
|
2119
|
+
# @see https://processing.org/reference/scale_.html
|
2120
|
+
# @see https://p5js.org/reference/#/p5/scale
|
2121
|
+
#
|
1707
2122
|
def scale(x, y = nil, z = 1)
|
1708
2123
|
assertDrawing__
|
1709
2124
|
@painter__.scale x, (y || x), z
|
@@ -1716,30 +2131,69 @@ module Processing
|
|
1716
2131
|
#
|
1717
2132
|
# @return [nil] nil
|
1718
2133
|
#
|
2134
|
+
# @see https://processing.org/reference/rotate_.html
|
2135
|
+
# @see https://p5js.org/reference/#/p5/rotate
|
2136
|
+
#
|
1719
2137
|
def rotate(angle)
|
1720
2138
|
assertDrawing__
|
1721
2139
|
@painter__.rotate toDegrees__ angle
|
1722
2140
|
nil
|
1723
2141
|
end
|
1724
2142
|
|
2143
|
+
# Applies rotation around the x-axis.
|
2144
|
+
#
|
2145
|
+
# @param angle [Numeric] angle for rotation
|
2146
|
+
#
|
2147
|
+
# @return [nil] nil
|
2148
|
+
#
|
2149
|
+
# @see https://processing.org/reference/rotateX_.html
|
2150
|
+
# @see https://p5js.org/reference/#/p5/rotateX
|
2151
|
+
#
|
1725
2152
|
def rotateX(angle)
|
1726
2153
|
assertDrawing__
|
1727
2154
|
@painter__.rotate toDegrees__(angle), 1, 0, 0
|
1728
2155
|
nil
|
1729
2156
|
end
|
1730
2157
|
|
2158
|
+
# Applies rotation around the y-axis.
|
2159
|
+
#
|
2160
|
+
# @param angle [Numeric] angle for rotation
|
2161
|
+
#
|
2162
|
+
# @return [nil] nil
|
2163
|
+
#
|
2164
|
+
# @see https://processing.org/reference/rotateY_.html
|
2165
|
+
# @see https://p5js.org/reference/#/p5/rotateY
|
2166
|
+
#
|
1731
2167
|
def rotateY(angle)
|
1732
2168
|
assertDrawing__
|
1733
2169
|
@painter__.rotate toDegrees__(angle), 0, 1, 0
|
1734
2170
|
nil
|
1735
2171
|
end
|
1736
2172
|
|
2173
|
+
# Applies rotation around the z-axis.
|
2174
|
+
#
|
2175
|
+
# @param angle [Numeric] angle for rotation
|
2176
|
+
#
|
2177
|
+
# @return [nil] nil
|
2178
|
+
#
|
2179
|
+
# @see https://processing.org/reference/rotateZ_.html
|
2180
|
+
# @see https://p5js.org/reference/#/p5/rotateZ
|
2181
|
+
#
|
1737
2182
|
def rotateZ(angle)
|
1738
2183
|
assertDrawing__
|
1739
2184
|
@painter__.rotate toDegrees__(angle), 0, 0, 1
|
1740
2185
|
nil
|
1741
2186
|
end
|
1742
2187
|
|
2188
|
+
# Applies shear around the x-axis.
|
2189
|
+
#
|
2190
|
+
# @param angle [Numeric] angle for shearing
|
2191
|
+
#
|
2192
|
+
# @return [nil] nil
|
2193
|
+
#
|
2194
|
+
# @see https://processing.org/reference/shearX_.html
|
2195
|
+
# @see https://p5js.org/reference/#/p5/shearX
|
2196
|
+
#
|
1743
2197
|
def shearX(angle)
|
1744
2198
|
t = Math.tan toRadians__(angle)
|
1745
2199
|
@painter__.matrix *= Rays::Matrix.new(
|
@@ -1747,8 +2201,18 @@ module Processing
|
|
1747
2201
|
0, 1, 0, 0,
|
1748
2202
|
0, 0, 1, 0,
|
1749
2203
|
0, 0, 0, 1)
|
2204
|
+
nil
|
1750
2205
|
end
|
1751
2206
|
|
2207
|
+
# Applies shear around the y-axis.
|
2208
|
+
#
|
2209
|
+
# @param angle [Numeric] angle for shearing
|
2210
|
+
#
|
2211
|
+
# @return [nil] nil
|
2212
|
+
#
|
2213
|
+
# @see https://processing.org/reference/shearY_.html
|
2214
|
+
# @see https://p5js.org/reference/#/p5/shearY
|
2215
|
+
#
|
1752
2216
|
def shearY(angle)
|
1753
2217
|
t = Math.tan toRadians__(angle)
|
1754
2218
|
@painter__.matrix *= Rays::Matrix.new(
|
@@ -1756,12 +2220,15 @@ module Processing
|
|
1756
2220
|
t, 1, 0, 0,
|
1757
2221
|
0, 0, 1, 0,
|
1758
2222
|
0, 0, 0, 1)
|
2223
|
+
nil
|
1759
2224
|
end
|
1760
2225
|
|
1761
2226
|
# Pushes the current transformation matrix to stack.
|
1762
2227
|
#
|
1763
2228
|
# @return [Object] result of the expression at the end of the block
|
1764
2229
|
#
|
2230
|
+
# @see https://processing.org/reference/pushMatrix_.html
|
2231
|
+
#
|
1765
2232
|
def pushMatrix(&block)
|
1766
2233
|
assertDrawing__
|
1767
2234
|
@matrixStack__.push @painter__.matrix
|
@@ -1774,6 +2241,8 @@ module Processing
|
|
1774
2241
|
#
|
1775
2242
|
# @return [nil] nil
|
1776
2243
|
#
|
2244
|
+
# @see https://processing.org/reference/popMatrix_.html
|
2245
|
+
#
|
1777
2246
|
def popMatrix()
|
1778
2247
|
assertDrawing__
|
1779
2248
|
raise "matrix stack underflow" if @matrixStack__.empty?
|
@@ -1807,6 +2276,9 @@ module Processing
|
|
1807
2276
|
#
|
1808
2277
|
# @return [nil] nil
|
1809
2278
|
#
|
2279
|
+
# @see https://processing.org/reference/applyMatrix_.html
|
2280
|
+
# @see https://p5js.org/reference/#/p5/applyMatrix
|
2281
|
+
#
|
1810
2282
|
def applyMatrix(*args)
|
1811
2283
|
assertDrawing__
|
1812
2284
|
args = args.first if args.first.kind_of?(Array)
|
@@ -1830,6 +2302,9 @@ module Processing
|
|
1830
2302
|
#
|
1831
2303
|
# @return [nil] nil
|
1832
2304
|
#
|
2305
|
+
# @see https://processing.org/reference/resetMatrix_.html
|
2306
|
+
# @see https://p5js.org/reference/#/p5/resetMatrix
|
2307
|
+
#
|
1833
2308
|
def resetMatrix()
|
1834
2309
|
assertDrawing__
|
1835
2310
|
@painter__.matrix = 1
|
@@ -1840,6 +2315,8 @@ module Processing
|
|
1840
2315
|
#
|
1841
2316
|
# @return [nil] nil
|
1842
2317
|
#
|
2318
|
+
# @see https://processing.org/reference/printMatrix_.html
|
2319
|
+
#
|
1843
2320
|
def printMatrix()
|
1844
2321
|
m = @painter__.matrix
|
1845
2322
|
m.transpose! if @p5jsMode__
|
@@ -1851,6 +2328,8 @@ module Processing
|
|
1851
2328
|
#
|
1852
2329
|
# @return [Object] result of the expression at the end of the block
|
1853
2330
|
#
|
2331
|
+
# @see https://processing.org/reference/pushStyle_.html
|
2332
|
+
#
|
1854
2333
|
def pushStyle(&block)
|
1855
2334
|
assertDrawing__
|
1856
2335
|
@styleStack__.push [
|
@@ -1898,6 +2377,8 @@ module Processing
|
|
1898
2377
|
#
|
1899
2378
|
# @return [nil] nil
|
1900
2379
|
#
|
2380
|
+
# @see https://processing.org/reference/popStyle_.html
|
2381
|
+
#
|
1901
2382
|
def popStyle()
|
1902
2383
|
assertDrawing__
|
1903
2384
|
raise "style stack underflow" if @styleStack__.empty?
|
@@ -1943,6 +2424,9 @@ module Processing
|
|
1943
2424
|
#
|
1944
2425
|
# @return [Object] result of the expression at the end of the block
|
1945
2426
|
#
|
2427
|
+
# @see https://processing.org/reference/push_.html
|
2428
|
+
# @see https://p5js.org/reference/#/p5/push
|
2429
|
+
#
|
1946
2430
|
def push(&block)
|
1947
2431
|
pushMatrix
|
1948
2432
|
pushStyle
|
@@ -1955,11 +2439,19 @@ module Processing
|
|
1955
2439
|
#
|
1956
2440
|
# @return [nil] nil
|
1957
2441
|
#
|
2442
|
+
# @see https://processing.org/reference/pop_.html
|
2443
|
+
# @see https://p5js.org/reference/#/p5/pop
|
2444
|
+
#
|
1958
2445
|
def pop()
|
1959
2446
|
popMatrix
|
1960
2447
|
popStyle
|
1961
2448
|
end
|
1962
2449
|
|
2450
|
+
# @private
|
2451
|
+
def getPainter__()
|
2452
|
+
@painter__
|
2453
|
+
end
|
2454
|
+
|
1963
2455
|
# @private
|
1964
2456
|
def getInternal__()
|
1965
2457
|
@image__
|
@@ -1988,6 +2480,9 @@ module Processing
|
|
1988
2480
|
#
|
1989
2481
|
# @return [Numeric] absolute number
|
1990
2482
|
#
|
2483
|
+
# @see https://processing.org/reference/abs_.html
|
2484
|
+
# @see https://p5js.org/reference/#/p5/abs
|
2485
|
+
#
|
1991
2486
|
def abs(value)
|
1992
2487
|
value.abs
|
1993
2488
|
end
|
@@ -1998,6 +2493,9 @@ module Processing
|
|
1998
2493
|
#
|
1999
2494
|
# @return [Numeric] rounded up number
|
2000
2495
|
#
|
2496
|
+
# @see https://processing.org/reference/ceil_.html
|
2497
|
+
# @see https://p5js.org/reference/#/p5/ceil
|
2498
|
+
#
|
2001
2499
|
def ceil(value)
|
2002
2500
|
value.ceil
|
2003
2501
|
end
|
@@ -2008,6 +2506,9 @@ module Processing
|
|
2008
2506
|
#
|
2009
2507
|
# @return [Numeric] rounded down number
|
2010
2508
|
#
|
2509
|
+
# @see https://processing.org/reference/floor_.html
|
2510
|
+
# @see https://p5js.org/reference/#/p5/floor
|
2511
|
+
#
|
2011
2512
|
def floor(value)
|
2012
2513
|
value.floor
|
2013
2514
|
end
|
@@ -2018,6 +2519,9 @@ module Processing
|
|
2018
2519
|
#
|
2019
2520
|
# @return [Numeric] rounded number
|
2020
2521
|
#
|
2522
|
+
# @see https://processing.org/reference/round_.html
|
2523
|
+
# @see https://p5js.org/reference/#/p5/round
|
2524
|
+
#
|
2021
2525
|
def round(value)
|
2022
2526
|
value.round
|
2023
2527
|
end
|
@@ -2028,6 +2532,9 @@ module Processing
|
|
2028
2532
|
#
|
2029
2533
|
# @return [Numeric] result number
|
2030
2534
|
#
|
2535
|
+
# @see https://processing.org/reference/log_.html
|
2536
|
+
# @see https://p5js.org/reference/#/p5/log
|
2537
|
+
#
|
2031
2538
|
def log(n)
|
2032
2539
|
Math.log n
|
2033
2540
|
end
|
@@ -2038,6 +2545,9 @@ module Processing
|
|
2038
2545
|
#
|
2039
2546
|
# @return [Numeric] result number
|
2040
2547
|
#
|
2548
|
+
# @see https://processing.org/reference/exp_.html
|
2549
|
+
# @see https://p5js.org/reference/#/p5/exp
|
2550
|
+
#
|
2041
2551
|
def exp(n)
|
2042
2552
|
Math.exp n
|
2043
2553
|
end
|
@@ -2049,6 +2559,9 @@ module Processing
|
|
2049
2559
|
#
|
2050
2560
|
# @return [Numeric] value ** exponent
|
2051
2561
|
#
|
2562
|
+
# @see https://processing.org/reference/pow_.html
|
2563
|
+
# @see https://p5js.org/reference/#/p5/pow
|
2564
|
+
#
|
2052
2565
|
def pow(value, exponent)
|
2053
2566
|
value ** exponent
|
2054
2567
|
end
|
@@ -2059,6 +2572,9 @@ module Processing
|
|
2059
2572
|
#
|
2060
2573
|
# @return [Numeric] squared value
|
2061
2574
|
#
|
2575
|
+
# @see https://processing.org/reference/sq_.html
|
2576
|
+
# @see https://p5js.org/reference/#/p5/sq
|
2577
|
+
#
|
2062
2578
|
def sq(value)
|
2063
2579
|
value * value
|
2064
2580
|
end
|
@@ -2069,6 +2585,9 @@ module Processing
|
|
2069
2585
|
#
|
2070
2586
|
# @return [Numeric] squared value
|
2071
2587
|
#
|
2588
|
+
# @see https://processing.org/reference/sqrt_.html
|
2589
|
+
# @see https://p5js.org/reference/#/p5/sqrt
|
2590
|
+
#
|
2072
2591
|
def sqrt(value)
|
2073
2592
|
Math.sqrt value
|
2074
2593
|
end
|
@@ -2084,6 +2603,9 @@ module Processing
|
|
2084
2603
|
#
|
2085
2604
|
# @return [Numeric] magnitude
|
2086
2605
|
#
|
2606
|
+
# @see https://processing.org/reference/mag_.html
|
2607
|
+
# @see https://p5js.org/reference/#/p5/mag
|
2608
|
+
#
|
2087
2609
|
def mag(*args)
|
2088
2610
|
x, y, z = *args
|
2089
2611
|
case args.size
|
@@ -2107,6 +2629,9 @@ module Processing
|
|
2107
2629
|
#
|
2108
2630
|
# @return [Numeric] distance between 2 points
|
2109
2631
|
#
|
2632
|
+
# @see https://processing.org/reference/dist_.html
|
2633
|
+
# @see https://p5js.org/reference/#/p5/dist
|
2634
|
+
#
|
2110
2635
|
def dist(*args)
|
2111
2636
|
case args.size
|
2112
2637
|
when 4
|
@@ -2129,6 +2654,9 @@ module Processing
|
|
2129
2654
|
#
|
2130
2655
|
# @return [Numeric] normalized value between 0..1
|
2131
2656
|
#
|
2657
|
+
# @see https://processing.org/reference/norm_.html
|
2658
|
+
# @see https://p5js.org/reference/#/p5/norm
|
2659
|
+
#
|
2132
2660
|
def norm(value, start, stop)
|
2133
2661
|
(value.to_f - start.to_f) / (stop.to_f - start.to_f)
|
2134
2662
|
end
|
@@ -2141,6 +2669,9 @@ module Processing
|
|
2141
2669
|
#
|
2142
2670
|
# @return [Numeric] interporated number
|
2143
2671
|
#
|
2672
|
+
# @see https://processing.org/reference/lerp_.html
|
2673
|
+
# @see https://p5js.org/reference/#/p5/lerp
|
2674
|
+
#
|
2144
2675
|
def lerp(start, stop, amount)
|
2145
2676
|
start + (stop - start) * amount
|
2146
2677
|
end
|
@@ -2153,6 +2684,9 @@ module Processing
|
|
2153
2684
|
#
|
2154
2685
|
# @return [Integer] interporated color
|
2155
2686
|
#
|
2687
|
+
# @see https://processing.org/reference/lerpColor_.html
|
2688
|
+
# @see https://p5js.org/reference/#/p5/lerpColor
|
2689
|
+
#
|
2156
2690
|
def lerpColor(color1, color2, amount)
|
2157
2691
|
color(
|
2158
2692
|
lerp(red( color1), red( color2), amount),
|
@@ -2171,6 +2705,9 @@ module Processing
|
|
2171
2705
|
#
|
2172
2706
|
# @return [Numeric] mapped number
|
2173
2707
|
#
|
2708
|
+
# @see https://processing.org/reference/map_.html
|
2709
|
+
# @see https://p5js.org/reference/#/p5/map
|
2710
|
+
#
|
2174
2711
|
def map(value, start1, stop1, start2, stop2)
|
2175
2712
|
lerp start2, stop2, norm(value, start1, stop1)
|
2176
2713
|
end
|
@@ -2188,6 +2725,9 @@ module Processing
|
|
2188
2725
|
#
|
2189
2726
|
# @return [Numeric] minimum value
|
2190
2727
|
#
|
2728
|
+
# @see https://processing.org/reference/min_.html
|
2729
|
+
# @see https://p5js.org/reference/#/p5/min
|
2730
|
+
#
|
2191
2731
|
def min(*args)
|
2192
2732
|
args.flatten.min
|
2193
2733
|
end
|
@@ -2205,6 +2745,9 @@ module Processing
|
|
2205
2745
|
#
|
2206
2746
|
# @return [Numeric] maximum value
|
2207
2747
|
#
|
2748
|
+
# @see https://processing.org/reference/max_.html
|
2749
|
+
# @see https://p5js.org/reference/#/p5/max
|
2750
|
+
#
|
2208
2751
|
def max(*args)
|
2209
2752
|
args.flatten.max
|
2210
2753
|
end
|
@@ -2217,6 +2760,9 @@ module Processing
|
|
2217
2760
|
#
|
2218
2761
|
# @return [Numeric] constrained number
|
2219
2762
|
#
|
2763
|
+
# @see https://processing.org/reference/constrain_.html
|
2764
|
+
# @see https://p5js.org/reference/#/p5/constrain
|
2765
|
+
#
|
2220
2766
|
def constrain(value, min, max)
|
2221
2767
|
value < min ? min : (value > max ? max : value)
|
2222
2768
|
end
|
@@ -2227,6 +2773,9 @@ module Processing
|
|
2227
2773
|
#
|
2228
2774
|
# @return [Numeric] radian
|
2229
2775
|
#
|
2776
|
+
# @see https://processing.org/reference/radians_.html
|
2777
|
+
# @see https://p5js.org/reference/#/p5/radians
|
2778
|
+
#
|
2230
2779
|
def radians(degree)
|
2231
2780
|
degree * DEG2RAD__
|
2232
2781
|
end
|
@@ -2237,6 +2786,9 @@ module Processing
|
|
2237
2786
|
#
|
2238
2787
|
# @return [Numeric] degree
|
2239
2788
|
#
|
2789
|
+
# @see https://processing.org/reference/degrees_.html
|
2790
|
+
# @see https://p5js.org/reference/#/p5/degrees
|
2791
|
+
#
|
2240
2792
|
def degrees(radian)
|
2241
2793
|
radian * RAD2DEG__
|
2242
2794
|
end
|
@@ -2247,6 +2799,9 @@ module Processing
|
|
2247
2799
|
#
|
2248
2800
|
# @return [Numeric] the sine
|
2249
2801
|
#
|
2802
|
+
# @see https://processing.org/reference/sin_.html
|
2803
|
+
# @see https://p5js.org/reference/#/p5/sin
|
2804
|
+
#
|
2250
2805
|
def sin(angle)
|
2251
2806
|
Math.sin angle
|
2252
2807
|
end
|
@@ -2257,6 +2812,9 @@ module Processing
|
|
2257
2812
|
#
|
2258
2813
|
# @return [Numeric] the cosine
|
2259
2814
|
#
|
2815
|
+
# @see https://processing.org/reference/cos_.html
|
2816
|
+
# @see https://p5js.org/reference/#/p5/cos
|
2817
|
+
#
|
2260
2818
|
def cos(angle)
|
2261
2819
|
Math.cos angle
|
2262
2820
|
end
|
@@ -2267,6 +2825,9 @@ module Processing
|
|
2267
2825
|
#
|
2268
2826
|
# @return [Numeric] the tangent
|
2269
2827
|
#
|
2828
|
+
# @see https://processing.org/reference/tan_.html
|
2829
|
+
# @see https://p5js.org/reference/#/p5/tan
|
2830
|
+
#
|
2270
2831
|
def tan(angle)
|
2271
2832
|
Math.tan angle
|
2272
2833
|
end
|
@@ -2277,6 +2838,9 @@ module Processing
|
|
2277
2838
|
#
|
2278
2839
|
# @return [Numeric] the arc sine
|
2279
2840
|
#
|
2841
|
+
# @see https://processing.org/reference/asin_.html
|
2842
|
+
# @see https://p5js.org/reference/#/p5/asin
|
2843
|
+
#
|
2280
2844
|
def asin(value)
|
2281
2845
|
Math.asin value
|
2282
2846
|
end
|
@@ -2287,6 +2851,9 @@ module Processing
|
|
2287
2851
|
#
|
2288
2852
|
# @return [Numeric] the arc cosine
|
2289
2853
|
#
|
2854
|
+
# @see https://processing.org/reference/acos_.html
|
2855
|
+
# @see https://p5js.org/reference/#/p5/acos
|
2856
|
+
#
|
2290
2857
|
def acos(value)
|
2291
2858
|
Math.acos value
|
2292
2859
|
end
|
@@ -2297,6 +2864,9 @@ module Processing
|
|
2297
2864
|
#
|
2298
2865
|
# @return [Numeric] the arc tangent
|
2299
2866
|
#
|
2867
|
+
# @see https://processing.org/reference/atan_.html
|
2868
|
+
# @see https://p5js.org/reference/#/p5/atan
|
2869
|
+
#
|
2300
2870
|
def atan(value)
|
2301
2871
|
Math.atan value
|
2302
2872
|
end
|
@@ -2308,6 +2878,9 @@ module Processing
|
|
2308
2878
|
#
|
2309
2879
|
# @return [Numeric] the angle in radians
|
2310
2880
|
#
|
2881
|
+
# @see https://processing.org/reference/atan2_.html
|
2882
|
+
# @see https://p5js.org/reference/#/p5/atan2
|
2883
|
+
#
|
2311
2884
|
def atan2(y, x)
|
2312
2885
|
Math.atan2 y, x
|
2313
2886
|
end
|
@@ -2540,6 +3113,8 @@ module Processing
|
|
2540
3113
|
#
|
2541
3114
|
# @return [Vector] new vector
|
2542
3115
|
#
|
3116
|
+
# @see https://p5js.org/reference/#/p5/createVector
|
3117
|
+
#
|
2543
3118
|
def createVector(*args)
|
2544
3119
|
Vector.new(*args, context: self)
|
2545
3120
|
end
|
@@ -2549,6 +3124,10 @@ module Processing
|
|
2549
3124
|
# @param name [String] font name
|
2550
3125
|
# @param size [Numeric] font size (max 256)
|
2551
3126
|
#
|
3127
|
+
# @return [Font] new font
|
3128
|
+
#
|
3129
|
+
# @see https://processing.org/reference/createFont_.html
|
3130
|
+
#
|
2552
3131
|
def createFont(name, size)
|
2553
3132
|
size = FONT_SIZE_MAX__ if size && size > FONT_SIZE_MAX__
|
2554
3133
|
Font.new Rays::Font.new(name, size || FONT_SIZE_DEFAULT__)
|
@@ -2565,6 +3144,9 @@ module Processing
|
|
2565
3144
|
#
|
2566
3145
|
# @return [Image] new image
|
2567
3146
|
#
|
3147
|
+
# @see https://processing.org/reference/createImage_.html
|
3148
|
+
# @see https://p5js.org/reference/#/p5/createImage
|
3149
|
+
#
|
2568
3150
|
def createImage(w, h, format = RGBA)
|
2569
3151
|
colorspace = {RGB => Rays::RGB, RGBA => Rays::RGBA}[format]
|
2570
3152
|
raise ArgumentError, "Unknown image format" unless colorspace
|
@@ -2584,6 +3166,10 @@ module Processing
|
|
2584
3166
|
#
|
2585
3167
|
# @param kind [LINE, RECT, ELLIPSE, ARC, TRIANGLE, QUAD, GROUP]
|
2586
3168
|
#
|
3169
|
+
# @return [Shape] new shape
|
3170
|
+
#
|
3171
|
+
# @see https://processing.org/reference/createShape_.html
|
3172
|
+
#
|
2587
3173
|
def createShape(kind = nil, *args)
|
2588
3174
|
case kind
|
2589
3175
|
when LINE then createLineShape__( *args)
|
@@ -2599,19 +3185,19 @@ module Processing
|
|
2599
3185
|
end
|
2600
3186
|
|
2601
3187
|
# @private
|
2602
|
-
|
3188
|
+
def createLineShape__(x1, y1, x2, y2)
|
2603
3189
|
Shape.new Rays::Polygon.line(x1, y1, x2, y2), context: self
|
2604
3190
|
end
|
2605
3191
|
|
2606
3192
|
# @private
|
2607
|
-
|
2608
|
-
x, y, w, h = toXYWH__
|
2609
|
-
Shape.new Rays::Polygon.rect(x, y, w, h), context: self
|
3193
|
+
def createRectShape__(a, b, c, d, *args, mode: @rectMode__)
|
3194
|
+
x, y, w, h = toXYWH__ mode, a, b, c, d
|
3195
|
+
Shape.new Rays::Polygon.rect(x, y, w, h, *args), context: self
|
2610
3196
|
end
|
2611
3197
|
|
2612
3198
|
# @private
|
2613
|
-
|
2614
|
-
x, y, w, h = toXYWH__
|
3199
|
+
def createEllipseShape__(a, b, c, d, mode: @ellipseMode__)
|
3200
|
+
x, y, w, h = toXYWH__ mode, a, b, c, d
|
2615
3201
|
Shape.new Rays::Polygon.ellipse(x, y, w, h), context: self
|
2616
3202
|
end
|
2617
3203
|
|
@@ -2640,6 +3226,9 @@ module Processing
|
|
2640
3226
|
#
|
2641
3227
|
# @return [Graphics] graphics object
|
2642
3228
|
#
|
3229
|
+
# @see https://processing.org/reference/createGraphics_.html
|
3230
|
+
# @see https://p5js.org/reference/#/p5/createGraphics
|
3231
|
+
#
|
2643
3232
|
def createGraphics(width, height, pixelDensity = 1)
|
2644
3233
|
Graphics.new width, height, pixelDensity
|
2645
3234
|
end
|
@@ -2676,6 +3265,8 @@ module Processing
|
|
2676
3265
|
#
|
2677
3266
|
# @return [Shader] shader object
|
2678
3267
|
#
|
3268
|
+
# @see https://p5js.org/reference/#/p5/createShader
|
3269
|
+
#
|
2679
3270
|
def createShader(vert, frag)
|
2680
3271
|
vert = File.read if vert && File.exist?(vert)
|
2681
3272
|
frag = File.read if frag && File.exist?(frag)
|
@@ -2747,6 +3338,10 @@ module Processing
|
|
2747
3338
|
img
|
2748
3339
|
end
|
2749
3340
|
|
3341
|
+
def loadShape(filename)
|
3342
|
+
Processing::SVGLoader.new(self).load filename
|
3343
|
+
end
|
3344
|
+
|
2750
3345
|
# Loads shader file.
|
2751
3346
|
#
|
2752
3347
|
# @overload loadShader(fragPath)
|
@@ -2757,6 +3352,9 @@ module Processing
|
|
2757
3352
|
#
|
2758
3353
|
# @return [Shader] loaded shader object
|
2759
3354
|
#
|
3355
|
+
# @see https://processing.org/reference/loadShader_.html
|
3356
|
+
# @see https://p5js.org/reference/#/p5/loadShader
|
3357
|
+
#
|
2760
3358
|
def loadShader(fragPath, vertPath = nil)
|
2761
3359
|
createShader vertPath, fragPath
|
2762
3360
|
end
|