mirror of
https://github.com/processing/processing4.git
synced 2026-06-16 04:26:26 +02:00
fix filter(GRAY), and add stroke join and cap to svg parser
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user