From 7e9204f09bc4881c6d1184effa560e5dc55dffbe Mon Sep 17 00:00:00 2001 From: benfry Date: Tue, 30 Aug 2005 21:51:04 +0000 Subject: [PATCH] bunch of random tweaks that hadn't been checked in --- core/PApplet.java | 12 ++++++++++++ core/PGraphics.java | 42 +++++++++++++++++++++++++++++++++++++++++ core/PGraphics3.java | 12 ++++++------ core/todo.txt | 6 ++++++ opengl/PGraphicsGL.java | 6 +++++- todo.txt | 11 ++++++----- 6 files changed, 77 insertions(+), 12 deletions(-) diff --git a/core/PApplet.java b/core/PApplet.java index 4b7670b65..f43ceb880 100644 --- a/core/PApplet.java +++ b/core/PApplet.java @@ -5888,6 +5888,18 @@ v PApplet.this.stop(); } + public void beginPath() { + if (recorder != null) recorder.beginPath(); + g.beginPath(); + } + + + public void endPath() { + if (recorder != null) recorder.endPath(); + g.endPath(); + } + + public void point(float x, float y) { if (recorder != null) recorder.point(x, y); g.point(x, y); diff --git a/core/PGraphics.java b/core/PGraphics.java index c909da1b0..69bbf4562 100644 --- a/core/PGraphics.java +++ b/core/PGraphics.java @@ -937,6 +937,48 @@ public class PGraphics extends PImage implements PConstants { + ////////////////////////////////////////////////////////////// + + // COMPOUND PATHS + + + /** + * Begin a new path. This can be used after beginShape() to draw + * a compound path (i.e. to draw shape with a hole on the interior) + * For instance, to draw a shape that has a hole in its interior, + * the format would be: + *
+   * beginShape();
+   * beginPath();
+   * // multiple calls to vertex() that draw the exterior shape
+   * endPath();
+   * beginPath();
+   * // several calls to vertex() to draw the interior hole
+   * endPath();
+   * // more beginPath/endPath pairs can be used for additional holes
+   * endShape();
+   * 
+ *

+ * This will probably be available only with the OpenGL renderer, + * because it has a built-in tesselator from GLU. + */ + //public void beginPath() { + //throw new RuntimeException("beginPath() is not available"); + //} + + + /** + * End a path. Use this with beginPath() to close out a compound path. + *

