From 164191da76478ded3756014f2fefde3c0de81154 Mon Sep 17 00:00:00 2001 From: benfry Date: Sat, 17 Feb 2007 16:28:28 +0000 Subject: [PATCH] fixing reference/javadoc --- build/shared/revisions.txt | 16 +++ candy/src/processing/candy/SVG.java | 158 +++++++++++++-------------- core/src/processing/core/PImage.java | 6 +- todo.txt | 4 + 4 files changed, 101 insertions(+), 83 deletions(-) diff --git a/build/shared/revisions.txt b/build/shared/revisions.txt index 84f7f64d7..f72860766 100644 --- a/build/shared/revisions.txt +++ b/build/shared/revisions.txt @@ -16,6 +16,22 @@ ABOUT REV 0125 - XX February 2007 that caused French keyboards to have problems since 0123. http://dev.processing.org/bugs/show_bug.cgi?id=480 ++ Blending modes have been finalized for 1.0, thanks to the help + of Dave Bollinger, who contributed code to complete the set: + http://dev.processing.org/bugs/show_bug.cgi?id=132 + See the reference for blend() for more details. Thanks Dave! + + +[ java ] + ++ Java 1.5.0_10 is no longer the default download at java.com, + so OpenGL applets should be more likely to work properly. + http://dev.processing.org/bugs/show_bug.cgi?id=513 + ++ Apple has released a Java update, which brings Java 1.4.2 on OS X + up to release 1.4.2_12. Subsequently we have updated the version of + Java included with the Linux and Windows releases to 1.4.2_12. + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . diff --git a/candy/src/processing/candy/SVG.java b/candy/src/processing/candy/SVG.java index b2f08b4f3..93be02a97 100755 --- a/candy/src/processing/candy/SVG.java +++ b/candy/src/processing/candy/SVG.java @@ -44,7 +44,7 @@ import processing.xml.*; * to be included with applets, meaning that its download size should be * in the neighborhood of 25-30k. Because of this size, it is not made part * of processing.core, because it would increase the download size of any - * applet by 20%, and it's not a feature that will be used by the majority + * applet by 20%, and it's not a feature that will be used by the majority * of our audience. For more sophisticated import/export, consider the * Batik library * from the Apache Software Foundation. Future improvements to this @@ -53,11 +53,11 @@ import processing.xml.*; * SVG Tiny or Basic, * although we still would not support the interactivity options. *

- * This library was specifically tested under SVG files created with Adobe - * Illustrator. We can't guarantee that it'll work for any SVGs created with + * This library was specifically tested under SVG files created with Adobe + * Illustrator. We can't guarantee that it will work for any SVGs created with * other software. In the future we would like to improve compatibility with * Open Source software such as InkScape, however initial tests show its - * base implementation produces more complicated files, and this will require + * base implementation produces more complicated files, and this will require * more time. *

* An SVG created under Illustrator must be created in one of two ways: @@ -88,10 +88,11 @@ import processing.xml.*; * } * * - * Note that processing.xml is imported as well. This is not needed - * when running the app directly from Processing, as Candy will know - * where it is. However when you export as an applet you will - * also need to export processing.xml along with it to have working Candy. + * Note that processing.xml is imported as well. + * This may not be required when running code within the Processing + * environment, but when exported it may cause a NoClassDefError. + * This will be fixed in later releases of Processing + * (Bug 518). * *


