fix filter(GRAY), and add stroke join and cap to svg parser

This commit is contained in:
benfry
2007-03-23 20:43:51 +00:00
parent 73fb27c43f
commit c9fa72241e
5 changed files with 85 additions and 3 deletions
+50 -1
View File
@@ -126,6 +126,9 @@ import processing.xml.*;
* <LI> Patterns
* <LI> Embedded images
* </UL>
*
* For those interested, the SVG specification can be found
* <A HREF="http://www.w3.org/TR/SVG">here</A>.
*/
public class SVG {
@@ -458,6 +461,8 @@ public class SVG {
boolean stroke = parent.g.stroke;
int strokeColor = parent.g.strokeColor;
float strokeWeight = parent.g.strokeWeight;
int strokeCap = parent.g.strokeCap;
int strokeJoin= parent.g.strokeJoin;
boolean fill = parent.g.fill;
int fillColor = parent.g.fillColor;
@@ -469,6 +474,8 @@ public class SVG {
parent.g.stroke = stroke;
parent.g.strokeColor = strokeColor;
parent.g.strokeWeight = strokeWeight;
parent.g.strokeCap = strokeCap;
parent.g.strokeJoin = strokeJoin;
parent.g.fill = fill;
parent.g.fillColor = fillColor;
@@ -525,6 +532,8 @@ public class SVG {
boolean stroke;
int strokeColor;
float strokeWeight; // default is 1
int strokeCap;
int strokeJoin;
Gradient strokeGradient;
Paint strokeGradientPaint;
String strokeName; // id of another object, gradients only?
@@ -548,6 +557,8 @@ public class SVG {
stroke = false;
strokeColor = 0xff000000;
strokeWeight = 1;
strokeCap = PConstants.SQUARE; // equivalent to BUTT in svg spec
strokeJoin = PConstants.MITER;
strokeGradient = null;
strokeGradientPaint = null;
strokeName = null;
@@ -567,6 +578,8 @@ public class SVG {
stroke = parent.stroke;
strokeColor = parent.strokeColor;
strokeWeight = parent.strokeWeight;
strokeCap = parent.strokeCap;
strokeJoin = parent.strokeJoin;
strokeGradient = parent.strokeGradient;
strokeGradientPaint = parent.strokeGradientPaint;
strokeName = parent.strokeName;
@@ -674,9 +687,43 @@ public class SVG {
}
if (properties.hasAttribute("stroke-width")) {
strokeWeight = properties.getFloatAttribute("stroke-width");
// if NaN (i.e. if it's 'inherit') then default back to the inherit setting
strokeWeight = properties.getFloatAttribute("stroke-width", strokeWeight);
}
if (properties.hasAttribute("stroke-linejoin")) {
String linejoin = properties.getStringAttribute("stroke-linejoin");
if (linejoin.equals("inherit")) {
// do nothing, will inherit automatically
} else if (linejoin.equals("miter")) {
strokeJoin = PConstants.MITER;
} else if (linejoin.equals("round")) {
strokeJoin = PConstants.ROUND;
} else if (linejoin.equals("bevel")) {
strokeJoin = PConstants.BEVEL;
}
}
if (properties.hasAttribute("stroke-linecap")) {
String linecap = properties.getStringAttribute("stroke-linecap");
if (linecap.equals("inherit")) {
// do nothing, will inherit automatically
} else if (linecap.equals("butt")) {
strokeCap = PConstants.SQUARE;
} else if (linecap.equals("round")) {
strokeCap = PConstants.ROUND;
} else if (linecap.equals("square")) {
strokeCap = PConstants.PROJECT;
}
}
// fill defaults to black (though stroke defaults to "none")
// http://www.w3.org/TR/SVG/painting.html#FillProperties
if (properties.hasAttribute("fill")) {
@@ -804,6 +851,8 @@ public class SVG {
if (stroke) {
parent.stroke(strokeColor);
parent.strokeWeight(strokeWeight);
parent.strokeCap(strokeCap);
parent.strokeJoin(strokeJoin);
} else {
parent.noStroke();
}
+2 -2
View File
@@ -237,9 +237,9 @@ public interface PConstants {
// stroke modes
static final int SQUARE = 1 << 0;
static final int SQUARE = 1 << 0; // called 'butt' in the svg spec
static final int ROUND = 1 << 1;
static final int PROJECT = 1 << 2;
static final int PROJECT = 1 << 2; // called 'square' in the svg spec
static final int MITER = 1 << 3;
static final int BEVEL = 1 << 5;
+1
View File
@@ -504,6 +504,7 @@ public class PImage implements PConstants, Cloneable {
int col = 255 - pixels[i];
pixels[i] = 0xff000000 | (col << 16) | (col << 8) | col;
}
format = RGB;
} else {
// Converts RGB image data into grayscale using
+1
View File
@@ -42,6 +42,7 @@ X remove print(array) since it's silly?
[0] "potato"
[1] "tomato"
[2] "apple"
X fix filter(GRAY) on an ALPHA image to produce a good RGB image
0125p2
X updatePixels ref is wrong
+31
View File
@@ -20,10 +20,41 @@ X preprocessor cannot handle L or l added to 'long' values
X http://dev.processing.org/bugs/show_bug.cgi?id=492
X change constructors for Capture, also framerate to frameRate
_ need to update reference
X re-architect svg to properly inherit fill/stroke/etc from parents
X <g> object can specify fill/stroke for everyone below
X need to discern between having a fill specified and one not being present
_ java.extension.dirs has the library/extn stuff
_ can probably set this blank
_ the jar from which a class file has been loaded
_ getClass().getProtectionDomain().getCodeSource().getLocation().getFile()
_ don't allow for (blah; blah; blah) ;
_ or if (blah blah blah) ;
_ it's never useful. students can use { } if they want an empty block
_ "one file added to sketch" should be more descriptive
_ Added "blah.jpg" to the data folder of the sketch
_ cmd-w doesn't close window of opened applet (running inside p5)
_ ESC won't cancel rename
_ rename location is awkward, do it on the tab?
_ map() is not colored, neither is norm
_ pdf examples are shot
_ change pde files to use utf8
_ 1) if file contains binary data and
_ 2) its mod date is earlier than when p5 0125 was installed
_ offer to convert it, or ignore
_ then re-save the file to update the mod date
_ ...or, when first running p5 0125, offer to update sketches
_ the first time someone hides a tab, put up a msg explaining what it does
_ "don't warn me about this anymore"
_ add "don't warn me about this" for sketch renaming
_ make sure renamed version doesn't exist already
_ archive sketch shouldn't include applet or application dirs
_ or should it? this was how projects were being uploaded for class...
_ add to mac reference for present mode
_ can make full screen work via Info.plist key