picrate 0.5.0-java → 0.6.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.mvn/wrapper/maven-wrapper.properties +1 -1
- data/CHANGELOG.md +3 -1
- data/README.md +1 -1
- data/Rakefile +8 -6
- data/docs/_editors/geany.md +5 -4
- data/docs/_editors/vim.md +6 -0
- data/docs/_includes/head.html +1 -0
- data/docs/_libraries/control_panel.md +2 -2
- data/docs/_libraries/gl_video.md +21 -0
- data/docs/_posts/2018-05-06-getting_started.md +10 -9
- data/docs/_posts/2018-05-06-install_jruby.md +19 -2
- data/docs/_posts/2018-06-26-auto_install_picrate.md +19 -4
- data/docs/_posts/2018-11-18-building-gem.md +18 -0
- data/docs/_posts/2018-11-27-getting_started_geany.md +38 -0
- data/docs/about.md +21 -10
- data/docs/assets/android-chrome-192x192.png +0 -0
- data/docs/assets/android-chrome-512x512.png +0 -0
- data/docs/assets/favicon.ico +0 -0
- data/docs/assets/geany.png +0 -0
- data/docs/assets/jwishy_picrate.png +0 -0
- data/docs/assets/picrate.svg +251 -0
- data/docs/index.html +8 -14
- data/lib/picrate/runner.rb +6 -2
- data/lib/picrate/version.rb +1 -1
- data/library/boids/boids.rb +10 -13
- data/mvnw +234 -0
- data/picrate.gemspec +2 -1
- data/pom.rb +1 -1
- data/pom.xml +1 -1
- data/src/main/java/japplemenubar/JAppleMenuBar.java +10 -2
- data/src/main/java/monkstone/ColorUtil.java +11 -1
- data/src/main/java/monkstone/MathToolModule.java +1 -0
- data/src/main/java/monkstone/PicrateLibrary.java +1 -0
- data/src/main/java/monkstone/fastmath/Deglut.java +1 -0
- data/src/main/java/monkstone/noise/SimplexNoise.java +3 -3
- data/src/main/java/monkstone/slider/CustomHorizontalSlider.java +1 -1
- data/src/main/java/monkstone/slider/CustomVerticalSlider.java +1 -1
- data/src/main/java/monkstone/slider/SimpleHorizontalSlider.java +1 -1
- data/src/main/java/monkstone/slider/SimpleSlider.java +8 -8
- data/src/main/java/monkstone/slider/SimpleVerticalSlider.java +1 -1
- data/src/main/java/monkstone/slider/Slider.java +3 -3
- data/src/main/java/monkstone/slider/SliderBar.java +1 -1
- data/src/main/java/monkstone/slider/SliderGroup.java +1 -1
- data/src/main/java/monkstone/vecmath/AppRender.java +1 -0
- data/src/main/java/monkstone/vecmath/JRender.java +1 -0
- data/src/main/java/monkstone/vecmath/ShapeRender.java +1 -0
- data/src/main/java/monkstone/vecmath/vec2/Vec2.java +8 -0
- data/src/main/java/monkstone/vecmath/vec3/Vec3.java +1 -0
- data/src/main/java/processing/awt/PGraphicsJava2D.java +85 -16
- data/src/main/java/processing/awt/PSurfaceAWT.java +1 -1
- data/src/main/java/processing/core/PApplet.java +18 -12
- data/src/main/java/processing/core/PShape.java +1182 -305
- data/src/main/java/processing/core/PStyle.java +1 -1
- data/src/main/java/processing/core/PSurface.java +1 -1
- data/src/main/java/processing/data/FloatDict.java +196 -54
- data/src/main/java/processing/data/FloatList.java +167 -54
- data/src/main/java/processing/data/IntDict.java +211 -56
- data/src/main/java/processing/data/IntList.java +185 -52
- data/src/main/java/processing/data/JSONArray.java +69 -20
- data/src/main/java/processing/data/JSONObject.java +53 -12
- data/src/main/java/processing/data/Sort.java +40 -10
- data/src/main/java/processing/data/StringDict.java +159 -49
- data/src/main/java/processing/data/StringList.java +147 -42
- data/src/main/java/processing/data/Table.java +778 -223
- data/src/main/java/processing/data/TableRow.java +26 -2
- data/src/main/java/processing/data/XML.java +190 -50
- data/src/main/java/processing/event/Event.java +93 -0
- data/src/main/java/processing/event/KeyEvent.java +55 -13
- data/src/main/java/processing/event/MouseEvent.java +77 -1
- data/src/main/java/processing/event/TouchEvent.java +14 -1
- data/src/main/java/processing/javafx/PGraphicsFX2D.java +8 -0
- data/src/main/java/processing/opengl/FrameBuffer.java +228 -66
- data/src/main/java/processing/opengl/LinePath.java +131 -27
- data/src/main/java/processing/opengl/LineStroker.java +30 -5
- data/src/main/java/processing/opengl/PGL.java +4066 -865
- data/src/main/java/processing/opengl/PGraphics2D.java +38 -10
- data/src/main/java/processing/opengl/PGraphics3D.java +38 -6
- data/src/main/java/processing/opengl/PGraphicsOpenGL.java +1980 -474
- data/src/main/java/processing/opengl/PJOGL.java +1460 -248
- data/src/main/java/processing/opengl/PShader.java +904 -217
- data/src/main/java/processing/opengl/PShapeOpenGL.java +1811 -487
- data/src/main/java/processing/opengl/PSurfaceJOGL.java +278 -71
- data/src/main/java/processing/opengl/Texture.java +610 -135
- data/src/main/java/processing/opengl/VertexBuffer.java +45 -9
- data/src/main/resources/icon/icon-1024.png +0 -0
- data/src/main/resources/icon/icon-128.png +0 -0
- data/src/main/resources/icon/icon-16.png +0 -0
- data/src/main/resources/icon/icon-256.png +0 -0
- data/src/main/resources/icon/icon-32.png +0 -0
- data/src/main/resources/icon/icon-48.png +0 -0
- data/src/main/resources/icon/icon-512.png +0 -0
- data/src/main/resources/icon/icon-64.png +0 -0
- data/vendors/Rakefile +1 -1
- metadata +13 -6
- data/docs/assets/circle_collisions.png +0 -0
- data/docs/favicon.ico +0 -0
@@ -71,66 +71,224 @@ public class Texture implements PConstants {
|
|
71
71
|
// This constant controls how many times pixelBuffer and rgbaPixels can be
|
72
72
|
// accessed before they are not released anymore. The idea is that if they
|
73
73
|
// have been used only a few times, it doesn't make sense to keep them around.
|
74
|
+
|
75
|
+
/**
|
76
|
+
*
|
77
|
+
*/
|
74
78
|
protected static final int MAX_UPDATES = 10;
|
75
79
|
|
76
80
|
// The minimum amount of free JVM's memory (in MB) before pixelBuffer and
|
77
81
|
// rgbaPixels are released every time after they are used.
|
82
|
+
|
83
|
+
/**
|
84
|
+
*
|
85
|
+
*/
|
78
86
|
protected static final int MIN_MEMORY = 5;
|
79
87
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
88
|
+
/**
|
89
|
+
*
|
90
|
+
*/
|
91
|
+
public int width,
|
92
|
+
|
93
|
+
/**
|
94
|
+
*
|
95
|
+
*/
|
96
|
+
height;
|
97
|
+
|
98
|
+
/**
|
99
|
+
*
|
100
|
+
*/
|
101
|
+
public int glName;
|
102
|
+
|
103
|
+
/**
|
104
|
+
*
|
105
|
+
*/
|
106
|
+
public int glTarget;
|
107
|
+
|
108
|
+
/**
|
109
|
+
*
|
110
|
+
*/
|
111
|
+
public int glFormat;
|
112
|
+
|
113
|
+
/**
|
114
|
+
*
|
115
|
+
*/
|
116
|
+
public int glMinFilter;
|
117
|
+
|
118
|
+
/**
|
119
|
+
*
|
120
|
+
*/
|
121
|
+
public int glMagFilter;
|
122
|
+
|
123
|
+
/**
|
124
|
+
*
|
125
|
+
*/
|
126
|
+
public int glWrapS;
|
127
|
+
|
128
|
+
/**
|
129
|
+
*
|
130
|
+
*/
|
131
|
+
public int glWrapT;
|
132
|
+
|
133
|
+
/**
|
134
|
+
*
|
135
|
+
*/
|
136
|
+
public int glWidth;
|
137
|
+
|
138
|
+
/**
|
139
|
+
*
|
140
|
+
*/
|
141
|
+
public int glHeight;
|
91
142
|
private GLResourceTexture glres;
|
92
143
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
144
|
+
/**
|
145
|
+
*
|
146
|
+
*/
|
147
|
+
protected PGraphicsOpenGL pg;
|
148
|
+
|
149
|
+
/**
|
150
|
+
*
|
151
|
+
*/
|
152
|
+
protected PGL pgl; // The interface between Processing and OpenGL.
|
153
|
+
|
154
|
+
/**
|
155
|
+
*
|
156
|
+
*/
|
157
|
+
protected int context; // The context that created this texture.
|
158
|
+
|
159
|
+
/**
|
160
|
+
*
|
161
|
+
*/
|
162
|
+
protected boolean colorBuffer; // true if it is the color attachment of
|
97
163
|
// FrameBuffer object.
|
98
164
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
165
|
+
/**
|
166
|
+
*
|
167
|
+
*/
|
168
|
+
protected boolean usingMipmaps;
|
169
|
+
|
170
|
+
/**
|
171
|
+
*
|
172
|
+
*/
|
173
|
+
protected boolean usingRepeat;
|
174
|
+
|
175
|
+
/**
|
176
|
+
*
|
177
|
+
*/
|
178
|
+
protected float maxTexcoordU;
|
179
|
+
|
180
|
+
/**
|
181
|
+
*
|
182
|
+
*/
|
183
|
+
protected float maxTexcoordV;
|
184
|
+
|
185
|
+
/**
|
186
|
+
*
|
187
|
+
*/
|
188
|
+
protected boolean bound;
|
189
|
+
|
190
|
+
/**
|
191
|
+
*
|
192
|
+
*/
|
193
|
+
protected boolean invertedX;
|
194
|
+
|
195
|
+
/**
|
196
|
+
*
|
197
|
+
*/
|
198
|
+
protected boolean invertedY;
|
199
|
+
|
200
|
+
/**
|
201
|
+
*
|
202
|
+
*/
|
203
|
+
protected int[] rgbaPixels = null;
|
204
|
+
|
205
|
+
/**
|
206
|
+
*
|
207
|
+
*/
|
208
|
+
protected IntBuffer pixelBuffer = null;
|
209
|
+
|
210
|
+
/**
|
211
|
+
*
|
212
|
+
*/
|
213
|
+
protected int[] edgePixels = null;
|
104
214
|
|
105
|
-
|
106
|
-
|
215
|
+
/**
|
216
|
+
*
|
217
|
+
*/
|
218
|
+
protected IntBuffer edgeBuffer = null;
|
107
219
|
|
108
|
-
|
109
|
-
|
220
|
+
/**
|
221
|
+
*
|
222
|
+
*/
|
223
|
+
protected FrameBuffer tempFbo = null;
|
110
224
|
|
111
|
-
|
112
|
-
|
225
|
+
/**
|
226
|
+
*
|
227
|
+
*/
|
228
|
+
protected int pixBufUpdateCount = 0;
|
113
229
|
|
114
|
-
|
115
|
-
|
116
|
-
|
230
|
+
/**
|
231
|
+
*
|
232
|
+
*/
|
233
|
+
protected int rgbaPixUpdateCount = 0;
|
117
234
|
|
118
235
|
/** Modified portion of the texture */
|
119
236
|
protected boolean modified;
|
120
|
-
protected int mx1, my1, mx2, my2;
|
121
237
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
238
|
+
/**
|
239
|
+
*
|
240
|
+
*/
|
241
|
+
protected int mx1,
|
242
|
+
|
243
|
+
/**
|
244
|
+
*
|
245
|
+
*/
|
246
|
+
my1,
|
247
|
+
|
248
|
+
/**
|
249
|
+
*
|
250
|
+
*/
|
251
|
+
mx2,
|
252
|
+
|
253
|
+
/**
|
254
|
+
*
|
255
|
+
*/
|
256
|
+
my2;
|
257
|
+
|
258
|
+
/**
|
259
|
+
*
|
260
|
+
*/
|
261
|
+
protected Object bufferSource;
|
262
|
+
|
263
|
+
/**
|
264
|
+
*
|
265
|
+
*/
|
266
|
+
protected LinkedList<BufferData> bufferCache = null;
|
267
|
+
|
268
|
+
/**
|
269
|
+
*
|
270
|
+
*/
|
271
|
+
protected LinkedList<BufferData> usedBuffers = null;
|
272
|
+
|
273
|
+
/**
|
274
|
+
*
|
275
|
+
*/
|
276
|
+
protected Method disposeBufferMethod;
|
277
|
+
|
278
|
+
/**
|
279
|
+
*
|
280
|
+
*/
|
281
|
+
public static final int MAX_BUFFER_CACHE_SIZE = 3;
|
127
282
|
|
128
283
|
////////////////////////////////////////////////////////////
|
129
284
|
|
130
285
|
// Constructors.
|
131
286
|
|
132
|
-
|
133
|
-
|
287
|
+
/**
|
288
|
+
*
|
289
|
+
* @param pg
|
290
|
+
*/
|
291
|
+
public Texture(PGraphicsOpenGL pg) {
|
134
292
|
this.pg = pg;
|
135
293
|
pgl = pg.pgl;
|
136
294
|
context = pgl.createEmptyContext();
|
@@ -142,8 +300,9 @@ public class Texture implements PConstants {
|
|
142
300
|
|
143
301
|
|
144
302
|
/**
|
145
|
-
* Creates an instance of PTexture with size width x height.
|
146
|
-
|
303
|
+
* Creates an instance of PTexture with size width x height.The texture is
|
304
|
+
initialized (empty) to that size.
|
305
|
+
* @param pg
|
147
306
|
* @param width int
|
148
307
|
* @param height int
|
149
308
|
*/
|
@@ -154,7 +313,8 @@ public class Texture implements PConstants {
|
|
154
313
|
|
155
314
|
/**
|
156
315
|
* Creates an instance of PTexture with size width x height and with the
|
157
|
-
* specified parameters.
|
316
|
+
* specified parameters.The texture is initialized (empty) to that size.
|
317
|
+
* @param pg
|
158
318
|
* @param width int
|
159
319
|
* @param height int
|
160
320
|
* @param params Parameters
|
@@ -216,6 +376,17 @@ public class Texture implements PConstants {
|
|
216
376
|
|
217
377
|
/**
|
218
378
|
* Initializes the texture using GL parameters
|
379
|
+
* @param width
|
380
|
+
* @param glWidth
|
381
|
+
* @param height
|
382
|
+
* @param glTarget
|
383
|
+
* @param glFormat
|
384
|
+
* @param glName
|
385
|
+
* @param glHeight
|
386
|
+
* @param glWrapS
|
387
|
+
* @param glMinFilter
|
388
|
+
* @param glMagFilter
|
389
|
+
* @param glWrapT
|
219
390
|
*/
|
220
391
|
public void init(int width, int height,
|
221
392
|
int glName, int glTarget, int glFormat,
|
@@ -244,8 +415,12 @@ public class Texture implements PConstants {
|
|
244
415
|
usingRepeat = glWrapS == PGL.REPEAT || glWrapT == PGL.REPEAT;
|
245
416
|
}
|
246
417
|
|
247
|
-
|
248
|
-
|
418
|
+
/**
|
419
|
+
*
|
420
|
+
* @param wide
|
421
|
+
* @param high
|
422
|
+
*/
|
423
|
+
public void resize(int wide, int high) {
|
249
424
|
// Disposing current resources.
|
250
425
|
dispose();
|
251
426
|
|
@@ -277,45 +452,99 @@ public class Texture implements PConstants {
|
|
277
452
|
|
278
453
|
// Set methods
|
279
454
|
|
455
|
+
/**
|
456
|
+
*
|
457
|
+
* @param tex
|
458
|
+
*/
|
459
|
+
|
280
460
|
|
281
461
|
public void set(Texture tex) {
|
282
462
|
copyTexture(tex, 0, 0, tex.width, tex.height, true);
|
283
463
|
}
|
284
464
|
|
285
|
-
|
286
|
-
|
465
|
+
/**
|
466
|
+
*
|
467
|
+
* @param tex
|
468
|
+
* @param x
|
469
|
+
* @param y
|
470
|
+
* @param w
|
471
|
+
* @param h
|
472
|
+
*/
|
473
|
+
public void set(Texture tex, int x, int y, int w, int h) {
|
287
474
|
copyTexture(tex, x, y, w, h, true);
|
288
475
|
}
|
289
476
|
|
290
|
-
|
291
|
-
|
477
|
+
/**
|
478
|
+
*
|
479
|
+
* @param texTarget
|
480
|
+
* @param texName
|
481
|
+
* @param texWidth
|
482
|
+
* @param texHeight
|
483
|
+
* @param w
|
484
|
+
* @param h
|
485
|
+
*/
|
486
|
+
public void set(int texTarget, int texName, int texWidth, int texHeight,
|
292
487
|
int w, int h) {
|
293
488
|
copyTexture(texTarget, texName, texWidth, texHeight, 0, 0, w, h, true);
|
294
489
|
}
|
295
490
|
|
296
|
-
|
297
|
-
|
491
|
+
/**
|
492
|
+
*
|
493
|
+
* @param texTarget
|
494
|
+
* @param texName
|
495
|
+
* @param texWidth
|
496
|
+
* @param texHeight
|
497
|
+
* @param target
|
498
|
+
* @param tex
|
499
|
+
* @param x
|
500
|
+
* @param y
|
501
|
+
* @param w
|
502
|
+
* @param h
|
503
|
+
*/
|
504
|
+
public void set(int texTarget, int texName, int texWidth, int texHeight,
|
298
505
|
int target, int tex, int x, int y, int w, int h) {
|
299
506
|
copyTexture(texTarget, texName, texWidth, texHeight, x, y, w, h, true);
|
300
507
|
}
|
301
508
|
|
302
|
-
|
303
|
-
|
509
|
+
/**
|
510
|
+
*
|
511
|
+
* @param pixels
|
512
|
+
*/
|
513
|
+
public void set(int[] pixels) {
|
304
514
|
set(pixels, 0, 0, width, height, ARGB);
|
305
515
|
}
|
306
516
|
|
307
|
-
|
308
|
-
|
517
|
+
/**
|
518
|
+
*
|
519
|
+
* @param pixels
|
520
|
+
* @param format
|
521
|
+
*/
|
522
|
+
public void set(int[] pixels, int format) {
|
309
523
|
set(pixels, 0, 0, width, height, format);
|
310
524
|
}
|
311
525
|
|
312
|
-
|
313
|
-
|
526
|
+
/**
|
527
|
+
*
|
528
|
+
* @param pixels
|
529
|
+
* @param x
|
530
|
+
* @param y
|
531
|
+
* @param w
|
532
|
+
* @param h
|
533
|
+
*/
|
534
|
+
public void set(int[] pixels, int x, int y, int w, int h) {
|
314
535
|
set(pixels, x, y, w, h, ARGB);
|
315
536
|
}
|
316
537
|
|
317
|
-
|
318
|
-
|
538
|
+
/**
|
539
|
+
*
|
540
|
+
* @param pixels
|
541
|
+
* @param x
|
542
|
+
* @param y
|
543
|
+
* @param w
|
544
|
+
* @param h
|
545
|
+
* @param format
|
546
|
+
*/
|
547
|
+
public void set(int[] pixels, int x, int y, int w, int h, int format) {
|
319
548
|
if (pixels == null) {
|
320
549
|
PGraphics.showWarning("The pixels array is null.");
|
321
550
|
return;
|
@@ -371,20 +600,39 @@ public class Texture implements PConstants {
|
|
371
600
|
|
372
601
|
// Native set methods
|
373
602
|
|
603
|
+
/**
|
604
|
+
*
|
605
|
+
* @param pixels
|
606
|
+
*/
|
607
|
+
|
374
608
|
|
375
609
|
public void setNative(int[] pixels) {
|
376
610
|
setNative(pixels, 0, 0, width, height);
|
377
611
|
}
|
378
612
|
|
379
|
-
|
380
|
-
|
613
|
+
/**
|
614
|
+
*
|
615
|
+
* @param pixels
|
616
|
+
* @param x
|
617
|
+
* @param y
|
618
|
+
* @param w
|
619
|
+
* @param h
|
620
|
+
*/
|
621
|
+
public void setNative(int[] pixels, int x, int y, int w, int h) {
|
381
622
|
updatePixelBuffer(pixels);
|
382
623
|
setNative(pixelBuffer, x, y, w, h);
|
383
624
|
releasePixelBuffer();
|
384
625
|
}
|
385
626
|
|
386
|
-
|
387
|
-
|
627
|
+
/**
|
628
|
+
*
|
629
|
+
* @param pixBuf
|
630
|
+
* @param x
|
631
|
+
* @param y
|
632
|
+
* @param w
|
633
|
+
* @param h
|
634
|
+
*/
|
635
|
+
public void setNative(IntBuffer pixBuf, int x, int y, int w, int h) {
|
388
636
|
if (pixBuf == null) {
|
389
637
|
pixBuf = null;
|
390
638
|
PGraphics.showWarning("The pixel buffer is null.");
|
@@ -435,7 +683,8 @@ public class Texture implements PConstants {
|
|
435
683
|
|
436
684
|
|
437
685
|
/**
|
438
|
-
* Copy texture to pixels.
|
686
|
+
* Copy texture to pixels.Involves video memory to main memory transfer (slow).
|
687
|
+
* @param pixels
|
439
688
|
*/
|
440
689
|
public void get(int[] pixels) {
|
441
690
|
if (pixels == null) {
|
@@ -472,24 +721,56 @@ public class Texture implements PConstants {
|
|
472
721
|
// Put methods (the source texture is not resized to cover the entire
|
473
722
|
// destination).
|
474
723
|
|
724
|
+
/**
|
725
|
+
*
|
726
|
+
* @param tex
|
727
|
+
*/
|
728
|
+
|
475
729
|
|
476
730
|
public void put(Texture tex) {
|
477
731
|
copyTexture(tex, 0, 0, tex.width, tex.height, false);
|
478
732
|
}
|
479
733
|
|
480
|
-
|
481
|
-
|
734
|
+
/**
|
735
|
+
*
|
736
|
+
* @param tex
|
737
|
+
* @param x
|
738
|
+
* @param y
|
739
|
+
* @param w
|
740
|
+
* @param h
|
741
|
+
*/
|
742
|
+
public void put(Texture tex, int x, int y, int w, int h) {
|
482
743
|
copyTexture(tex, x, y, w, h, false);
|
483
744
|
}
|
484
745
|
|
485
|
-
|
486
|
-
|
746
|
+
/**
|
747
|
+
*
|
748
|
+
* @param texTarget
|
749
|
+
* @param texName
|
750
|
+
* @param texWidth
|
751
|
+
* @param texHeight
|
752
|
+
* @param w
|
753
|
+
* @param h
|
754
|
+
*/
|
755
|
+
public void put(int texTarget, int texName, int texWidth, int texHeight,
|
487
756
|
int w, int h) {
|
488
757
|
copyTexture(texTarget, texName, texWidth, texHeight, 0, 0, w, h, false);
|
489
758
|
}
|
490
759
|
|
491
|
-
|
492
|
-
|
760
|
+
/**
|
761
|
+
*
|
762
|
+
* @param texTarget
|
763
|
+
* @param texName
|
764
|
+
* @param texWidth
|
765
|
+
* @param texHeight
|
766
|
+
* @param target
|
767
|
+
* @param tex
|
768
|
+
* @param x
|
769
|
+
* @param y
|
770
|
+
* @param w
|
771
|
+
* @param h
|
772
|
+
*/
|
773
|
+
public void put(int texTarget, int texName, int texWidth, int texHeight,
|
493
774
|
int target, int tex, int x, int y, int w, int h) {
|
494
775
|
copyTexture(texTarget, texName, texWidth, texHeight, x, y, w, h, false);
|
495
776
|
}
|
@@ -508,8 +789,12 @@ public class Texture implements PConstants {
|
|
508
789
|
return usingMipmaps;
|
509
790
|
}
|
510
791
|
|
511
|
-
|
512
|
-
|
792
|
+
/**
|
793
|
+
*
|
794
|
+
* @param mipmaps
|
795
|
+
* @param sampling
|
796
|
+
*/
|
797
|
+
public void usingMipmaps(boolean mipmaps, int sampling) {
|
513
798
|
int glMagFilter0 = glMagFilter;
|
514
799
|
int glMinFilter0 = glMinFilter;
|
515
800
|
if (mipmaps) {
|
@@ -576,8 +861,11 @@ public class Texture implements PConstants {
|
|
576
861
|
return usingRepeat;
|
577
862
|
}
|
578
863
|
|
579
|
-
|
580
|
-
|
864
|
+
/**
|
865
|
+
*
|
866
|
+
* @param repeat
|
867
|
+
*/
|
868
|
+
public void usingRepeat(boolean repeat) {
|
581
869
|
if (repeat) {
|
582
870
|
glWrapS = PGL.REPEAT;
|
583
871
|
glWrapT = PGL.REPEAT;
|
@@ -649,8 +937,11 @@ public class Texture implements PConstants {
|
|
649
937
|
invertedY = v;
|
650
938
|
}
|
651
939
|
|
652
|
-
|
653
|
-
|
940
|
+
/**
|
941
|
+
*
|
942
|
+
* @return
|
943
|
+
*/
|
944
|
+
public int currentSampling() {
|
654
945
|
if (glMagFilter == PGL.NEAREST && glMinFilter == PGL.NEAREST) {
|
655
946
|
return POINT;
|
656
947
|
} else if (glMagFilter == PGL.NEAREST &&
|
@@ -671,8 +962,10 @@ public class Texture implements PConstants {
|
|
671
962
|
|
672
963
|
// Bind/unbind
|
673
964
|
|
674
|
-
|
675
|
-
|
965
|
+
/**
|
966
|
+
*
|
967
|
+
*/
|
968
|
+
public void bind() {
|
676
969
|
// Binding a texture automatically enables texturing for the
|
677
970
|
// texture target from that moment onwards. Unbinding the texture
|
678
971
|
// won't disable texturing.
|
@@ -683,8 +976,10 @@ public class Texture implements PConstants {
|
|
683
976
|
bound = true;
|
684
977
|
}
|
685
978
|
|
686
|
-
|
687
|
-
|
979
|
+
/**
|
980
|
+
*
|
981
|
+
*/
|
982
|
+
public void unbind() {
|
688
983
|
if (pgl.textureIsBound(glTarget, glName)) {
|
689
984
|
// We don't want to unbind another texture
|
690
985
|
// that might be bound instead of this one.
|
@@ -699,8 +994,11 @@ public class Texture implements PConstants {
|
|
699
994
|
bound = false;
|
700
995
|
}
|
701
996
|
|
702
|
-
|
703
|
-
|
997
|
+
/**
|
998
|
+
*
|
999
|
+
* @return
|
1000
|
+
*/
|
1001
|
+
public boolean bound() {
|
704
1002
|
// A true result might not necessarily mean that texturing is enabled
|
705
1003
|
// (a texture can be bound to the target, but texturing is disabled).
|
706
1004
|
return bound;
|
@@ -711,53 +1009,89 @@ public class Texture implements PConstants {
|
|
711
1009
|
|
712
1010
|
// Modified flag
|
713
1011
|
|
1012
|
+
/**
|
1013
|
+
*
|
1014
|
+
* @return
|
1015
|
+
*/
|
1016
|
+
|
714
1017
|
|
715
1018
|
public boolean isModified() {
|
716
1019
|
return modified;
|
717
1020
|
}
|
718
1021
|
|
719
|
-
|
720
|
-
|
1022
|
+
/**
|
1023
|
+
*
|
1024
|
+
*/
|
1025
|
+
public void setModified() {
|
721
1026
|
modified = true;
|
722
1027
|
}
|
723
1028
|
|
724
|
-
|
725
|
-
|
1029
|
+
/**
|
1030
|
+
*
|
1031
|
+
* @param m
|
1032
|
+
*/
|
1033
|
+
public void setModified(boolean m) {
|
726
1034
|
modified = m;
|
727
1035
|
}
|
728
1036
|
|
729
|
-
|
730
|
-
|
1037
|
+
/**
|
1038
|
+
*
|
1039
|
+
* @return
|
1040
|
+
*/
|
1041
|
+
public int getModifiedX1() {
|
731
1042
|
return mx1;
|
732
1043
|
}
|
733
1044
|
|
734
|
-
|
735
|
-
|
1045
|
+
/**
|
1046
|
+
*
|
1047
|
+
* @return
|
1048
|
+
*/
|
1049
|
+
public int getModifiedX2() {
|
736
1050
|
return mx2;
|
737
1051
|
}
|
738
1052
|
|
739
|
-
|
740
|
-
|
1053
|
+
/**
|
1054
|
+
*
|
1055
|
+
* @return
|
1056
|
+
*/
|
1057
|
+
public int getModifiedY1() {
|
741
1058
|
return my1;
|
742
1059
|
}
|
743
1060
|
|
744
|
-
|
745
|
-
|
1061
|
+
/**
|
1062
|
+
*
|
1063
|
+
* @return
|
1064
|
+
*/
|
1065
|
+
public int getModifiedY2() {
|
746
1066
|
return my2;
|
747
1067
|
}
|
748
1068
|
|
749
|
-
|
750
|
-
|
1069
|
+
/**
|
1070
|
+
*
|
1071
|
+
*/
|
1072
|
+
public void updateTexels() {
|
751
1073
|
updateTexelsImpl(0, 0, width, height);
|
752
1074
|
}
|
753
1075
|
|
754
|
-
|
755
|
-
|
1076
|
+
/**
|
1077
|
+
*
|
1078
|
+
* @param x
|
1079
|
+
* @param y
|
1080
|
+
* @param w
|
1081
|
+
* @param h
|
1082
|
+
*/
|
1083
|
+
public void updateTexels(int x, int y, int w, int h) {
|
756
1084
|
updateTexelsImpl(x, y, w, h);
|
757
1085
|
}
|
758
1086
|
|
759
|
-
|
760
|
-
|
1087
|
+
/**
|
1088
|
+
*
|
1089
|
+
* @param x
|
1090
|
+
* @param y
|
1091
|
+
* @param w
|
1092
|
+
* @param h
|
1093
|
+
*/
|
1094
|
+
protected void updateTexelsImpl(int x, int y, int w, int h) {
|
761
1095
|
int x2 = x + w;
|
762
1096
|
int y2 = y + h;
|
763
1097
|
|
@@ -781,21 +1115,29 @@ public class Texture implements PConstants {
|
|
781
1115
|
}
|
782
1116
|
}
|
783
1117
|
|
784
|
-
|
785
|
-
|
1118
|
+
/**
|
1119
|
+
*
|
1120
|
+
* @param len
|
1121
|
+
*/
|
1122
|
+
protected void loadPixels(int len) {
|
786
1123
|
if (rgbaPixels == null || rgbaPixels.length < len) {
|
787
1124
|
rgbaPixels = new int[len];
|
788
1125
|
}
|
789
1126
|
}
|
790
1127
|
|
791
|
-
|
792
|
-
|
1128
|
+
/**
|
1129
|
+
*
|
1130
|
+
* @param pixels
|
1131
|
+
*/
|
1132
|
+
protected void updatePixelBuffer(int[] pixels) {
|
793
1133
|
pixelBuffer = PGL.updateIntBuffer(pixelBuffer, pixels, true);
|
794
1134
|
pixBufUpdateCount++;
|
795
1135
|
}
|
796
1136
|
|
797
|
-
|
798
|
-
|
1137
|
+
/**
|
1138
|
+
*
|
1139
|
+
*/
|
1140
|
+
protected void manualMipmap() {
|
799
1141
|
// TODO: finish manual mipmap generation,
|
800
1142
|
// https://github.com/processing/processing/issues/3335
|
801
1143
|
}
|
@@ -805,14 +1147,25 @@ public class Texture implements PConstants {
|
|
805
1147
|
|
806
1148
|
// Buffer sink interface.
|
807
1149
|
|
1150
|
+
/**
|
1151
|
+
*
|
1152
|
+
* @param source
|
1153
|
+
*/
|
1154
|
+
|
808
1155
|
|
809
1156
|
public void setBufferSource(Object source) {
|
810
1157
|
bufferSource = source;
|
811
1158
|
getSourceMethods();
|
812
1159
|
}
|
813
1160
|
|
814
|
-
|
815
|
-
|
1161
|
+
/**
|
1162
|
+
*
|
1163
|
+
* @param natRef
|
1164
|
+
* @param byteBuf
|
1165
|
+
* @param w
|
1166
|
+
* @param h
|
1167
|
+
*/
|
1168
|
+
public void copyBufferFromSource(Object natRef, ByteBuffer byteBuf,
|
816
1169
|
int w, int h) {
|
817
1170
|
if (bufferCache == null) {
|
818
1171
|
bufferCache = new LinkedList<BufferData>();
|
@@ -831,8 +1184,10 @@ public class Texture implements PConstants {
|
|
831
1184
|
}
|
832
1185
|
}
|
833
1186
|
|
834
|
-
|
835
|
-
|
1187
|
+
/**
|
1188
|
+
*
|
1189
|
+
*/
|
1190
|
+
public void disposeSourceBuffer() {
|
836
1191
|
if (usedBuffers == null) return;
|
837
1192
|
|
838
1193
|
while (0 < usedBuffers.size()) {
|
@@ -848,7 +1203,11 @@ public class Texture implements PConstants {
|
|
848
1203
|
}
|
849
1204
|
}
|
850
1205
|
|
851
|
-
|
1206
|
+
/**
|
1207
|
+
*
|
1208
|
+
* @param pixels
|
1209
|
+
*/
|
1210
|
+
public void getBufferPixels(int[] pixels) {
|
852
1211
|
// We get the buffer either from the used buffers or the cache, giving
|
853
1212
|
// priority to the used buffers. Why? Because the used buffer was already
|
854
1213
|
// transferred to the texture, so the pixels should be in sync with the
|
@@ -881,19 +1240,28 @@ public class Texture implements PConstants {
|
|
881
1240
|
}
|
882
1241
|
}
|
883
1242
|
|
884
|
-
|
885
|
-
|
1243
|
+
/**
|
1244
|
+
*
|
1245
|
+
* @return
|
1246
|
+
*/
|
1247
|
+
public boolean hasBufferSource() {
|
886
1248
|
return bufferSource != null;
|
887
1249
|
}
|
888
1250
|
|
889
|
-
|
890
|
-
|
1251
|
+
/**
|
1252
|
+
*
|
1253
|
+
* @return
|
1254
|
+
*/
|
1255
|
+
public boolean hasBuffers() {
|
891
1256
|
return bufferSource != null && bufferCache != null &&
|
892
1257
|
0 < bufferCache.size();
|
893
1258
|
}
|
894
1259
|
|
895
|
-
|
896
|
-
|
1260
|
+
/**
|
1261
|
+
*
|
1262
|
+
* @return
|
1263
|
+
*/
|
1264
|
+
protected boolean bufferUpdate() {
|
897
1265
|
BufferData data = null;
|
898
1266
|
try {
|
899
1267
|
data = bufferCache.remove(0);
|
@@ -921,8 +1289,10 @@ public class Texture implements PConstants {
|
|
921
1289
|
}
|
922
1290
|
}
|
923
1291
|
|
924
|
-
|
925
|
-
|
1292
|
+
/**
|
1293
|
+
*
|
1294
|
+
*/
|
1295
|
+
protected void getSourceMethods() {
|
926
1296
|
try {
|
927
1297
|
disposeBufferMethod = bufferSource.getClass().
|
928
1298
|
getMethod("disposeBuffer", new Class[] { Object.class });
|
@@ -1097,6 +1467,12 @@ public class Texture implements PConstants {
|
|
1097
1467
|
|
1098
1468
|
// Allocate/release texture.
|
1099
1469
|
|
1470
|
+
/**
|
1471
|
+
*
|
1472
|
+
* @param w
|
1473
|
+
* @param h
|
1474
|
+
*/
|
1475
|
+
|
1100
1476
|
|
1101
1477
|
protected void setSize(int w, int h) {
|
1102
1478
|
width = w;
|
@@ -1183,8 +1559,11 @@ public class Texture implements PConstants {
|
|
1183
1559
|
}
|
1184
1560
|
}
|
1185
1561
|
|
1186
|
-
|
1187
|
-
|
1562
|
+
/**
|
1563
|
+
*
|
1564
|
+
* @return
|
1565
|
+
*/
|
1566
|
+
protected boolean contextIsOutdated() {
|
1188
1567
|
boolean outdated = !pgl.contextIsCurrent(context);
|
1189
1568
|
if (outdated) {
|
1190
1569
|
dispose();
|
@@ -1192,13 +1571,19 @@ public class Texture implements PConstants {
|
|
1192
1571
|
return outdated;
|
1193
1572
|
}
|
1194
1573
|
|
1195
|
-
|
1196
|
-
|
1574
|
+
/**
|
1575
|
+
*
|
1576
|
+
* @param value
|
1577
|
+
*/
|
1578
|
+
public void colorBuffer(boolean value) {
|
1197
1579
|
colorBuffer = value;
|
1198
1580
|
}
|
1199
1581
|
|
1200
|
-
|
1201
|
-
|
1582
|
+
/**
|
1583
|
+
*
|
1584
|
+
* @return
|
1585
|
+
*/
|
1586
|
+
public boolean colorBuffer() {
|
1202
1587
|
return colorBuffer;
|
1203
1588
|
}
|
1204
1589
|
|
@@ -1209,6 +1594,16 @@ public class Texture implements PConstants {
|
|
1209
1594
|
|
1210
1595
|
|
1211
1596
|
// Copies source texture tex into this.
|
1597
|
+
|
1598
|
+
/**
|
1599
|
+
*
|
1600
|
+
* @param tex
|
1601
|
+
* @param x
|
1602
|
+
* @param y
|
1603
|
+
* @param w
|
1604
|
+
* @param h
|
1605
|
+
* @param scale
|
1606
|
+
*/
|
1212
1607
|
protected void copyTexture(Texture tex, int x, int y, int w, int h,
|
1213
1608
|
boolean scale) {
|
1214
1609
|
if (tex == null) {
|
@@ -1254,6 +1649,19 @@ public class Texture implements PConstants {
|
|
1254
1649
|
|
1255
1650
|
|
1256
1651
|
// Copies source texture tex into this.
|
1652
|
+
|
1653
|
+
/**
|
1654
|
+
*
|
1655
|
+
* @param texTarget
|
1656
|
+
* @param texName
|
1657
|
+
* @param texWidth
|
1658
|
+
* @param texHeight
|
1659
|
+
* @param x
|
1660
|
+
* @param y
|
1661
|
+
* @param w
|
1662
|
+
* @param h
|
1663
|
+
* @param scale
|
1664
|
+
*/
|
1257
1665
|
protected void copyTexture(int texTarget, int texName,
|
1258
1666
|
int texWidth, int texHeight,
|
1259
1667
|
int x, int y, int w, int h, boolean scale) {
|
@@ -1294,8 +1702,11 @@ public class Texture implements PConstants {
|
|
1294
1702
|
updateTexels(x, y, w, h);
|
1295
1703
|
}
|
1296
1704
|
|
1297
|
-
|
1298
|
-
|
1705
|
+
/**
|
1706
|
+
*
|
1707
|
+
* @param src
|
1708
|
+
*/
|
1709
|
+
protected void copyObject(Texture src) {
|
1299
1710
|
// The OpenGL texture of this object is replaced with the one from the
|
1300
1711
|
// source object, so we delete the former to avoid resource wasting.
|
1301
1712
|
dispose();
|
@@ -1324,6 +1735,10 @@ public class Texture implements PConstants {
|
|
1324
1735
|
|
1325
1736
|
// Releases the memory used by pixelBuffer either if the buffer hasn't been
|
1326
1737
|
// used many times yet, or if the JVM is running low in free memory.
|
1738
|
+
|
1739
|
+
/**
|
1740
|
+
*
|
1741
|
+
*/
|
1327
1742
|
protected void releasePixelBuffer() {
|
1328
1743
|
double freeMB = Runtime.getRuntime().freeMemory() / 1E6;
|
1329
1744
|
if (pixBufUpdateCount < MAX_UPDATES || freeMB < MIN_MEMORY) {
|
@@ -1334,6 +1749,10 @@ public class Texture implements PConstants {
|
|
1334
1749
|
|
1335
1750
|
// Releases the memory used by rgbaPixels either if the array hasn't been
|
1336
1751
|
// used many times yet, or if the JVM is running low in free memory.
|
1752
|
+
|
1753
|
+
/**
|
1754
|
+
*
|
1755
|
+
*/
|
1337
1756
|
protected void releaseRGBAPixels() {
|
1338
1757
|
double freeMB = Runtime.getRuntime().freeMemory() / 1E6;
|
1339
1758
|
if (rgbaPixUpdateCount < MAX_UPDATES || freeMB < MIN_MEMORY) {
|
@@ -1346,6 +1765,11 @@ public class Texture implements PConstants {
|
|
1346
1765
|
|
1347
1766
|
// Parameter handling
|
1348
1767
|
|
1768
|
+
/**
|
1769
|
+
*
|
1770
|
+
* @return
|
1771
|
+
*/
|
1772
|
+
|
1349
1773
|
|
1350
1774
|
public Parameters getParameters() {
|
1351
1775
|
Parameters res = new Parameters();
|
@@ -1474,8 +1898,14 @@ public class Texture implements PConstants {
|
|
1474
1898
|
invertedY = false;
|
1475
1899
|
}
|
1476
1900
|
|
1477
|
-
|
1478
|
-
|
1901
|
+
/**
|
1902
|
+
*
|
1903
|
+
* @param x
|
1904
|
+
* @param y
|
1905
|
+
* @param w
|
1906
|
+
* @param h
|
1907
|
+
*/
|
1908
|
+
protected void fillEdges(int x, int y, int w, int h) {
|
1479
1909
|
if ((width < glWidth || height < glHeight) && (x + w == width || y + h == height)) {
|
1480
1910
|
if (x + w == width) {
|
1481
1911
|
int ew = glWidth - width;
|
@@ -1565,7 +1995,11 @@ public class Texture implements PConstants {
|
|
1565
1995
|
this.wrapV = CLAMP;
|
1566
1996
|
}
|
1567
1997
|
|
1568
|
-
|
1998
|
+
/**
|
1999
|
+
*
|
2000
|
+
* @param format
|
2001
|
+
*/
|
2002
|
+
public Parameters(int format) {
|
1569
2003
|
this.target = TEX2D;
|
1570
2004
|
this.format = format;
|
1571
2005
|
this.sampling = BILINEAR;
|
@@ -1574,7 +2008,12 @@ public class Texture implements PConstants {
|
|
1574
2008
|
this.wrapV = CLAMP;
|
1575
2009
|
}
|
1576
2010
|
|
1577
|
-
|
2011
|
+
/**
|
2012
|
+
*
|
2013
|
+
* @param format
|
2014
|
+
* @param sampling
|
2015
|
+
*/
|
2016
|
+
public Parameters(int format, int sampling) {
|
1578
2017
|
this.target = TEX2D;
|
1579
2018
|
this.format = format;
|
1580
2019
|
this.sampling = sampling;
|
@@ -1583,7 +2022,13 @@ public class Texture implements PConstants {
|
|
1583
2022
|
this.wrapV = CLAMP;
|
1584
2023
|
}
|
1585
2024
|
|
1586
|
-
|
2025
|
+
/**
|
2026
|
+
*
|
2027
|
+
* @param format
|
2028
|
+
* @param sampling
|
2029
|
+
* @param mipmaps
|
2030
|
+
*/
|
2031
|
+
public Parameters(int format, int sampling, boolean mipmaps) {
|
1587
2032
|
this.target = TEX2D;
|
1588
2033
|
this.format = format;
|
1589
2034
|
this.mipmaps = mipmaps;
|
@@ -1596,7 +2041,14 @@ public class Texture implements PConstants {
|
|
1596
2041
|
this.wrapV = CLAMP;
|
1597
2042
|
}
|
1598
2043
|
|
1599
|
-
|
2044
|
+
/**
|
2045
|
+
*
|
2046
|
+
* @param format
|
2047
|
+
* @param sampling
|
2048
|
+
* @param mipmaps
|
2049
|
+
* @param wrap
|
2050
|
+
*/
|
2051
|
+
public Parameters(int format, int sampling, boolean mipmaps, int wrap) {
|
1600
2052
|
this.target = TEX2D;
|
1601
2053
|
this.format = format;
|
1602
2054
|
this.mipmaps = mipmaps;
|
@@ -1609,26 +2061,49 @@ public class Texture implements PConstants {
|
|
1609
2061
|
this.wrapV = wrap;
|
1610
2062
|
}
|
1611
2063
|
|
1612
|
-
|
2064
|
+
/**
|
2065
|
+
*
|
2066
|
+
* @param src
|
2067
|
+
*/
|
2068
|
+
public Parameters(Parameters src) {
|
1613
2069
|
set(src);
|
1614
2070
|
}
|
1615
2071
|
|
1616
|
-
|
2072
|
+
/**
|
2073
|
+
*
|
2074
|
+
* @param format
|
2075
|
+
*/
|
2076
|
+
public void set(int format) {
|
1617
2077
|
this.format = format;
|
1618
2078
|
}
|
1619
2079
|
|
1620
|
-
|
2080
|
+
/**
|
2081
|
+
*
|
2082
|
+
* @param format
|
2083
|
+
* @param sampling
|
2084
|
+
*/
|
2085
|
+
public void set(int format, int sampling) {
|
1621
2086
|
this.format = format;
|
1622
2087
|
this.sampling = sampling;
|
1623
2088
|
}
|
1624
2089
|
|
1625
|
-
|
2090
|
+
/**
|
2091
|
+
*
|
2092
|
+
* @param format
|
2093
|
+
* @param sampling
|
2094
|
+
* @param mipmaps
|
2095
|
+
*/
|
2096
|
+
public void set(int format, int sampling, boolean mipmaps) {
|
1626
2097
|
this.format = format;
|
1627
2098
|
this.sampling = sampling;
|
1628
2099
|
this.mipmaps = mipmaps;
|
1629
2100
|
}
|
1630
2101
|
|
1631
|
-
|
2102
|
+
/**
|
2103
|
+
*
|
2104
|
+
* @param src
|
2105
|
+
*/
|
2106
|
+
public void set(Parameters src) {
|
1632
2107
|
this.target = src.target;
|
1633
2108
|
this.format = src.format;
|
1634
2109
|
this.sampling = src.sampling;
|