Revision 9ce78850
Added by Leszek Koltunski over 3 years ago
src/main/java/org/distorted/helpers/FactorySticker.java | ||
---|---|---|
52 | 52 |
REX_S = (float)(1/Math.sqrt(1+4*G*G/(F*F))); |
53 | 53 |
} |
54 | 54 |
|
55 |
private float mOX, mOY, mR; |
|
56 |
|
|
55 | 57 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
56 | 58 |
|
57 | 59 |
private FactorySticker() |
... | ... | |
81 | 83 |
return ret; |
82 | 84 |
} |
83 | 85 |
|
86 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
87 |
|
|
88 |
private float getAngle(float[] angles, int index) |
|
89 |
{ |
|
90 |
return angles==null ? 0 : angles[index]; |
|
91 |
} |
|
92 |
|
|
93 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
94 |
|
|
95 |
private void computeCircleCoords(float lX,float lY, float rX, float rY, float alpha) |
|
96 |
{ |
|
97 |
float ctg= 1.0f/((float)Math.tan(alpha)); |
|
98 |
mOX = 0.5f*(lX+rX) + ctg*0.5f*(lY-rY); |
|
99 |
mOY = 0.5f*(lY+rY) - ctg*0.5f*(lX-rX); |
|
100 |
float dx = mOX-lX; |
|
101 |
float dy = mOY-lY; |
|
102 |
mR = (float)Math.sqrt(dx*dx+dy*dy); |
|
103 |
} |
|
104 |
|
|
105 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
106 |
// circle1: center (x1,y1) radius r1; circle2: center (x2,y2) radius r2. |
|
107 |
// Guaranteed to intersect in two points. Find the intersection. Which one? the one that's closer |
|
108 |
// to (nearx,neary). |
|
109 |
|
|
110 |
private void findCircleIntersection(float x1,float y1, float r1, float x2, float y2, float r2, float nearx, float neary ) |
|
111 |
{ |
|
112 |
float dx = x2-x1; |
|
113 |
float dy = y2-y1; |
|
114 |
float d = (float)Math.sqrt(dx*dx+dy*dy); |
|
115 |
|
|
116 |
if( d>0 ) |
|
117 |
{ |
|
118 |
float Dx = dx/d; |
|
119 |
float Dy = dy/d; |
|
120 |
float cos = (r1*r1+d*d-r2*r2)/(2*r1*d); |
|
121 |
float sin = (float)Math.sqrt(1-cos*cos); |
|
122 |
|
|
123 |
float ox1 = x1 + r1*cos*Dx + r1*sin*Dy; |
|
124 |
float oy1 = y1 + r1*cos*Dy - r1*sin*Dx; |
|
125 |
float ox2 = x1 + r1*cos*Dx - r1*sin*Dy; |
|
126 |
float oy2 = y1 + r1*cos*Dy + r1*sin*Dx; |
|
127 |
|
|
128 |
dx = nearx-ox1; |
|
129 |
dy = neary-oy1; |
|
130 |
float d1 = dx*dx+dy*dy; |
|
131 |
dx = nearx-ox2; |
|
132 |
dy = neary-oy2; |
|
133 |
float d2 = dx*dx+dy*dy; |
|
134 |
|
|
135 |
if( d1<d2 ) |
|
136 |
{ |
|
137 |
mOX = ox1; |
|
138 |
mOY = oy1; |
|
139 |
} |
|
140 |
else |
|
141 |
{ |
|
142 |
mOX = ox2; |
|
143 |
mOY = oy2; |
|
144 |
} |
|
145 |
} |
|
146 |
else |
|
147 |
{ |
|
148 |
mOX = x1; |
|
149 |
mOY = y1; |
|
150 |
} |
|
151 |
} |
|
152 |
|
|
153 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
154 |
|
|
155 |
private void drawCurrCurvVertex(Canvas canvas, Paint paint, int left, int top, float r, float stroke, float pX, float pY, float cX, float cY, float nX, float nY, float pA, float cA) |
|
156 |
{ |
|
157 |
pX = (0.5f+pX)*TEXTURE_HEIGHT; |
|
158 |
pY = (0.5f-pY)*TEXTURE_HEIGHT; |
|
159 |
cX = (0.5f+cX)*TEXTURE_HEIGHT; |
|
160 |
cY = (0.5f-cY)*TEXTURE_HEIGHT; |
|
161 |
nX = (0.5f+nX)*TEXTURE_HEIGHT; |
|
162 |
nY = (0.5f-nY)*TEXTURE_HEIGHT; |
|
163 |
|
|
164 |
computeCircleCoords(pX,pY,cX,cY,pA); |
|
165 |
float o1x = mOX; |
|
166 |
float o1y = mOY; |
|
167 |
float r1 = mR; |
|
168 |
computeCircleCoords(cX,cY,nX,nY,cA); |
|
169 |
float o2x = mOX; |
|
170 |
float o2y = mOY; |
|
171 |
float r2 = mR; |
|
172 |
|
|
173 |
float dx = o1x-pX; |
|
174 |
float dy = o1y-pY; |
|
175 |
float startA = computeAngle(dy,dx); |
|
176 |
float sweepA = 2*pA; |
|
177 |
|
|
178 |
startA *= 180/(Math.PI); |
|
179 |
sweepA *= 180/(Math.PI); |
|
180 |
|
|
181 |
|
|
182 |
|
|
183 |
android.util.Log.e("D", "o1x="+o1x+" o1y="+o1y+" r1="+r1+" stA="+startA+" swA="+sweepA); |
|
184 |
|
|
185 |
|
|
186 |
canvas.drawArc( left+o1x-r1, top+o1y-r1, left+o1x+r1, top+o1y+r1, startA, sweepA, false, paint); |
|
187 |
|
|
188 |
float r3 = r*TEXTURE_HEIGHT + stroke/2; |
|
189 |
findCircleIntersection(o1x,o1y,r1-r3,o2x,o2y,r2-r3,cX,cY); |
|
190 |
float o3x = mOX; |
|
191 |
float o3y = mOY; |
|
192 |
|
|
193 |
dx = o1x-o3x; |
|
194 |
dy = o1y-o3y; |
|
195 |
startA = computeAngle(dy,dx); |
|
196 |
dx = o2x-o3x; |
|
197 |
dy = o2y-o3y; |
|
198 |
float endA = computeAngle(dy,dx); |
|
199 |
|
|
200 |
sweepA = endA-startA; |
|
201 |
if( sweepA<0 ) sweepA += 2*Math.PI; |
|
202 |
|
|
203 |
startA *= 180/(Math.PI); |
|
204 |
sweepA *= 180/(Math.PI); |
|
205 |
|
|
206 |
canvas.drawArc( left+o3x-r3, top+o3y-r3, left+o3x+r3, top+o3y+r3, startA, sweepA, false, paint); |
|
207 |
} |
|
208 |
|
|
84 | 209 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
85 | 210 |
|
86 | 211 |
private void drawCurrVertex(Canvas canvas, Paint paint, int left, int top, float r, float stroke, float pX, float pY, float cX, float cY, float nX, float nY) |
... | ... | |
149 | 274 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
150 | 275 |
// PUBLIC |
151 | 276 |
|
152 |
public void drawRoundedPolygon(Canvas canvas, Paint paint, int left, int top, float[] vertices, float stroke, int color, float radius) |
|
277 |
public void drawRoundedPolygon(Canvas canvas, Paint paint, int left, int top, float[] vertices, float[] angles, float stroke, int color, float radius)
|
|
153 | 278 |
{ |
154 | 279 |
stroke *= TEXTURE_HEIGHT; |
155 | 280 |
|
... | ... | |
173 | 298 |
float nextX = vertices[2]; |
174 | 299 |
float nextY = vertices[3]; |
175 | 300 |
|
301 |
float prevA = getAngle(angles,numVertices-1); |
|
302 |
float currA = getAngle(angles,0); |
|
303 |
|
|
176 | 304 |
for(int vert=0; vert<numVertices; vert++) |
177 | 305 |
{ |
178 |
drawCurrVertex(canvas, paint, left, top, radius, stroke, prevX,prevY,currX,currY,nextX,nextY); |
|
306 |
if( prevA==0 ) |
|
307 |
{ |
|
308 |
drawCurrVertex(canvas, paint, left, top, radius, stroke, prevX,prevY,currX,currY,nextX,nextY); |
|
309 |
} |
|
310 |
else |
|
311 |
{ |
|
312 |
drawCurrCurvVertex(canvas, paint, left, top, radius, stroke, prevX,prevY,currX,currY,nextX,nextY,prevA,currA); |
|
313 |
} |
|
179 | 314 |
|
180 | 315 |
prevX = currX; |
181 | 316 |
prevY = currY; |
182 | 317 |
currX = nextX; |
183 | 318 |
currY = nextY; |
184 | 319 |
|
320 |
prevA = currA; |
|
321 |
currA = getAngle(angles, vert==numVertices-1 ? 0 : vert+1); |
|
322 |
|
|
185 | 323 |
if( 2*(vert+2)+1 < length ) |
186 | 324 |
{ |
187 | 325 |
nextX = vertices[2*(vert+2) ]; |
... | ... | |
195 | 333 |
} |
196 | 334 |
} |
197 | 335 |
|
198 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
199 |
|
|
200 |
public void drawIvyCornerSticker(Canvas canvas, Paint paint, int left, int top, int color, float stroke, float radius) |
|
201 |
{ |
|
202 |
paint.setAntiAlias(true); |
|
203 |
paint.setColor(color); |
|
204 |
paint.setStyle(Paint.Style.FILL); |
|
205 |
canvas.drawRect(left,top,left+TEXTURE_HEIGHT,top+TEXTURE_HEIGHT,paint); |
|
206 |
|
|
207 |
paint.setColor(COLOR_BLACK); |
|
208 |
paint.setStyle(Paint.Style.STROKE); |
|
209 |
paint.setStrokeWidth(IVY_C*stroke*TEXTURE_HEIGHT); |
|
210 |
|
|
211 |
float tmp1 = ((IVY_D-0.5f)-IVY_M)*IVY_C; |
|
212 |
float cx1 = TEXTURE_HEIGHT*(tmp1 + 0.5f); |
|
213 |
float cy1 = TEXTURE_HEIGHT*(0.5f - tmp1); |
|
214 |
|
|
215 |
float halfL1 = IVY_C*TEXTURE_HEIGHT*(1.0f-2*IVY_D); |
|
216 |
|
|
217 |
canvas.drawArc( left+cx1-halfL1, top+cy1-halfL1, left+cx1+halfL1, top+cy1+halfL1, 270, 90, false, paint); |
|
218 |
|
|
219 |
float tmp2 = (+0.5f-IVY_M)*IVY_C; |
|
220 |
float tmp3 = (-0.5f-IVY_M)*IVY_C; |
|
221 |
|
|
222 |
float x0 = TEXTURE_HEIGHT*(+tmp2 + 0.5f); |
|
223 |
float y0 = TEXTURE_HEIGHT*(-tmp3 + 0.5f); |
|
224 |
float x1 = TEXTURE_HEIGHT*(+tmp2 + 0.5f); |
|
225 |
float y1 = TEXTURE_HEIGHT*(-tmp2 + 0.5f); |
|
226 |
float x2 = TEXTURE_HEIGHT*(+tmp3 + 0.5f); |
|
227 |
float y2 = TEXTURE_HEIGHT*(-tmp2 + 0.5f); |
|
228 |
|
|
229 |
canvas.drawLine(left+x0,top+y0,left+x1,top+y1,paint); |
|
230 |
canvas.drawLine(left+x1,top+y1,left+x2,top+y2,paint); |
|
231 |
|
|
232 |
float tmp4 = ((0.5f-stroke/2-radius/2)-IVY_M)*IVY_C; |
|
233 |
float cx2 = TEXTURE_HEIGHT*(tmp4 + 0.5f); |
|
234 |
float cy2 = TEXTURE_HEIGHT*(0.5f - tmp4); |
|
235 |
|
|
236 |
float halfL2 = IVY_C*TEXTURE_HEIGHT*radius; |
|
237 |
|
|
238 |
paint.setStrokeWidth(IVY_C*radius*TEXTURE_HEIGHT); |
|
239 |
canvas.drawArc( left+cx2-halfL2, top+cy2-halfL2, left+cx2+halfL2, top+cy2+halfL2, 270, 90, false, paint); |
|
240 |
} |
|
241 |
|
|
242 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
243 |
|
|
244 |
public void drawIvyCenterSticker(Canvas canvas, Paint paint, int left, int top, int color, float stroke, float radius) |
|
245 |
{ |
|
246 |
paint.setAntiAlias(true); |
|
247 |
paint.setColor(color); |
|
248 |
paint.setStyle(Paint.Style.FILL); |
|
249 |
canvas.drawRect(left,top,left+TEXTURE_HEIGHT,top+TEXTURE_HEIGHT,paint); |
|
250 |
|
|
251 |
paint.setColor(COLOR_BLACK); |
|
252 |
paint.setStyle(Paint.Style.STROKE); |
|
253 |
paint.setStrokeWidth(stroke*TEXTURE_HEIGHT); |
|
254 |
|
|
255 |
float cx1 = TEXTURE_HEIGHT*IVY_D; |
|
256 |
float cy1 = TEXTURE_HEIGHT*(1-IVY_D); |
|
257 |
float cx2 = TEXTURE_HEIGHT*(1.0f-IVY_D); |
|
258 |
float cy2 = TEXTURE_HEIGHT*IVY_D; |
|
259 |
|
|
260 |
float halfL = TEXTURE_HEIGHT*(1.0f - 2*IVY_D); |
|
261 |
|
|
262 |
canvas.drawArc( left+cx1-halfL, top+cy1-halfL, left+cx1+halfL, top+cy1+halfL, 270, 90, false, paint); |
|
263 |
canvas.drawArc( left+cx2-halfL, top+cy2-halfL, left+cx2+halfL, top+cy2+halfL, 90, 90, false, paint); |
|
264 |
|
|
265 |
float tmp = TEXTURE_HEIGHT*(IVY_D+stroke*0.5f+radius*0.5f); |
|
266 |
float cx3 = tmp; |
|
267 |
float cy3 = tmp; |
|
268 |
float cx4 = TEXTURE_HEIGHT - cx3; |
|
269 |
float cy4 = TEXTURE_HEIGHT - cy3; |
|
270 |
float halfR = TEXTURE_HEIGHT*radius; |
|
271 |
|
|
272 |
paint.setStrokeWidth(radius*TEXTURE_HEIGHT); |
|
273 |
canvas.drawArc( left+cx3-halfR, top+cy3-halfR, left+cx3+halfR, top+cy3+halfR, 180, 90, false, paint); |
|
274 |
canvas.drawArc( left+cx4-halfR, top+cy4-halfR, left+cx4+halfR, top+cy4+halfR, 0, 90, false, paint); |
|
275 |
} |
|
276 |
|
|
277 | 336 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
278 | 337 |
|
279 | 338 |
public void drawRexCornerSticker(Canvas canvas, Paint paint, int left, int top, int color, float stroke, float radius1, float radius2) |
src/main/java/org/distorted/objects/TwistyBandagedAbstract.java | ||
---|---|---|
384 | 384 |
float[] vertices = { -X,-Y, +X,-Y, +X,+Y, -X,+Y}; |
385 | 385 |
|
386 | 386 |
FactorySticker factory = FactorySticker.getInstance(); |
387 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, S, FACE_COLORS[color], R); |
|
387 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, null, S, FACE_COLORS[color], R);
|
|
388 | 388 |
} |
389 | 389 |
|
390 | 390 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyCube.java | ||
---|---|---|
185 | 185 |
float S = 0.08f; |
186 | 186 |
|
187 | 187 |
FactorySticker factory = FactorySticker.getInstance(); |
188 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], S, FACE_COLORS[face], R); |
|
188 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], null, S, FACE_COLORS[face], R);
|
|
189 | 189 |
} |
190 | 190 |
|
191 | 191 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyDiamond.java | ||
---|---|---|
497 | 497 |
float S = 0.07f; |
498 | 498 |
|
499 | 499 |
FactorySticker factory = FactorySticker.getInstance(); |
500 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], S, FACE_COLORS[face], R); |
|
500 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], null, S, FACE_COLORS[face], R);
|
|
501 | 501 |
} |
502 | 502 |
|
503 | 503 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyDino.java | ||
---|---|---|
219 | 219 |
float S = 0.05f; |
220 | 220 |
|
221 | 221 |
FactorySticker factory = FactorySticker.getInstance(); |
222 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], S, FACE_COLORS[face], R); |
|
222 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], null, S, FACE_COLORS[face], R);
|
|
223 | 223 |
} |
224 | 224 |
|
225 | 225 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyHelicopter.java | ||
---|---|---|
381 | 381 |
float S = 0.05f; |
382 | 382 |
|
383 | 383 |
FactorySticker factory = FactorySticker.getInstance(); |
384 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], S, FACE_COLORS[face], R); |
|
384 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], null, S, FACE_COLORS[face], R);
|
|
385 | 385 |
} |
386 | 386 |
|
387 | 387 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyIvy.java | ||
---|---|---|
396 | 396 |
{ |
397 | 397 |
int COLORS = FACE_COLORS.length; |
398 | 398 |
FactorySticker factory = FactorySticker.getInstance(); |
399 |
float S = 0.08f; |
|
400 |
float R = 0.12f; |
|
401 | 399 |
|
402 | 400 |
if( face<COLORS ) |
403 | 401 |
{ |
404 |
factory.drawIvyCornerSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S, R); |
|
402 |
float S = 0.03f; |
|
403 |
float R = 0.02f; |
|
404 |
|
|
405 |
float ANGLE = (float)(Math.PI/4); |
|
406 |
|
|
407 |
float A = (+0.5f-IVY_M)*IVY_C; |
|
408 |
float B = (-0.5f-IVY_M)*IVY_C; |
|
409 |
|
|
410 |
float[] vertices = new float[] { A, B, A, A, B, A }; |
|
411 |
float[] angles = new float[] { 0, 0, ANGLE }; |
|
412 |
|
|
413 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, angles, S, FACE_COLORS[face%COLORS], R); |
|
405 | 414 |
} |
406 | 415 |
else |
407 | 416 |
{ |
408 |
factory.drawIvyCenterSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S, R); |
|
417 |
float S = 0.08f; |
|
418 |
float R = 0.06f; |
|
419 |
|
|
420 |
float ANGLE = (float)(Math.PI/4); |
|
421 |
float A = 0.50f-IVY_D; |
|
422 |
|
|
423 |
float[] vertices = new float[] { -A, A, A, -A }; |
|
424 |
float[] angles = new float[] { ANGLE, ANGLE }; |
|
425 |
|
|
426 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, angles, S, FACE_COLORS[face%COLORS], R); |
|
409 | 427 |
} |
410 | 428 |
} |
411 | 429 |
|
src/main/java/org/distorted/objects/TwistyJing.java | ||
---|---|---|
384 | 384 |
} |
385 | 385 |
|
386 | 386 |
FactorySticker factory = FactorySticker.getInstance(); |
387 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], S, FACE_COLORS[face%COLORS], R); |
|
387 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], null, S, FACE_COLORS[face%COLORS], R);
|
|
388 | 388 |
} |
389 | 389 |
|
390 | 390 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyKilominx.java | ||
---|---|---|
646 | 646 |
float cy = STICKERS[0][3]/CENTER_CORR; |
647 | 647 |
|
648 | 648 |
FactorySticker factory = FactorySticker.getInstance(); |
649 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], S, FACE_COLORS[face%NUM_FACES], R); |
|
649 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], null, S, FACE_COLORS[face%NUM_FACES], R);
|
|
650 | 650 |
canvas.drawCircle(left+(0.5f+cx)*TEXTURE_HEIGHT, top+(0.5f-cy)*TEXTURE_HEIGHT, 0.05f*TEXTURE_HEIGHT, paint); |
651 | 651 |
} |
652 | 652 |
else if( variant==0 ) // corner |
... | ... | |
654 | 654 |
float R = 0.10f; |
655 | 655 |
float S = 0.11f; |
656 | 656 |
FactorySticker factory = FactorySticker.getInstance(); |
657 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[1], S, FACE_COLORS[face%COLORS], R); |
|
657 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[1], null, S, FACE_COLORS[face%COLORS], R);
|
|
658 | 658 |
} |
659 | 659 |
else // edge |
660 | 660 |
{ |
661 | 661 |
float R = 0.10f; |
662 | 662 |
float S = 0.10f; |
663 | 663 |
FactorySticker factory = FactorySticker.getInstance(); |
664 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[2], S, FACE_COLORS[face%COLORS], R); |
|
664 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[2], null, S, FACE_COLORS[face%COLORS], R);
|
|
665 | 665 |
} |
666 | 666 |
} |
667 | 667 |
|
src/main/java/org/distorted/objects/TwistyMegaminx.java | ||
---|---|---|
555 | 555 |
} |
556 | 556 |
|
557 | 557 |
FactorySticker factory = FactorySticker.getInstance(); |
558 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[index], S, FACE_COLORS[face%COLORS], R); |
|
558 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[index], null, S, FACE_COLORS[face%COLORS], R);
|
|
559 | 559 |
} |
560 | 560 |
|
561 | 561 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyPyraminx.java | ||
---|---|---|
364 | 364 |
float S = 0.08f; |
365 | 365 |
|
366 | 366 |
FactorySticker factory = FactorySticker.getInstance(); |
367 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], S, FACE_COLORS[face], R); |
|
367 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[0], null, S, FACE_COLORS[face], R);
|
|
368 | 368 |
} |
369 | 369 |
|
370 | 370 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyRedi.java | ||
---|---|---|
386 | 386 |
} |
387 | 387 |
|
388 | 388 |
FactorySticker factory = FactorySticker.getInstance(); |
389 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], S, FACE_COLORS[face%COLORS], R); |
|
389 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], null, S, FACE_COLORS[face%COLORS], R);
|
|
390 | 390 |
} |
391 | 391 |
|
392 | 392 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyRex.java | ||
---|---|---|
567 | 567 |
else if( face<2*COLORS ) |
568 | 568 |
{ |
569 | 569 |
float[] vertices = { -REX_D,0.0f, 0.0f, -REX_D, +REX_D, 0.0f, 0.0f, +REX_D}; |
570 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, S1, FACE_COLORS[face%COLORS], R4); |
|
570 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, null, S1, FACE_COLORS[face%COLORS], R4);
|
|
571 | 571 |
} |
572 | 572 |
else |
573 | 573 |
{ |
src/main/java/org/distorted/objects/TwistySkewb.java | ||
---|---|---|
586 | 586 |
} |
587 | 587 |
|
588 | 588 |
FactorySticker factory = FactorySticker.getInstance(); |
589 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[index], S, FACE_COLORS[face%COLORS], R); |
|
589 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[index], null, S, FACE_COLORS[face%COLORS], R);
|
|
590 | 590 |
} |
591 | 591 |
|
592 | 592 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistySquare1.java | ||
---|---|---|
239 | 239 |
} |
240 | 240 |
|
241 | 241 |
FactorySticker factory = FactorySticker.getInstance(); |
242 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], S, FACE_COLORS[face%COLORS], R); |
|
242 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], null, S, FACE_COLORS[face%COLORS], R);
|
|
243 | 243 |
} |
244 | 244 |
|
245 | 245 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistySquare2.java | ||
---|---|---|
244 | 244 |
} |
245 | 245 |
|
246 | 246 |
FactorySticker factory = FactorySticker.getInstance(); |
247 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], S, FACE_COLORS[face%COLORS], R); |
|
247 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], null, S, FACE_COLORS[face%COLORS], R);
|
|
248 | 248 |
} |
249 | 249 |
|
250 | 250 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objects/TwistyUltimate.java | ||
---|---|---|
357 | 357 |
} |
358 | 358 |
|
359 | 359 |
FactorySticker factory = FactorySticker.getInstance(); |
360 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], S, FACE_COLORS[face%COLORS], R); |
|
360 |
factory.drawRoundedPolygon(canvas, paint, left, top, STICKERS[stickerType], null, S, FACE_COLORS[face%COLORS], R);
|
|
361 | 361 |
} |
362 | 362 |
|
363 | 363 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
Also available in: Unified diff
Generalize FactorySticker - make it possible to draw stickers whose sides are curved.
Convert the Ivy to use this new functionality.