propane 3.9.0-java → 3.10.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/CHANGELOG.md +2 -2
  4. data/README.md +3 -3
  5. data/Rakefile +6 -6
  6. data/lib/java/japplemenubar/JAppleMenuBar.java +88 -0
  7. data/lib/java/japplemenubar/libjAppleMenuBar.jnilib +0 -0
  8. data/lib/java/monkstone/ColorUtil.java +127 -0
  9. data/lib/java/monkstone/MathToolModule.java +287 -0
  10. data/lib/java/monkstone/PropaneLibrary.java +46 -0
  11. data/lib/java/monkstone/core/LibraryProxy.java +136 -0
  12. data/lib/java/monkstone/fastmath/DegLutTables.java +111 -0
  13. data/lib/java/monkstone/fastmath/Deglut.java +71 -0
  14. data/lib/java/monkstone/fastmath/package-info.java +6 -0
  15. data/lib/java/monkstone/filechooser/Chooser.java +39 -0
  16. data/{src/main → lib}/java/monkstone/noise/FastTerrain.java +0 -0
  17. data/{src/main → lib}/java/monkstone/noise/Noise.java +0 -0
  18. data/{src/main → lib}/java/monkstone/noise/NoiseGenerator.java +0 -0
  19. data/{src/main → lib}/java/monkstone/noise/NoiseMode.java +0 -0
  20. data/lib/java/monkstone/noise/OpenSimplex2F.java +881 -0
  21. data/lib/java/monkstone/noise/OpenSimplex2S.java +1106 -0
  22. data/{src/main → lib}/java/monkstone/noise/SmoothTerrain.java +0 -0
  23. data/lib/java/monkstone/slider/CustomHorizontalSlider.java +164 -0
  24. data/lib/java/monkstone/slider/CustomVerticalSlider.java +178 -0
  25. data/lib/java/monkstone/slider/SimpleHorizontalSlider.java +145 -0
  26. data/lib/java/monkstone/slider/SimpleSlider.java +166 -0
  27. data/lib/java/monkstone/slider/SimpleVerticalSlider.java +157 -0
  28. data/lib/java/monkstone/slider/Slider.java +61 -0
  29. data/lib/java/monkstone/slider/SliderBar.java +245 -0
  30. data/lib/java/monkstone/slider/SliderGroup.java +56 -0
  31. data/lib/java/monkstone/slider/WheelHandler.java +35 -0
  32. data/lib/java/monkstone/vecmath/GfxRender.java +86 -0
  33. data/lib/java/monkstone/vecmath/JRender.java +56 -0
  34. data/lib/java/monkstone/vecmath/ShapeRender.java +87 -0
  35. data/lib/java/monkstone/vecmath/package-info.java +20 -0
  36. data/lib/java/monkstone/vecmath/vec2/Vec2.java +802 -0
  37. data/lib/java/monkstone/vecmath/vec2/package-info.java +6 -0
  38. data/lib/java/monkstone/vecmath/vec3/Vec3.java +727 -0
  39. data/lib/java/monkstone/vecmath/vec3/package-info.java +6 -0
  40. data/lib/java/monkstone/videoevent/CaptureEvent.java +27 -0
  41. data/lib/java/monkstone/videoevent/MovieEvent.java +32 -0
  42. data/lib/java/monkstone/videoevent/package-info.java +20 -0
  43. data/lib/java/processing/awt/PGraphicsJava2D.java +3040 -0
  44. data/lib/java/processing/awt/PImageAWT.java +377 -0
  45. data/lib/java/processing/awt/PShapeJava2D.java +387 -0
  46. data/lib/java/processing/awt/PSurfaceAWT.java +1581 -0
  47. data/lib/java/processing/awt/ShimAWT.java +581 -0
  48. data/lib/java/processing/core/PApplet.java +15156 -0
  49. data/lib/java/processing/core/PConstants.java +523 -0
  50. data/lib/java/processing/core/PFont.java +1126 -0
  51. data/lib/java/processing/core/PGraphics.java +8600 -0
  52. data/lib/java/processing/core/PImage.java +3377 -0
  53. data/lib/java/processing/core/PMatrix.java +208 -0
  54. data/lib/java/processing/core/PMatrix2D.java +562 -0
  55. data/lib/java/processing/core/PMatrix3D.java +890 -0
  56. data/lib/java/processing/core/PShape.java +3561 -0
  57. data/lib/java/processing/core/PShapeOBJ.java +483 -0
  58. data/lib/java/processing/core/PShapeSVG.java +2016 -0
  59. data/lib/java/processing/core/PStyle.java +63 -0
  60. data/lib/java/processing/core/PSurface.java +198 -0
  61. data/lib/java/processing/core/PSurfaceNone.java +431 -0
  62. data/lib/java/processing/core/PVector.java +1066 -0
  63. data/lib/java/processing/core/ThinkDifferent.java +115 -0
  64. data/lib/java/processing/data/DoubleDict.java +850 -0
  65. data/lib/java/processing/data/DoubleList.java +928 -0
  66. data/lib/java/processing/data/FloatDict.java +847 -0
  67. data/lib/java/processing/data/FloatList.java +936 -0
  68. data/lib/java/processing/data/IntDict.java +807 -0
  69. data/lib/java/processing/data/IntList.java +936 -0
  70. data/lib/java/processing/data/JSONArray.java +1260 -0
  71. data/lib/java/processing/data/JSONObject.java +2282 -0
  72. data/lib/java/processing/data/JSONTokener.java +435 -0
  73. data/lib/java/processing/data/LongDict.java +802 -0
  74. data/lib/java/processing/data/LongList.java +937 -0
  75. data/lib/java/processing/data/Sort.java +46 -0
  76. data/lib/java/processing/data/StringDict.java +613 -0
  77. data/lib/java/processing/data/StringList.java +800 -0
  78. data/lib/java/processing/data/Table.java +4936 -0
  79. data/lib/java/processing/data/TableRow.java +198 -0
  80. data/lib/java/processing/data/XML.java +1156 -0
  81. data/lib/java/processing/dxf/RawDXF.java +404 -0
  82. data/lib/java/processing/event/Event.java +125 -0
  83. data/lib/java/processing/event/KeyEvent.java +70 -0
  84. data/lib/java/processing/event/MouseEvent.java +114 -0
  85. data/lib/java/processing/event/TouchEvent.java +57 -0
  86. data/lib/java/processing/javafx/PGraphicsFX2D.java +32 -0
  87. data/lib/java/processing/javafx/PSurfaceFX.java +173 -0
  88. data/lib/java/processing/net/Client.java +744 -0
  89. data/lib/java/processing/net/Server.java +388 -0
  90. data/lib/java/processing/opengl/FontTexture.java +378 -0
  91. data/lib/java/processing/opengl/FrameBuffer.java +513 -0
  92. data/lib/java/processing/opengl/LinePath.java +627 -0
  93. data/lib/java/processing/opengl/LineStroker.java +681 -0
  94. data/lib/java/processing/opengl/PGL.java +3483 -0
  95. data/lib/java/processing/opengl/PGraphics2D.java +615 -0
  96. data/lib/java/processing/opengl/PGraphics3D.java +281 -0
  97. data/lib/java/processing/opengl/PGraphicsOpenGL.java +13753 -0
  98. data/lib/java/processing/opengl/PJOGL.java +2008 -0
  99. data/lib/java/processing/opengl/PShader.java +1484 -0
  100. data/lib/java/processing/opengl/PShapeOpenGL.java +5269 -0
  101. data/lib/java/processing/opengl/PSurfaceJOGL.java +1385 -0
  102. data/lib/java/processing/opengl/Texture.java +1696 -0
  103. data/lib/java/processing/opengl/VertexBuffer.java +88 -0
  104. data/lib/java/processing/opengl/cursors/arrow.png +0 -0
  105. data/lib/java/processing/opengl/cursors/cross.png +0 -0
  106. data/lib/java/processing/opengl/cursors/hand.png +0 -0
  107. data/lib/java/processing/opengl/cursors/license.txt +27 -0
  108. data/lib/java/processing/opengl/cursors/move.png +0 -0
  109. data/lib/java/processing/opengl/cursors/text.png +0 -0
  110. data/lib/java/processing/opengl/cursors/wait.png +0 -0
  111. data/lib/java/processing/opengl/shaders/ColorFrag.glsl +32 -0
  112. data/lib/java/processing/opengl/shaders/ColorVert.glsl +34 -0
  113. data/lib/java/processing/opengl/shaders/LightFrag.glsl +33 -0
  114. data/lib/java/processing/opengl/shaders/LightVert.glsl +151 -0
  115. data/lib/java/processing/opengl/shaders/LineFrag.glsl +32 -0
  116. data/lib/java/processing/opengl/shaders/LineVert.glsl +100 -0
  117. data/lib/java/processing/opengl/shaders/MaskFrag.glsl +40 -0
  118. data/lib/java/processing/opengl/shaders/PointFrag.glsl +32 -0
  119. data/lib/java/processing/opengl/shaders/PointVert.glsl +56 -0
  120. data/lib/java/processing/opengl/shaders/TexFrag.glsl +37 -0
  121. data/lib/java/processing/opengl/shaders/TexLightFrag.glsl +37 -0
  122. data/lib/java/processing/opengl/shaders/TexLightVert.glsl +157 -0
  123. data/lib/java/processing/opengl/shaders/TexVert.glsl +38 -0
  124. data/lib/java/processing/pdf/PGraphicsPDF.java +581 -0
  125. data/lib/java/processing/svg/PGraphicsSVG.java +378 -0
  126. data/lib/propane/app.rb +8 -13
  127. data/lib/propane/version.rb +1 -1
  128. data/mvnw +3 -3
  129. data/mvnw.cmd +2 -2
  130. data/pom.rb +7 -2
  131. data/pom.xml +14 -2
  132. data/propane.gemspec +2 -2
  133. data/src/main/java/monkstone/FastNoiseModuleJava.java +127 -0
  134. data/src/main/java/monkstone/MathToolModule.java +30 -30
  135. data/src/main/java/monkstone/PropaneLibrary.java +2 -0
  136. data/src/main/java/monkstone/SmoothNoiseModuleJava.java +127 -0
  137. data/src/main/java/monkstone/fastmath/DegLutTables.java +15 -15
  138. data/src/main/java/monkstone/filechooser/Chooser.java +1 -1
  139. data/src/main/java/monkstone/noise/OpenSimplex2F.java +752 -820
  140. data/src/main/java/monkstone/noise/OpenSimplex2S.java +1138 -1106
  141. data/src/main/java/monkstone/slider/WheelHandler.java +1 -1
  142. data/src/main/java/monkstone/vecmath/JRender.java +6 -6
  143. data/src/main/java/monkstone/vecmath/vec2/Vec2.java +20 -19
  144. data/src/main/java/monkstone/vecmath/vec3/Vec3.java +12 -12
  145. data/src/main/java/processing/awt/PGraphicsJava2D.java +11 -3
  146. data/src/main/java/processing/core/PApplet.java +89 -89
  147. data/src/main/java/processing/core/PConstants.java +155 -163
  148. data/src/main/java/processing/opengl/PJOGL.java +6 -5
  149. data/vendors/Rakefile +1 -1
  150. metadata +136 -19