+ * This will probably be available only with the OpenGL renderer, + * because it has a built-in tesselator from GLU. + */ + //public void endPath() { + //throw new RuntimeException("endPath() is not available"); + //} + + + ////////////////////////////////////////////////////////////// // STROKE/FILL/DRAW diff --git a/core/PGraphics3.java b/core/PGraphics3.java index 04da2f871..b8db26e45 100644 --- a/core/PGraphics3.java +++ b/core/PGraphics3.java @@ -2682,7 +2682,7 @@ public class PGraphics3 extends PGraphics { public void pushMatrix() { if (!modelview.push()) { - throw new RuntimeException("too many calls to pushMatrix()"); + throw new RuntimeException("Too many calls to pushMatrix()"); } // Do this to the inverse regardless of the lights // to keep stack pointers in sync @@ -2692,7 +2692,7 @@ public class PGraphics3 extends PGraphics { public void popMatrix() { if (!modelview.pop()) { - throw new RuntimeException("too many calls to popMatrix() " + + throw new RuntimeException("Too many calls to popMatrix() " + "(and not enough to pushMatrix)"); } // Do this to the inverse regardless of the lights @@ -2799,8 +2799,8 @@ public class PGraphics3 extends PGraphics { */ public void beginCamera() { if (manipulatingCamera) { - throw new RuntimeException("cannot call beginCamera while already "+ - "in camera manipulation mode"); + throw new RuntimeException("beginCamera() cannot be called again " + + "before endCamera()"); } else { manipulatingCamera = true; forwardTransform = cameraInv; @@ -2819,8 +2819,8 @@ public class PGraphics3 extends PGraphics { */ public void endCamera() { if (!manipulatingCamera) { - throw new RuntimeException("cannot call endCamera while not "+ - "in camera manipulation mode"); + throw new RuntimeException("Cannot call endCamera() " + + "without first calling beginCamera()"); } // reset the modelview to use this new camera matrix modelview.set(camera); diff --git a/core/todo.txt b/core/todo.txt index bb2db371b..4c108fbc6 100644 --- a/core/todo.txt +++ b/core/todo.txt @@ -10,6 +10,7 @@ X nope, because it requires grabbing the font metrics and other calculations X bezierDetail, curveDetail made public X added textMode(SHAPE) for OPENGL X error message saying that strokeCap and strokeJoin don't work in P3D +X textMode(SHAPE) throws ex when drawing and font not installed X fix a bug with filename capitalization error throwing nixed or fixed in previous releases @@ -21,6 +22,11 @@ X http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Contribution_3DOpen o noLoop() is behaving strangely o http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1116002432;start=0 +_ how to handle gluTessVertex calls +_ need to re-map through the regular "vertex" command, +_ but that makes things messy because the glu calls make calls to vertex() +_ and i don't want an additional "pathVertex()" function + _ "this file is named" errors don't like subdirectories _ need to strip off past the file separator or something _ stop() not getting called diff --git a/opengl/PGraphicsGL.java b/opengl/PGraphicsGL.java index ec0975cab..4ae7497f7 100644 --- a/opengl/PGraphicsGL.java +++ b/opengl/PGraphicsGL.java @@ -948,7 +948,11 @@ public class PGraphicsGL extends PGraphics3 { * with the stroke shut off, so tabling that bug for now. */ protected void textCharImpl(char ch, float x, float y) { - if (textMode != SHAPE) { + if ((textMode == SHAPE) && (textFontNative == null)) { + System.err.println("textMode(SHAPE) is disabled because the font " + + "\"" + textFont.name + "\" is not available."); + } + if ((textMode != SHAPE) || (textFontNative == null)) { super.textCharImpl(ch, x, y); return; } diff --git a/todo.txt b/todo.txt index e447b1d44..53bd569b8 100644 --- a/todo.txt +++ b/todo.txt @@ -82,7 +82,6 @@ forum bugs X when replying, all the replies so far are listed twice o fonts are wrong all over the place (use windows to debug) - _ properly handle non-ascii chars in p5 folder name _ http://dev.processing.org/bugs/show_bug.cgi?id=49 _ or at least warn the user to install somehwere else @@ -179,6 +178,8 @@ _ http://processing.org/bugs/show_bug.cgi?id=3 PDE / Compiler & Preprocessor +_ synchronized (something) { } is horking up the preproc +_ http://dev.processing.org/bugs/show_bug.cgi?id=136 _ casting problems in the parser _ straighten out int() -> toInt() conversions _ float u = float(x)/width; works. @@ -640,10 +641,13 @@ _ and include an md5hash to see if the file is correct DIST / Windows -_ detect bad classpath or path settings +_ p5's exe has trouble when PATH has quotes (or spaces?) +_ detect bad classpath or path settings _ some sort of path/classpath tester/fixer app for windows _ that " norton" thing in the path makes things a mess _ http://dev.processing.org/bugs/show_bug.cgi?id=112 +_ http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1068388889 +_ CLASSPATH figured out what to do with quotes, but not PATH _ tie .pde files as documents of the application _ http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1094149466 _ figure out proper registry key for windows @@ -658,9 +662,6 @@ _ thread priority too high? or something weird _ need splash screen, startup takes a long time _ processing.exe: problem if expert version is run, and no java installed _ call the person a genius and tell them to install java -_ p5's exe has trouble when PATH has quotes (or spaces?) -_ http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1068388889 -_ CLASSPATH figured out what to do with quotes, but not PATH _ NullPointerException when alt is pressed _ (not our bug, but log it in the bug db anyways) _ might be something to do with the applet frame being an awt not swing