* @@ -125,9 +126,6 @@ import processing.xml.*; *

  • Patterns *
  • Embedded images * - * - * If you experience any other wierdness or bugs, please file them to - * flux.blackcat at gmail.com with subject: Delicious Candy */ public class SVG { @@ -270,12 +268,12 @@ public class SVG { } return null; } - - + + // grab the (fill) gradient from a particular object by name // and apply it to either the stroke or fill - // based on - + // based on + protected Paint getGradient(String name, float cx, float cy, float r) { BaseObject obj = (BaseObject) table.get(name); @@ -283,8 +281,8 @@ public class SVG { // try with underscores instead of spaces obj = (BaseObject) table.get(name.replace(' ', '_')); } - - if (obj != null) { + + if (obj != null) { VectorObject vobj = (VectorObject) obj; if (vobj.fillGradient != null) { return vobj.calcGradientPaint(vobj.fillGradient, cx, cy, r); @@ -292,16 +290,16 @@ public class SVG { } throw new RuntimeException("No gradient found for shape " + name); } - - + + protected Paint getGradient(String name, float x1, float y1, float x2, float y2) { BaseObject obj = (BaseObject) table.get(name); if (obj == null) { // try with underscores instead of spaces obj = (BaseObject) table.get(name.replace(' ', '_')); } - - if (obj != null) { + + if (obj != null) { VectorObject vobj = (VectorObject) obj; if (vobj.fillGradient != null) { return vobj.calcGradientPaint(vobj.fillGradient, x1, y1, x2, y2); @@ -310,10 +308,10 @@ public class SVG { throw new RuntimeException("No gradient found for shape " + name); } - + public void strokeGradient(String name, float x, float y, float r) { Paint paint = getGradient(name, x, y, r); - + if (parent.g instanceof PGraphicsJava2D) { PGraphicsJava2D p2d = ((PGraphicsJava2D) parent.g); @@ -321,10 +319,10 @@ public class SVG { p2d.strokeGradientObject = paint; } } - + public void strokeGradient(String name, float x1, float y1, float x2, float y2) { Paint paint = getGradient(name, x1, y1, x2, y2); - + if (parent.g instanceof PGraphicsJava2D) { PGraphicsJava2D p2d = ((PGraphicsJava2D) parent.g); @@ -332,11 +330,11 @@ public class SVG { p2d.strokeGradientObject = paint; } } - - + + public void fillGradient(String name, float x, float y, float r) { Paint paint = getGradient(name, x, y, r); - + if (parent.g instanceof PGraphicsJava2D) { PGraphicsJava2D p2d = ((PGraphicsJava2D) parent.g); @@ -344,11 +342,11 @@ public class SVG { p2d.fillGradientObject = paint; } } - - + + public void fillGradient(String name, float x1, float y1, float x2, float y2) { Paint paint = getGradient(name, x1, y1, x2, y2); - + if (parent.g instanceof PGraphicsJava2D) { PGraphicsJava2D p2d = ((PGraphicsJava2D) parent.g); @@ -359,19 +357,19 @@ public class SVG { /** - * Temporary hack for gradient handling. This is not supported + * Temporary hack for gradient handling. This is not supported * and will be removed from future releases. */ public void drawStyles() { //PApplet.println(root); - + if (root instanceof VectorObject) { ((VectorObject)root).drawStyles(); } else { PApplet.println("Only use drawStyles() on an object, not a group."); } } - + public void draw() { if (drawMode == PConstants.CENTER) { @@ -379,45 +377,45 @@ public class SVG { parent.translate(-width/2, -height/2); drawImpl(); parent.popMatrix(); - - } else if ((drawMode == PConstants.CORNER) || + + } else if ((drawMode == PConstants.CORNER) || (drawMode == PConstants.CORNERS)) { drawImpl(); - } + } } - - + + /** * Convenience method to draw at a particular location. */ public void draw(float x, float y) { parent.pushMatrix(); - + if (drawMode == PConstants.CENTER) { parent.translate(x - width/2, y - height/2); - - } else if ((drawMode == PConstants.CORNER) || + + } else if ((drawMode == PConstants.CORNER) || (drawMode == PConstants.CORNERS)) { parent.translate(x, y); } drawImpl(); - + parent.popMatrix(); } - - + + public void draw(float x, float y, float c, float d) { parent.pushMatrix(); - + if (drawMode == PConstants.CENTER) { // x and y are center, c and d refer to a diameter parent.translate(x - c/2f, y - d/2f); parent.scale(c / width, d / height); - + } else if (drawMode == PConstants.CORNER) { parent.translate(x, y); parent.scale(c / width, d / height); - + } else if (drawMode == PConstants.CORNERS) { // c and d are x2/y2, make them into width/height c -= x; @@ -427,7 +425,7 @@ public class SVG { parent.scale(c / width, d / height); } drawImpl(); - + parent.popMatrix(); } @@ -456,8 +454,8 @@ public class SVG { parent.g.ellipseMode = ellipseMode; } - - + + /** * Set the orientation for drawn objects, similar to PImage.imageMode(). * @param which Either CORNER, CORNERS, or CENTER. @@ -475,7 +473,7 @@ public class SVG { ignoreStyles(true); } - + /** * Enables or disables style information (fill and stroke) set in the file. * @param state true to use user-specified stroke/fill, false for svg version @@ -502,16 +500,16 @@ public class SVG { // set to false if the object is hidden in the layers palette boolean display; - + public BaseObject(XMLElement properties) { element = properties; - + id = properties.getStringAttribute("id"); if (id != null) { table.put(id, this); //System.out.println("now parsing " + id); } - + String displayStr = properties.getStringAttribute("display", "inline"); display = !displayStr.equals("none"); } @@ -553,7 +551,7 @@ public class SVG { public VectorObject(XMLElement properties) { super(properties); - + getColors(properties); getTransformation(properties); } @@ -658,7 +656,7 @@ public class SVG { } - protected Paint calcGradientPaint(Gradient gradient) { + protected Paint calcGradientPaint(Gradient gradient) { if (gradient instanceof LinearGradient) { LinearGradient grad = (LinearGradient) gradient; return new LinearGradientPaint(grad.x1, grad.y1, grad.x2, grad.y2, @@ -675,8 +673,8 @@ public class SVG { } - protected Paint calcGradientPaint(Gradient gradient, - float x1, float y1, float x2, float y2) { + protected Paint calcGradientPaint(Gradient gradient, + float x1, float y1, float x2, float y2) { if (gradient instanceof LinearGradient) { LinearGradient grad = (LinearGradient) gradient; return new LinearGradientPaint(x1, y1, x2, y2, @@ -685,9 +683,9 @@ public class SVG { } throw new RuntimeException("Not a linear gradient."); } - - - protected Paint calcGradientPaint(Gradient gradient, + + + protected Paint calcGradientPaint(Gradient gradient, float cx, float cy, float r) { if (gradient instanceof RadialGradient) { RadialGradient grad = (RadialGradient) gradient; @@ -704,7 +702,7 @@ public class SVG { protected void draw(){ if (!display) return; // don't display if set invisible - + if (!ignoreStyles) { drawStyles(); } @@ -734,8 +732,8 @@ public class SVG { } */ } - - + + protected void drawStyles() { parent.colorMode(PConstants.RGB, 255); @@ -773,7 +771,7 @@ public class SVG { } } } - + // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @@ -829,15 +827,15 @@ public class SVG { objects[objectCount++] = new LinearGradient(elem); } else if (name.equals("text")) { - PApplet.println("Text is not currently handled, " + + PApplet.println("Text is not currently handled, " + "convert text to outlines instead."); - + } else if (name.equals("filter")) { PApplet.println("Filters are not supported."); - + } else if (name.equals("mask")) { PApplet.println("Masks are not supported."); - + } else { PApplet.println("not handled " + name); } @@ -906,7 +904,7 @@ public class SVG { abstract protected void drawShape(); } - + static protected Hashtable parseStyleAttributes(String style) { Hashtable table = new Hashtable(); String[] pieces = style.split(";"); @@ -928,12 +926,12 @@ public class SVG { this.y1 = properties.getFloatAttribute("y1"); this.x2 = properties.getFloatAttribute("x2"); this.y2 = properties.getFloatAttribute("y2"); - - String transformStr = + + String transformStr = properties.getStringAttribute("gradientTransform"); if (transformStr != null) { this.transform = parseTransform(transformStr); - + Point2D t1 = transform.transform(new Point2D.Float(x1, y1), null); Point2D t2 = transform.transform(new Point2D.Float(x2, y2), null); this.x1 = (float) t1.getX(); @@ -947,8 +945,8 @@ public class SVG { protected void drawShape(){ } } - - + + // complete version is here // http://www.w3.org/TR/SVG/coords.html#TransformAttribute AffineTransform parseTransform(String what) { @@ -956,7 +954,7 @@ public class SVG { if (what.startsWith("matrix(") && what.endsWith(")")) { // columns go first with AT constructor what = what.substring(7, what.length() - 1); - return new AffineTransform(PApplet.parseFloat(PApplet.split(what, ' '))); + return new AffineTransform(PApplet.parseFloat(PApplet.split(what, ' '))); } } return null; @@ -972,12 +970,12 @@ public class SVG { this.cx = properties.getFloatAttribute("cx"); this.cy = properties.getFloatAttribute("cy"); this.r = properties.getFloatAttribute("r"); - - String transformStr = + + String transformStr = properties.getStringAttribute("gradientTransform"); if (transformStr != null) { this.transform = parseTransform(transformStr); - + Point2D t1 = transform.transform(new Point2D.Float(cx, cy), null); Point2D t2 = transform.transform(new Point2D.Float(cx + r, cy), null); this.cx = (float) t1.getX(); diff --git a/core/src/processing/core/PImage.java b/core/src/processing/core/PImage.java index 5846cdb3a..358d84c08 100644 --- a/core/src/processing/core/PImage.java +++ b/core/src/processing/core/PImage.java @@ -1095,9 +1095,9 @@ public class PImage implements PConstants, Cloneable { * C = max(A*factor, B). * Illustrator calls this "Lighten". * - *
  • DIFFERENCE - + *
  • DIFFERENCE - subtract colors from underlying image. * - *
  • EXCLUSION - + *
  • EXCLUSION - similar to DIFFERENCE, but less extreme. * *
  • MULTIPLY - Multiply the colors, result will always be darker. * @@ -1116,7 +1116,7 @@ public class PImage implements PConstants, Cloneable { * *
  • BURN - Darker areas are applied, increasing contrast, ignores lights. * Called "Color Burn" in Illustrator and Photoshop. - * + * */ static public int blendColor(int c1, int c2, int mode) { switch (mode) { diff --git a/todo.txt b/todo.txt index 9a818e84a..3b813eff8 100644 --- a/todo.txt +++ b/todo.txt @@ -2,6 +2,9 @@ X prev/next tab conflicting with typing brackets on french macs X http://dev.processing.org/bugs/show_bug.cgi?id=480 +_ update javadoc reference to include xml, candy, etc +_ need to add moviemaker reference + _ update to 1.4.2_12 on linux and windows _ with additional .pde files, don't allow static mode in front tab @@ -9,6 +12,7 @@ _ with additional .pde files, don't allow static mode in front tab libraries and classpaths [1.0] _ add control for dependencies (i.e. svg needs xml), needed for export +_ http://dev.processing.org/bugs/show_bug.cgi?id=518 _ add "pretty menu name" to the export.txt file _ more export.txt to xml? (nah, it's only flat information) _ need better platform designation setup for libs