@@ -0,0 +1,166 @@
1
+ /*
2
+ * To change this license header, choose License Headers in Project Properties.
3
+ * To change this template file, choose Tools | Templates
4
+ * and open the template in the editor.
5
+ */
6
+ package monkstone.slider;
7
+
8
+ import processing.core.PApplet;
9
+
10
+ /**
11
+ *
12
+ * @author tux
13
+ */
14
+ public abstract class SimpleSlider implements Slider {//implements Slider {
15
+
16
+ int MIN_BAR_WIDTH = 10;
17
+ int MAX_BAR_WIDTH = 30;
18
+ int sliderBack = 0xff909090;
19
+ int sliderFill = 0xff696969;
20
+ int borderColor = 0;
21
+ int numbersColor = 0;
22
+ int labelColor = 0;
23
+ int externalBorder = 0;
24
+ boolean backgroundVisible = true;
25
+ int labelSize = 18;
26
+ int numberSize = 14;
27
+ boolean displayLabel = false;
28
+ boolean displayValue = true;
29
+ int pX;
30
+ int pY;
31
+ int pW;
32
+ int pH;
33
+ float pScaled = 0;
34
+ float pValue = 0;
35
+ String ID;
36
+ boolean pressOnlyOnce = true;
37
+ int deb = 0;
38
+ short wheelCount = 0;
39
+ float vMin = 0;
40
+ float vMax = 15;
41
+ PApplet applet;
42
+
43
+ abstract void displayText();
44
+
45
+ abstract void drawGui();
46
+
47
+ @Override
48
+ public void draw() {
49
+ applet.pushStyle();
50
+ applet.noStroke();
51
+ drawGui();
52
+ displayText();
53
+ applet.popStyle();
54
+ change();
55
+ }
56
+
57
+ /**
58
+ *
59
+ */
60
+ @Override
61
+ public void showLabel() {
62
+ displayLabel = true;
63
+ }
64
+
65
+ /**
66
+ *
67
+ */
68
+ @Override
69
+ public void hideLabel() {
70
+ displayLabel = false;
71
+ }
72
+
73
+ /**
74
+ *
75
+ */
76
+ @Override
77
+ public void showNumbers() {
78
+ displayValue = true;
79
+ }
80
+
81
+ /**
82
+ *
83
+ */
84
+ @Override
85
+ public void hideNumbers() {
86
+ displayValue = false;
87
+ }
88
+
89
+ void change() {
90
+ checkKeyboard();
91
+ }
92
+
93
+ /**
94
+ *
95
+ */
96
+ @Override
97
+ public void hideBackground() {
98
+ backgroundVisible = false;
99
+ }
100
+
101
+ /**
102
+ *
103
+ * @return
104
+ */
105
+ @Override
106
+ public float readValue() {
107
+ return pValue;
108
+ }
109
+
110
+ abstract boolean mouseOver();
111
+
112
+ protected float map(float val, float begIn, float endIn, float beginOut, float endOut) {
113
+ return (beginOut + (endOut - beginOut) * ((val - begIn) / (endIn - begIn)));
114
+ }
115
+
116
+ final void limits(float iv, float fv) {
117
+ vMin = iv;
118
+ vMax = fv;
119
+ setValue(iv);
120
+ }
121
+
122
+ /**
123
+ *
124
+ * @param s
125
+ */
126
+ @Override
127
+ public void labelSize(int s) {
128
+ labelSize = (s < 4) ? 4 : s;
129
+ }
130
+
131
+ void deBounce(int n) {
132
+ if (pressOnlyOnce) {
133
+ } else if (deb++ > n) {
134
+ deb = 0;
135
+ pressOnlyOnce = true;
136
+ }
137
+ }
138
+
139
+ abstract void checkKeyboard();
140
+
141
+ protected int constrainMap(double val, double begIn, double endIn, double beginOut, double endOut) {
142
+ double max = Math.max(begIn, endIn);
143
+ double min = Math.min(begIn, endIn);
144
+ if (val < min) {
145
+ val = min;
146
+ }
147
+ if (val > max) {
148
+ val = max;
149
+ }
150
+ return (int) ((beginOut + (endOut - beginOut) * ((val - begIn) / (endIn - begIn))));
151
+ }
152
+
153
+ private void setActive(boolean active) {
154
+ if (active) {
155
+ applet.registerMethod("dispose", this);
156
+ applet.registerMethod("draw", this);
157
+ } else {
158
+ applet.unregisterMethod("draw", this);
159
+ }
160
+ }
161
+
162
+ @Override
163
+ public void dispose() {
164
+ setActive(false);
165
+ }
166
+ }
@@ -0,0 +1,157 @@
1
+ /*
2
+ * Copyright (c) 2015-20 Martin Prout
3
+ *
4
+ * This library is free software; you can redistribute it and/or
5
+ * modify it under the terms of the GNU Lesser General Public
6
+ * License as published by the Free Software Foundation; either
7
+ * version 2.1 of the License, or (at your option) any later version.
8
+ *
9
+ * http://creativecommons.org/licenses/LGPL/2.1/
10
+ *
11
+ * This library is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
+ * Lesser General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU Lesser General Public
17
+ * License along with this library; if not, write to the Free Software
18
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
+ */
20
+ package monkstone.slider;
21
+
22
+ import processing.core.PApplet;
23
+ import processing.core.PConstants;
24
+ import static processing.core.PConstants.HALF_PI;
25
+
26
+ public class SimpleVerticalSlider extends SimpleSlider {
27
+
28
+ final int SPACING = 20;
29
+ final int TOP_SPC = SPACING * 2;
30
+ final int BOTTOM_SPC = SPACING * 4;
31
+
32
+ /**
33
+ *
34
+ * @param outer
35
+ * @param beginRange start range
36
+ * @param endRange end range
37
+ * @param initial
38
+ * @param count
39
+ */
40
+ public SimpleVerticalSlider(final PApplet outer, float beginRange, float endRange, float initial, int count) {
41
+ this.applet = outer;
42
+ setActive(true);
43
+ pX = outer.width - (TOP_SPC + count * SPACING);
44
+ pY = TOP_SPC;
45
+ pW = outer.height - BOTTOM_SPC;
46
+ pH = 10;
47
+ ID = Integer.toString(count + 1);
48
+ limits(beginRange, endRange);
49
+
50
+ }
51
+
52
+ @Override
53
+ boolean mouseOver() {
54
+ return (applet.mouseX >= pX && applet.mouseX <= pX + pH && applet.mouseY >= pY && applet.mouseY <= pY + pW);
55
+ }
56
+
57
+ private void setActive(boolean active) {
58
+ if (active) {
59
+ applet.registerMethod("dispose", this);
60
+ applet.registerMethod("draw", this);
61
+ } else {
62
+ applet.unregisterMethod("draw", this);
63
+ }
64
+ }
65
+
66
+ @Override
67
+ void displayText() {
68
+ String lFormat = "%d";
69
+ if (displayLabel) {
70
+ applet.fill(labelColor);
71
+ applet.textSize(labelSize);
72
+ applet.textAlign(PConstants.CENTER);
73
+ applet.pushMatrix();
74
+ applet.translate(pX + pH / 2, pY + pW / 2);
75
+ applet.rotate(HALF_PI);
76
+ applet.text(Integer.toString((int) pValue), 0, 0 + labelSize / 2 - 2);
77
+ applet.popMatrix();
78
+ }
79
+ if (displayValue) {
80
+ applet.textSize(numberSize);
81
+ applet.fill(numbersColor);
82
+ applet.pushMatrix();
83
+ applet.textAlign(PConstants.RIGHT);
84
+ applet.translate(pX - numberSize / 2, pY);
85
+ applet.rotate(HALF_PI);
86
+ applet.text(String.format(lFormat, (int) vMax), 0, 0);
87
+ applet.popMatrix();
88
+ applet.pushMatrix();
89
+ applet.textAlign(PConstants.LEFT);
90
+ applet.translate(pX - numberSize / 2, pY + pW);
91
+ applet.rotate(HALF_PI);
92
+ applet.text(String.format(lFormat, (int) vMin), 0, 0);
93
+ applet.popMatrix();
94
+ }
95
+ }
96
+
97
+ @Override
98
+ void drawGui() {
99
+ if (backgroundVisible) {
100
+ applet.fill(sliderBack);
101
+ applet.rect(pX, pY, pH, pW);
102
+ }
103
+ applet.fill(sliderFill);
104
+ applet.ellipse(pX + pH / 2, pY + pScaled, 10, 10);
105
+ }
106
+
107
+ /**
108
+ *
109
+ * @param value
110
+ */
111
+ @Override
112
+ public void setValue(float value) {
113
+ if (value > vMax) {
114
+ value = vMax;
115
+ }
116
+ if (value < vMin) {
117
+ value = vMin;
118
+ }
119
+ pValue = value;
120
+ pScaled = map(pValue, vMin, vMax, pW, 0);
121
+ }
122
+
123
+ @Override
124
+ void checkKeyboard() {
125
+ if (mouseOver()) {
126
+ if (applet.mousePressed && applet.mouseButton == PConstants.LEFT) {
127
+ pValue = constrainMap(applet.mouseY - pY, pW, 0, vMin, vMax);
128
+ }
129
+ if (applet.keyPressed && pressOnlyOnce) {
130
+ if (applet.keyCode == PConstants.LEFT || applet.keyCode == PConstants.DOWN) {
131
+ pValue--;
132
+ }
133
+ if (applet.keyCode == PConstants.RIGHT || applet.keyCode == PConstants.UP) {
134
+ pValue++;
135
+ }
136
+ if (pValue > vMax) {
137
+ pValue = vMax;
138
+ } else {
139
+ pValue = (pValue < vMin) ? vMin : pValue;
140
+ }
141
+ pressOnlyOnce = false;
142
+ }
143
+ deBounce(5);
144
+ pScaled = map(pValue, vMin, vMax, pW, 0);
145
+ }
146
+ }
147
+
148
+ /**
149
+ *
150
+ * @return
151
+ */
152
+ @Override
153
+ public String toString() {
154
+ String geomF = "SimpleHSliderBar.new(%d, %d, %d, %.2f, %.2f, \"%s\")";
155
+ return String.format(geomF, pX, pY, pW, vMin, vMax, ID);
156
+ }
157
+ }
@@ -0,0 +1,61 @@
1
+ /*
2
+ * To change this license header, choose License Headers in Project Properties.
3
+ * To change this template file, choose Tools | Templates
4
+ * and open the template in the editor.
5
+ */
6
+ package monkstone.slider;
7
+
8
+ /**
9
+ *
10
+ * @author tux
11
+ */
12
+ public interface Slider {
13
+
14
+ void dispose();
15
+
16
+ void draw();
17
+
18
+ /**
19
+ *
20
+ */
21
+ void hideBackground();
22
+
23
+ /**
24
+ *
25
+ */
26
+ void hideLabel();
27
+
28
+ /**
29
+ *
30
+ */
31
+ void hideNumbers();
32
+
33
+ /**
34
+ *
35
+ * @param s
36
+ */
37
+ void labelSize(int s);
38
+
39
+ /**
40
+ *
41
+ * @return
42
+ */
43
+ float readValue();
44
+
45
+ /**
46
+ *
47
+ * @param value
48
+ */
49
+ void setValue(float value);
50
+
51
+ /**
52
+ *
53
+ */
54
+ void showLabel();
55
+
56
+ /**
57
+ *
58
+ */
59
+ void showNumbers();
60
+
61
+ }
@@ -0,0 +1,245 @@
1
+ /*
2
+ * Copyright (c) 2015-20 Martin Prout
3
+ *
4
+ * This library is free software; you can redistribute it and/or
5
+ * modify it under the terms of the GNU Lesser General Public
6
+ * License as published by the Free Software Foundation; either
7
+ * version 2.1 of the License, or (at your option) any later version.
8
+ *
9
+ * http://creativecommons.org/licenses/LGPL/2.1/
10
+ *
11
+ * This library is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
+ * Lesser General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU Lesser General Public
17
+ * License along with this library; if not, write to the Free Software
18
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
+ */
20
+ package monkstone.slider;
21
+
22
+ import processing.core.PApplet;
23
+ import processing.event.MouseEvent;
24
+
25
+ public abstract class SliderBar implements Slider {
26
+
27
+ int MIN_BAR_WIDTH = 10;
28
+ int MAX_BAR_WIDTH = 30;
29
+ int sliderBack = 0xff909090;
30
+ int sliderFill = 0xff696969;
31
+ int borderColor = 0;
32
+ int numbersColor = 0;
33
+ int labelColor = 0;
34
+ int externalBorder = 0;
35
+ boolean backgroundVisible = true;
36
+ int labelSize = 18;
37
+ int numberSize = 14;
38
+ boolean displayLabel = false;
39
+ boolean displayValue = true;
40
+ int pX;
41
+ int pY;
42
+ int pW;
43
+ int pH;
44
+ float pScaled = 0;
45
+ float pValue = 0;
46
+ String ID;
47
+ boolean pressOnlyOnce = true;
48
+ int deb = 0;
49
+ short wheelCount = 0;
50
+ float vMin = 0;
51
+ float vMax = 15;
52
+ PApplet applet;
53
+ WheelHandler scrollWheelHandler;
54
+
55
+ /**
56
+ *
57
+ * @return
58
+ */
59
+ public float value() {
60
+ return pValue;
61
+ }
62
+
63
+ /**
64
+ *
65
+ * @param w
66
+ */
67
+ public void barWidth(int w) {
68
+ if (w < MIN_BAR_WIDTH) {
69
+ pH = MIN_BAR_WIDTH;
70
+ } else {
71
+ pH = (w > MAX_BAR_WIDTH) ? MAX_BAR_WIDTH : w;
72
+ }
73
+ }
74
+
75
+ final void limits(float iv, float fv) {
76
+ vMin = iv;
77
+ vMax = fv;
78
+ SliderBar.this.setValue(iv);
79
+ }
80
+
81
+ /**
82
+ *
83
+ */
84
+ @Override
85
+ public void showLabel() {
86
+ displayLabel = true;
87
+ }
88
+
89
+ /**
90
+ *
91
+ */
92
+ @Override
93
+ public void hideLabel() {
94
+ displayLabel = false;
95
+ }
96
+
97
+ /**
98
+ *
99
+ */
100
+ @Override
101
+ public void showNumbers() {
102
+ displayValue = true;
103
+ }
104
+
105
+ /**
106
+ *
107
+ */
108
+ @Override
109
+ public void hideNumbers() {
110
+ displayValue = false;
111
+ }
112
+
113
+ /**
114
+ *
115
+ * @param b
116
+ */
117
+ public void externalBorder(int b) {
118
+ externalBorder = b;
119
+ }
120
+
121
+ /**
122
+ *
123
+ */
124
+ @Override
125
+ public void hideBackground() {
126
+ backgroundVisible = false;
127
+ }
128
+
129
+ /**
130
+ *
131
+ */
132
+ public void showBackground() {
133
+ backgroundVisible = true;
134
+ }
135
+
136
+ /**
137
+ *
138
+ * @param s
139
+ */
140
+ @Override
141
+ public void labelSize(int s) {
142
+ labelSize = (s < 4) ? 4 : s;
143
+ }
144
+
145
+ /**
146
+ * @param back color of the bar
147
+ * @param fill background color of the slider
148
+ */
149
+ public void widgetColors(int back, int fill) {
150
+ sliderBack = back;
151
+ sliderFill = fill;
152
+ }
153
+
154
+ abstract boolean mouseOver();
155
+
156
+ private void setActive(boolean active) {
157
+ if (active) {
158
+ applet.registerMethod("dispose", this);
159
+ applet.registerMethod("draw", this);
160
+ applet.registerMethod("mouseEvent", this);
161
+ } else {
162
+ applet.unregisterMethod("draw", this);
163
+ applet.unregisterMethod("mouseEvent", this);
164
+ }
165
+ }
166
+
167
+ abstract void displayText();
168
+
169
+ abstract void drawGui();
170
+
171
+ @Override
172
+ public void draw() {
173
+ applet.pushStyle();
174
+ applet.noStroke();
175
+ drawGui();
176
+ displayText();
177
+ applet.popStyle();
178
+ change();
179
+ }
180
+
181
+ public void mouseEvent(MouseEvent evt) {
182
+ if (evt.getAction() == MouseEvent.WHEEL) {
183
+ if (scrollWheelHandler != null) {
184
+ scrollWheelHandler.handleWheel((short) evt.getCount());
185
+ }
186
+ }
187
+ }
188
+
189
+ /**
190
+ *
191
+ * @param value
192
+ */
193
+ @Override
194
+ public abstract void setValue(float value);
195
+
196
+ abstract void checkKeyboard();
197
+
198
+ void change() {
199
+ checkKeyboard();
200
+ }
201
+
202
+ /**
203
+ *
204
+ * @return
205
+ */
206
+ @Override
207
+ public float readValue() {
208
+ return pValue;
209
+ }
210
+
211
+ /**
212
+ *
213
+ * @param delta
214
+ */
215
+ abstract void changeWithWheel(int delta);
216
+
217
+ void deBounce(int n) {
218
+ if (pressOnlyOnce) {
219
+ } else if (deb++ > n) {
220
+ deb = 0;
221
+ pressOnlyOnce = true;
222
+ }
223
+ }
224
+
225
+ protected float map(float val, float begIn, float endIn, float beginOut, float endOut) {
226
+ return (beginOut + (endOut - beginOut) * ((val - begIn) / (endIn - begIn)));
227
+ }
228
+
229
+ protected int constrainMap(double val, double begIn, double endIn, double beginOut, double endOut) {
230
+ double max = Math.max(begIn, endIn);
231
+ double min = Math.min(begIn, endIn);
232
+ if (val < min) {
233
+ val = min;
234
+ }
235
+ if (val > max) {
236
+ val = max;
237
+ }
238
+ return (int) ((beginOut + (endOut - beginOut) * ((val - begIn) / (endIn - begIn))));
239
+ }
240
+
241
+ @Override
242
+ public void dispose() {
243
+ setActive(false);
244
+ }
245
+ }