From a3fc674734ceca735363e3bc5a3bbc335569ef74 Mon Sep 17 00:00:00 2001 From: benfry Date: Sat, 11 Oct 2008 20:14:24 +0000 Subject: [PATCH] more release notes, bezier bug, other tweaks --- build/shared/revisions.txt | 117 ++++++++++++------ core/src/processing/core/PApplet.java | 14 +++ core/src/processing/core/PGraphics.java | 11 +- core/todo.txt | 69 +++++------ .../processing/opengl/PGraphicsOpenGL.java | 4 +- 5 files changed, 136 insertions(+), 79 deletions(-) diff --git a/build/shared/revisions.txt b/build/shared/revisions.txt index 4d22a2b81..a1e3e108e 100644 --- a/build/shared/revisions.txt +++ b/build/shared/revisions.txt @@ -7,7 +7,7 @@ releases will be super crusty. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -ABOUT REV 0149 - XX September 2008 +ABOUT REV 0149 - 11 October 2008 Very large number of bug fixes and changes. All renderers that use PGraphics will need to be updated for this release. @@ -20,8 +20,81 @@ Also many updates to the examples in this release. * RELEASES SINCE 0135 CONTAIN MANY SIGNIFICANT CHANGES, PLEASE READ * * THE NOTES IN THIS FILE FOR ANY RELEASE THAT YOU'VE NOT YET USED. * +[ changes ] + ++ Change how PGraphics objects are created for better consistency. Sadly, + this will require any libraries that subclass PGraphics to be rebuilt + for this release. (However, internally it's a great improvement.) + Renderer library authors please read the reference for PGraphics: + http://dev.processing.org/reference/core/javadoc/processing/core/PGraphics.html + For library developers, a gritty list of the internal function changes + can be found in processing/core/done.txt in the revision 0149 section under + the heading "PGraphics API changes". (It's not poetic, but it's real.) + ++ We've decided that vector geometry is as important as image data, so the + Candy library has been removed, and replaced by a built-in loadShape() + method in PApplet, which returns a PShape object. (Candy lives on as the + PShapeSVG class, which is the PShape subclass created by loadShape.) + A shape() command has been added (like the image() command for images). + See the new SVG examples for more information. In the future, we'd like + to support other vector formats (such as OBJ) with loadShape(), or + provide a means for libraries to register themselves to load shape data. + ++ The PShape object is just a container for now, but will someday provide + methods for accessing actual vertex information. + ++ Because of the SVG changes, the XML library is now built into the core. + This means that processing.xml will be imported by default (no need for + "import processing.xml" in your sketch). This also means that "XML" + will no longer be seen in the "Import Library" menu. + ++ Altered how createInput(), save(), and saveFrame() work so that they + are more friendly to signed applets. + ++ Implemented new error/warning system inside PGraphics so that errors + are only shown once, and non-fatal errors do not shut down the sketch. + ++ The unhint() method has been removed, see the hint() reference for changes. + ++ Changes to how match() works to bring back in line with other regexp + implementations. Instead of only returning matching groups, match 0 + is the matching sequence, and array elements [1] and higher represent + each of the groups (sequences found in parens). + Also starting in this release, multiline matching (Pattern.MULTILINE) + and dotall mode (Pattern.DOTALL) are used by default, so that ^ and $ + match the beginning and end of any lines found in the source, + and the . operator will also pick up newline characters. + ++ Removed MACOS9 constant from processing.core.PConstants. Bye bye 2001. + ++ Deprecated the NORMALIZED constant, use NORMAL instead. + ++ Removed some items from the default imports because they're 1) likely + to cause naming collisions and 2) more likely to be used by advanced + users (who can add 'em themselves anyway). The removed items include: + javax.sound.midi,javax.sound.midi.spi, + javax.sound.sampled,javax.sound.sampled.spi, + javax.xml.parsers,javax.xml.transform,javax.xml.transform.dom, + javax.xml.transform.sax,javax.xml.transform.stream, + org.xml.sax,org.xml.sax.ext,org.xml.sax.helpers + You can add default imports to your preferences.txt file by adding to + the preproc.imports line. But keep in mind that this will make your + code incompatible with Processing on any machine that doesn't have + its preferences.txt mangled in the same manner. + ++ Update Quaqua to 4.4.7 on Mac OS X (http://www.randelshofer.ch/quaqua/) + ++ Disable abyssmally slow Sun renderer on OS X 10.5, by setting + apple.awt.graphics.UseQuartz to true inside PApplet.main(). + [ bug fixes ] ++ Prevent caps/joins from throwing an error and halting the render. + This was a problem when drawing SVG files with OpenGL: + http://dev.processing.org/bugs/show_bug.cgi?id=628 + However, complex shapes or shapes with holes will produce an error in OpenGL: + http://dev.processing.org/bugs/show_bug.cgi?id=947 + + The point() command should now work always and consistently in OpenGL as well as Java 2D. http://dev.processing.org/bugs/show_bug.cgi?id=121 @@ -66,44 +139,16 @@ Also many updates to the examples in this release. been seen or confirmed recently, closing it. http://dev.processing.org/bugs/show_bug.cgi?id=56 -[ changes ] ++ Add additional newline hack so that Auto Format has less errors. -+ Change how PGraphics objects are created for better consistency. Sadly, - this will require any libraries that subclass PGraphics to be rebuilt - for this release. (However, internally it's a great improvement.) - Renderer library authors please read the reference for PGraphics: - http://dev.processing.org/reference/core/javadoc/processing/core/PGraphics.html ++ Fix video capture problems with OpenGL on Mac OS X. + http://dev.processing.org/bugs/show_bug.cgi?id=882 -+ Altered how createInput(), save(), and saveFrame() work so that they - are more friendly to signed applets. ++ Sketch export results in 100x100 default size, regardless of size() setting + http://dev.processing.org/bugs/show_bug.cgi?id=945 -+ The unhint() method has been removed, see the hint() reference for changes. - -+ Changes to how match() works to bring back in line with other regexp - implementations. Instead of only returning matching groups, match 0 - is the matching sequence, and array elements [1] and higher represent - each of the groups (sequences found in parens). - Also starting in this release, multiline matching (Pattern.MULTILINE) - and dotall mode (Pattern.DOTALL) are used by default, so that ^ and $ - match the beginning and end of any lines found in the source, - and the . operator will also pick up newline characters. - -+ Removed MACOS9 constant from processing.core.PConstants. Bye bye 2001. - -+ Removed some items from the default imports because they're 1) likely - to cause naming collisions and 2) more likely to be used by advanced - users (who can add 'em themselves anyway). The removed items include: - javax.sound.midi,javax.sound.midi.spi, - javax.sound.sampled,javax.sound.sampled.spi, - javax.xml.parsers,javax.xml.transform,javax.xml.transform.dom, - javax.xml.transform.sax,javax.xml.transform.stream, - org.xml.sax,org.xml.sax.ext,org.xml.sax.helpers - You can add default imports to your preferences.txt file by adding to - the preproc.imports line. But keep in mind that this will make your - code incompatible with Processing on any machine that doesn't have - its preferences.txt mangled in the same manner. - -+ Update Quaqua to 4.4.7 on Mac OS X (http://www.randelshofer.ch/quaqua/) ++ Fix case where creating a new tab throws a NullPointerException. + http://dev.processing.org/bugs/show_bug.cgi?id=940 [ additions ] diff --git a/core/src/processing/core/PApplet.java b/core/src/processing/core/PApplet.java index 4dbae8917..2c2e72bfc 100644 --- a/core/src/processing/core/PApplet.java +++ b/core/src/processing/core/PApplet.java @@ -6289,6 +6289,9 @@ public class PApplet extends Applet * */ static public void main(String args[]) { + // Disable abyssmally slow Sun renderer on OS X 10.5. + System.setProperty("apple.awt.graphics.UseQuartz", "true"); + if (args.length < 1) { System.err.println("Usage: PApplet "); System.err.println("For additional options, " + @@ -7287,6 +7290,11 @@ public class PApplet extends Applet } + public PMatrix getMatrix() { + return g.getMatrix(); + } + + public PMatrix2D getMatrix(PMatrix2D target) { return g.getMatrix(target); } @@ -7297,6 +7305,12 @@ public class PApplet extends Applet } + public void setMatrix(PMatrix source) { + if (recorder != null) recorder.setMatrix(source); + g.setMatrix(source); + } + + public void setMatrix(PMatrix2D source) { if (recorder != null) recorder.setMatrix(source); g.setMatrix(source); diff --git a/core/src/processing/core/PGraphics.java b/core/src/processing/core/PGraphics.java index bf797fee1..fa62b4603 100644 --- a/core/src/processing/core/PGraphics.java +++ b/core/src/processing/core/PGraphics.java @@ -1119,9 +1119,11 @@ public class PGraphics extends PImage implements PConstants { else if (textureV > 1) textureV = 1; } - + /** This feature is in testing, do not use or rely upon its implementation */ public void breakShape() { + showWarning("This renderer cannot currently handle concave shapes, " + + "or shapes with holes."); } @@ -1155,6 +1157,7 @@ public class PGraphics extends PImage implements PConstants { public void bezierVertex(float x2, float y2, float x3, float y3, float x4, float y4) { + bezierInitCheck(); bezierVertexCheck(); PMatrix3D draw = bezierDrawMatrix; @@ -1181,6 +1184,7 @@ public class PGraphics extends PImage implements PConstants { public void bezierVertex(float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4) { + bezierInitCheck(); bezierVertexCheck(); PMatrix3D draw = bezierDrawMatrix; @@ -1965,7 +1969,8 @@ public class PGraphics extends PImage implements PConstants { protected void bezierInit() { // overkill to be broken out, but better parity with the curve stuff below - bezierDetail(bezierDetail); + bezierDetail(bezierDetail); + bezierInited = true; } @@ -1984,8 +1989,6 @@ public class PGraphics extends PImage implements PConstants { //mult_spline_matrix(bezierForwardMatrix, bezier_basis, bezierDrawMatrix, 4); //bezierDrawMatrix.set(bezierForwardMatrix); bezierDrawMatrix.apply(bezierBasisMatrix); - - bezierInited = true; } diff --git a/core/todo.txt b/core/todo.txt index 600116f4d..23d86f603 100644 --- a/core/todo.txt +++ b/core/todo.txt @@ -48,6 +48,8 @@ X this is an opengl restriction, should we stick with it elsewhere? X and changing stroke weight in general (with lines/shapes) o no renderer does this, we should probably disable it X added a note to the reference about it +X may need to add to PApplet.main() for OS X 10.5 +X System.setProperty("apple.awt.graphics.UseQuartz", "true"); cleaning o chooseFile() and chooseFolder() with named fxn callbacks @@ -96,52 +98,45 @@ X in case the hint() has been enabled in the meantime X or rather, always load native font, even w/o the hint() being set PGraphics API changes -setMainDrawingSurface() -> setPrimarySurface() -mainDrawingSurface = primarySurface; -resize() -> setSize() (roughly) -endShape() with no params is no longer 'final' -X/Y/Z -> TX/TY/TZ -MX/MY/MZ -> X/Y/Z (for sake of PShape) -render_triangles -> renderTriangles() -depth_sort_triangles -> sortTriangles() -render_lines -> renderLines() -depth_sort_lines -> sortLines() -no longer any abstract methods in PGraphics itself -removed support for specular alpha (and its 'SPA' constant) -clear() -> backgroundImpl() -add DIAMETER as synonym for CENTER for ellipseMode and friends -textFontNative and textFontNativeMetrics have been removed - they require a font rendering context on which to draw - and were a weird sort of hack - see how the classes implement them now -hint(ENABLE_NATIVE_FONTS) goes away - need to mention in createFont() reference - also maybe cover in the loadFont() reference? (maybe problem...) -image.cache has been removed, replaced with get/set/removeCache() - this allows per-renderer image cache data to be stored -removed textFontNative and textFontNativeMetrics carp -imageMode ignored for get(), set(), blend() and copy() -smooth is now part of PGraphics, moved out of PImage -imageMode has been removed from PImage, too awkward -raw must handle points, lines, triangles, and textures -light position and normal are now PVector object -change NORMALIZED to NORMAL for textureMode() +X setMainDrawingSurface() -> setPrimarySurface() +X mainDrawingSurface = primarySurface; +X resize() -> setSize() (roughly) +X endShape() with no params is no longer 'final' +X X/Y/Z -> TX/TY/TZ +X MX/MY/MZ -> X/Y/Z (for sake of PShape) +X render_triangles -> renderTriangles() +X depth_sort_triangles -> sortTriangles() +X render_lines -> renderLines() +X depth_sort_lines -> sortLines() +X no longer any abstract methods in PGraphics itself +X removed support for specular alpha (and its 'SPA' constant) +X clear() -> backgroundImpl() +X add DIAMETER as synonym for CENTER for ellipseMode and friends +X textFontNative and textFontNativeMetrics have been removed +X they've been re-implemented per-PGraphics in a less hacky way +X hint(ENABLE_NATIVE_FONTS) goes away +X need to mention in createFont() reference +X also maybe cover in the loadFont() reference? (maybe problem...) +X image.cache has been removed, replaced with get/set/removeCache() +X this allows per-renderer image cache data to be stored +X imageMode has been removed from PImage, too awkward +X this also means that imageMode ignored for get(), set(), blend() and copy() +X smooth is now part of PGraphics, moved out of PImage +X raw must handle points, lines, triangles, and textures +X light position and normal are now PVector object +X changed NORMALIZED to NORMAL for textureMode() - -_ may need to add to PApplet.main() for OS X 10.5 -_ System.setProperty("apple.awt.graphics.UseQuartz","true"); - -svg/pshape/pgraphics priority before 0149 +shapes X maybe finish off the svg crap for this release X working on pshape X add shape() methods to PGraphics/PApplet X test and fix svg examples -_ revisions.txt for x/y/z/ tx/ty/tz.. other changes in api.txt +X revisions.txt for x/y/z/ tx/ty/tz.. other changes in api.txt X bring svg into main lib X need to straighten out 'table' object for quick object lookup X maybe add to all parent tables? (no, this gets enormous quickly) X fix svg caps/joins for opengl with svg library -_ http://dev.processing.org/bugs/show_bug.cgi?id=628 +X http://dev.processing.org/bugs/show_bug.cgi?id=628 X save/restore more of the p5 graphics drawing state X not setting colorMode(), strokeCap, etc. X ignoreStyles is broken - how to handle diff --git a/opengl/src/processing/opengl/PGraphicsOpenGL.java b/opengl/src/processing/opengl/PGraphicsOpenGL.java index 3887c1b51..d8495b7e4 100644 --- a/opengl/src/processing/opengl/PGraphicsOpenGL.java +++ b/opengl/src/processing/opengl/PGraphicsOpenGL.java @@ -1874,8 +1874,8 @@ public class PGraphicsOpenGL extends PGraphics3D { ////////////////////////////////////////////////////////////// // STROKE CAP/JOIN/WEIGHT - - + + public void strokeWeight(float weight) { this.strokeWeight = weight; }