From fcf46b2f0dbe59cd1bf738028f5c6b5552f1507b Mon Sep 17 00:00:00 2001 From: benfry Date: Mon, 14 Feb 2005 17:40:12 +0000 Subject: [PATCH] more java2d beginShape/endShape --- processing/core/PGraphics2.java | 38 +++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/processing/core/PGraphics2.java b/processing/core/PGraphics2.java index 88774bedf..40ebacf3a 100644 --- a/processing/core/PGraphics2.java +++ b/processing/core/PGraphics2.java @@ -460,14 +460,52 @@ public class PGraphics2 extends PGraphics { break; case QUADS: + if ((vertexCount % 4) == 0) { + quad(vertices[vertexCount - 4][MX], + vertices[vertexCount - 4][MY], + vertices[vertexCount - 3][MX], + vertices[vertexCount - 3][MY], + vertices[vertexCount - 2][MX], + vertices[vertexCount - 2][MY], + x, y); + } break; case QUAD_STRIP: + // 0---2---4 + // | | | + // 1---3---5 + if (vertexCount == 4) { + // note difference in winding order: + quad(vertices[0][MX], vertices[0][MY], + vertices[2][MX], vertices[2][MY], + x, y, + vertices[1][MX], vertices[1][MY]); + + } else if (vertexCount > 4) { + path = new GeneralPath(); + // when vertexCount == 5, draw an un-closed triangle + // for indices 2, 4, 5, 3 + path.moveTo(vertices[vertexCount - 3][MX], + vertices[vertexCount - 3][MY]); + path.lineTo(vertices[vertexCount - 1][MX], + vertices[vertexCount - 1][MY]); + path.lineTo(x, y); + path.lineTo(vertices[vertexCount - 2][MX], + vertices[vertexCount - 2][MY]); + draw_shape(path); + } break; case POLYGON: case CONCAVE_POLYGON: case CONVEX_POLYGON: + if (vertexCount == 1) { + path = new GeneralPath(); + path.moveTo(x, y); + } else { + path.lineTo(x, y); + } break; } }