From 04813a0c53bfef56ad3a3f7e098ae84c692bda27 Mon Sep 17 00:00:00 2001 From: benfry Date: Thu, 8 Jul 2004 21:03:06 +0000 Subject: [PATCH] more package mania.. preproc now inserts "public" in front of void setup --- app/PdePreferences.java | 14 +- app/PdePreprocessor.java | 3 +- app/PdeRuntime.java | 4 +- app/PdeSketch.java | 4 + .../lib/{pde.properties => preferences.txt} | 2 +- build/windows/launcher/launcher.cpp | 3 +- build/windows/launcher/processing.exe | Bin 33381 -> 33265 bytes build/windows/make.sh | 20 +- build/windows/run.sh | 2 +- core/PApplet.java | 17 +- core/PConstants.java | 14 +- core/PImage.java | 236 ++++++++---------- todo.txt | 14 +- 13 files changed, 166 insertions(+), 167 deletions(-) rename build/shared/lib/{pde.properties => preferences.txt} (98%) mode change 100644 => 100755 diff --git a/app/PdePreferences.java b/app/PdePreferences.java index e0a25bb6c..18948d888 100644 --- a/app/PdePreferences.java +++ b/app/PdePreferences.java @@ -40,12 +40,12 @@ import javax.swing.undo.*; /* need to bring all the prefs into here PdeEditor with its sketch.properties - and PdeBase with pde.properties + and PdeBase with preferences.txt on first run: processing.properties is created in user.home it contains the contents of - pde.properties + pde_platform.properties + preferences.txt + pde_platform.properties and then begins writing additional sketch.properties stuff this class no longer uses the Properties class, since @@ -111,7 +111,7 @@ public class PdePreferences extends JComponent { // important was deleted from the user prefs try { - load(PdeBase.getStream("pde.properties")); + load(PdeBase.getStream("preferences.txt")); } catch (Exception e) { PdeBase.showError(null, "Could not read default settings.\n" + @@ -282,7 +282,7 @@ public class PdePreferences extends JComponent { "More preferences can be edited directly\n" + "in the file " + preferencesFile.getAbsolutePath(); //"More preferences are in the 'lib' folder inside text files\n" + - //"named pde.properties and pde_" + + //"named preferences.txt and pde_" + //PdeBase.platforms[PdeBase.platform] + ".properties"; JTextArea textarea = new JTextArea(blather); @@ -452,7 +452,7 @@ public class PdePreferences extends JComponent { if ((PdeBase.platform == PdeBase.MACOSX) || (PdeBase.platform == PdeBase.MACOS9)) { - output = new FileOutputStream("lib/pde.properties"); + output = new FileOutputStream("lib/preferences.txt"); } else { // win95/98/ME doesn't set cwd properly URL url = getClass().getResource("buttons.gif"); @@ -496,7 +496,7 @@ public class PdePreferences extends JComponent { // save() is deprecated, and didn't properly // throw exceptions when it wasn't working skprops.store(output, "Settings for processing. " + - "See lib/pde.properties for defaults."); + "See lib/preferences.txt for defaults."); // need to close the stream.. didn't do this before skprops.close(); @@ -512,7 +512,7 @@ public class PdePreferences extends JComponent { // ................................................................. - // all the information from pde.properties + // all the information from preferences.txt //static public String get(String attribute) { //return get(attribute, null); diff --git a/app/PdePreprocessor.java b/app/PdePreprocessor.java index d27205dad..d945a43e2 100644 --- a/app/PdePreprocessor.java +++ b/app/PdePreprocessor.java @@ -231,6 +231,7 @@ public class PdePreprocessor { */ void writeHeader(PrintStream out, String imports[], String className) { + //out.print("package pootime;"); // emit emports that are needed for classes from the code folder if (imports != null) { @@ -247,7 +248,7 @@ public class PdePreprocessor { if (jdkVersionStr.equals("1.3")) { jdkVersion = JDK13; }; if (jdkVersionStr.equals("1.4")) { jdkVersion = JDK14; }; - for (int i = 0; i < jdkVersion; i++) { + for (int i = 0; i <= jdkVersion; i++) { for (int j = 0; j < defaultImports[i].length; j++) { out.print("import " + defaultImports[i][j] + ".*; "); } diff --git a/app/PdeRuntime.java b/app/PdeRuntime.java index ee7992741..3e3be5226 100644 --- a/app/PdeRuntime.java +++ b/app/PdeRuntime.java @@ -92,7 +92,7 @@ public class PdeRuntime implements PdeMessageConsumer { "-Djava.library.path=" + sketch.libraryPath, // might be "" "-cp", sketch.classPath, - "PApplet", + "processing.core.PApplet", PApplet.EXTERNAL_FLAG + location, sketch.mainClassName }; @@ -143,7 +143,6 @@ public class PdeRuntime implements PdeMessageConsumer { //System.out.println("draw mode"); while ((applet.frame != 1) && (!applet.finished)) { try { - //System.out.println("waiting to complete drawing"); Thread.sleep(100); } catch (InterruptedException e) { } } @@ -336,6 +335,7 @@ public class PdeRuntime implements PdeMessageConsumer { public void message(String s) { + //System.err.println("M" + s.length() + ":" + s); // this is PApplet sending a message (via System.out.println) // that signals that the applet has been quit. if (s.indexOf(PApplet.EXTERNAL_QUIT) == 0) { diff --git a/app/PdeSketch.java b/app/PdeSketch.java index d2f982f3e..19ad5fb6b 100644 --- a/app/PdeSketch.java +++ b/app/PdeSketch.java @@ -1354,11 +1354,15 @@ public class PdeSketch { } // add the appropriate bagel to the classpath + /* String jdkVersion = PdePreferences.get("compiler.jdk_version"); String bagelJar = "lib/export11.jar"; // default if (jdkVersion.equals("1.3") || jdkVersion.equals("1.4")) { bagelJar = "lib/export13.jar"; } + */ + String bagelJar = "lib/core.jar"; + //if (jdkVersionStr.equals("1.3")) { bagelJar = "export13.jar" }; //if (jdkVersionStr.equals("1.4")) { bagelJar = "export14.jar" }; packClassPathIntoZipFile(bagelJar, zos); diff --git a/build/shared/lib/pde.properties b/build/shared/lib/preferences.txt old mode 100644 new mode 100755 similarity index 98% rename from build/shared/lib/pde.properties rename to build/shared/lib/preferences.txt index 4020bf06a..7c402a50f --- a/build/shared/lib/pde.properties +++ b/build/shared/lib/preferences.txt @@ -2,7 +2,7 @@ # DO NOT MODIFY THIS FILE, OR DELETE SETTINGS FROM THIS FILE # These are the default preferences. They will be copied -# to your home folder into a file called .processing, +# to your home folder into a file called "Processing Preferences.txt" # where you can make changes for your machine. # You'll have problems running Processing if you incorrectly diff --git a/build/windows/launcher/launcher.cpp b/build/windows/launcher/launcher.cpp index 729355ae3..62a7a1370 100644 --- a/build/windows/launcher/launcher.cpp +++ b/build/windows/launcher/launcher.cpp @@ -170,7 +170,8 @@ WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow) "%s\\lib;" "%s\\lib\\build;" "%s\\lib\\pde.jar;" - "%s\\lib\\kjc.jar;" + "%s\\lib\\core.jar;" + "%s\\lib\\mrj.jar;" "%s\\lib\\oro.jar;" "%s\\lib\\antlr.jar;", diff --git a/build/windows/launcher/processing.exe b/build/windows/launcher/processing.exe index 9fc837f5fd12062e3c919694b877ffea2d9bf965..3c19b00d43d6be4015935faa6e3dce537cbeb701 100755 GIT binary patch delta 5902 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 delta 6040 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 diff --git a/build/windows/make.sh b/build/windows/make.sh index de9862789..66a54cec1 100755 --- a/build/windows/make.sh +++ b/build/windows/make.sh @@ -70,6 +70,9 @@ else # no longer needed with megabucket #cp dist/lib/pde_windows.properties work/lib/ + # java application stubs + #cp dist/lib/mrj.jar work/lib/ + echo Compiling processing.exe cd launcher make && cp processing.exe ../work/ @@ -121,11 +124,12 @@ rm -f processing/core/*.class # new regular version #CLASSPATH="..\\build\\windows\\work\\java\\lib\\rt.jar;..\\build\\windows\\work\\lib\\comm.jar;${QT_JAVA_PATH}" -CLASSPATH="..\\build\\windows\\work\\java\\lib\\rt.jar +CLASSPATH="..\\build\\windows\\work\\java\\lib\\rt.jar" export CLASSPATH +perl preproc.pl ../build/windows/work/jikes -d . +D -target 1.1 *.java -zip -r0q ../../build/windows/work/lib/core.jar processing +zip -rq ../build/windows/work/lib/core.jar processing #perl make.pl JIKES=../build/windows/work/jikes JDK13 #cp classes/*.class ../build/windows/work/classes/ @@ -150,8 +154,8 @@ zip -r0q ../../build/windows/work/lib/core.jar processing cd .. #################### TEMPORARY ##################### -if false -then +#if false +#then #################### TEMPORARY ##################### ### -- BUILD PREPROC --------------------------------------------- @@ -173,7 +177,7 @@ cd app/preprocessor cd ../.. #################### TEMPORARY ##################### -fi +#fi #################### TEMPORARY ##################### @@ -181,9 +185,11 @@ fi cd app -CLASSPATH="..\\build\\windows\\work\\classes;..\\build\\windows\\work\\lib\antlr.jar;..\\build\\windows\\work\\lib\\oro.jar;..\\build\\windows\\work\\java\\lib\\rt.jar;..\\build\\windows\\work\\lib\\comm.jar" +#CLASSPATH="..\\build\\windows\\work\\lib\\core.jar;..\\build\\windows\\work\\lib\\mrj.jar;..\\build\\windows\\work\\lib\antlr.jar;..\\build\\windows\\work\\lib\\oro.jar;..\\build\\windows\\work\\java\\lib\\rt.jar;..\\build\\windows\\work\\lib\\comm.jar" +CLASSPATH="..\\build\\windows\\work\\lib\\core.jar;..\\build\\windows\\work\\lib\\mrj.jar;..\\build\\windows\\work\\lib\antlr.jar;..\\build\\windows\\work\\lib\\oro.jar;..\\build\\windows\\work\\java\\lib\\rt.jar" -perl ../bagel/buzz.pl "../build/windows/work/jikes +D -classpath \"$CLASSPATH\" -d \"..\\build\\windows\\work/classes\"" -dJDK13 -dJDK14 *.java jeditsyntax/*.java preprocessor/*.java +#perl ../bagel/buzz.pl "../build/windows/work/jikes +D -classpath \"$CLASSPATH\" -d \"..\\build\\windows\\work/classes\"" -dJDK13 -dJDK14 *.java jeditsyntax/*.java preprocessor/*.java +../build/windows/work/jikes +D -classpath $CLASSPATH -d ..\\build\\windows\\work/classes *.java jeditsyntax/*.java preprocessor/*.java cd ../build/windows/work/classes rm -f ../lib/pde.jar diff --git a/build/windows/run.sh b/build/windows/run.sh index 946cbc108..0b035fbe8 100644 --- a/build/windows/run.sh +++ b/build/windows/run.sh @@ -30,7 +30,7 @@ fi # includes jaws.jar #CLASSPATH=\"java\\lib\\rt.jar\;java\\lib\\jaws.jar\;lib\;lib\\build\;lib\\pde.jar\;lib\\kjc.jar\;lib\\antlr.jar\;lib\\oro.jar\;lib\\comm.jar\;lib\\RXTXcomm.jar\;${QT_JAVA_PATH}\" -CLASSPATH=\"java\\lib\\rt.jar\;lib\;lib\\build\;lib\\pde.jar\;lib\\kjc.jar\;lib\\antlr.jar\;lib\\oro.jar\;lib\\comm.jar\;${QT_JAVA_PATH}\" +CLASSPATH=\"java\\lib\\rt.jar\;lib\;lib\\build\;lib\\pde.jar\;lib\\core.jar\;lib\\mrj.jar\;lib\\antlr.jar\;lib\\oro.jar\;lib\\comm.jar\;${QT_JAVA_PATH}\" export CLASSPATH #cd work && ./java/bin/java -Xint PdeBase diff --git a/core/PApplet.java b/core/PApplet.java index 0fed1c2fe..152c2bbce 100644 --- a/core/PApplet.java +++ b/core/PApplet.java @@ -45,7 +45,7 @@ public class PApplet extends Applet public PGraphics g; - static final boolean THREAD_DEBUG = true; + static final boolean THREAD_DEBUG = false; //true; public int pixels[]; @@ -231,16 +231,16 @@ public class PApplet extends Applet // ------------------------------------------------------------ - void setup() { + public void setup() { } - void draw() { + public void draw() { drawMethod = false; } - void loop() { + public void loop() { loopMethod = false; } @@ -2039,8 +2039,13 @@ public class PApplet extends Applet } - public void toGrayscale() { - g.toGrayscale(); + public void filter(int kind) { + g.filter(kind); + } + + + public void filter(int kind, float param) { + g.filter(kind, param); } diff --git a/core/PConstants.java b/core/PConstants.java index 5b4ae8c7b..7850694f6 100644 --- a/core/PConstants.java +++ b/core/PConstants.java @@ -75,6 +75,16 @@ public interface PConstants { static final int GIF = 3; + // filter/convert types + + static final int BLACK_WHITE = 0; + static final int GRAYSCALE = 1; + static final int BLUR = 2; + static final int GAUSSIAN_BLUR = 3; + static final int POSTERIZE = 4; + static final int FIND_EDGES = 5; + + // blend mode keyword definitions public final static int REPLACE = 0; @@ -95,9 +105,9 @@ public interface PConstants { // for messages - static final int CHATTER = 0; + static final int CHATTER = 0; static final int COMPLAINT = 1; - static final int PROBLEM = 2; + static final int PROBLEM = 2; // types of projection matrices diff --git a/core/PImage.java b/core/PImage.java index 3faa0879a..11aa2b5b8 100644 --- a/core/PImage.java +++ b/core/PImage.java @@ -154,7 +154,7 @@ public class PImage implements PConstants, Cloneable { public void alpha(int alpha[]) { // don't execute if mask image is different size if (alpha.length != pixels.length) { - System.err.println("alpha(): the alpha mask image must be the same size"); + System.err.println("alpha(): the mask image must be the same size"); return; } for (int i = 0; i < pixels.length; i++) { @@ -171,7 +171,7 @@ public class PImage implements PConstants, Cloneable { } } */ - format=RGBA; + format = RGBA; } @@ -195,24 +195,61 @@ public class PImage implements PConstants, Cloneable { return 0; } + /** - * [toxi040115] - * Converts RGB image data into grayscale using - * weighted RGB components, and keeps alpha channel intact. + */ - public void toGrayscale() { - for (int i = 0; i>16&0xff) + 151*(col>>8&0xff) + 28*(col&0xff))>>8; - pixels[i] = (col & ALPHA_MASK) | lum<<16 | lum<<8 | lum; + // FIND_EDGES (no params) .. high pass filter + // BLUR (no params) + // GAUSSIAN_BLUR (one param) + // BLACK_WHITE? (param for midpoint) + // GRAYSCALE + // POSTERIZE (int num of levels) + public void filter(int kind) { + switch (kind) { + + case BLACK_WHITE: + filter(BLACK_WHITE, 0.5f); + break; + + case GRAYSCALE: + // Converts RGB image data into grayscale using + // weighted RGB components, and keeps alpha channel intact. + // [toxi 040115] + for (int i = 0; i < pixels.length; i++) { + int col = pixels[i]; + // luminance = 0.3*red + 0.59*green + 0.11*blue + // 0.30 * 256 = 77 + // 0.59 * 256 = 151 + // 0.11 * 256 = 28 + int lum = (77*(col>>16&0xff) + 151*(col>>8&0xff) + 28*(col&0xff))>>8; + pixels[i] = (col & ALPHA_MASK) | lum<<16 | lum<<8 | lum; + } + break; } } + public void filter(int kind, float param) { + switch (kind) { + + case BLACK_WHITE: // greater than or equal to the threshold + int thresh = (int) (param * 255); + for (int i = 0; i < pixels.length; i++) { + int max = Math.max((pixels[i] & RED_MASK) >> 16, + Math.max((pixels[i] & GREEN_MASK) >> 8, + (pixels[i] & BLUE_MASK))); + pixels[i] = (pixels[i] & ALPHA_MASK) | + ((max < thresh) ? 0x000000 : 0xffffff); + } + break; + + case GRAYSCALE: + filter(GRAYSCALE); + break; + } + } + ////////////////////////////////////////////////////////////// @@ -338,34 +375,7 @@ public class PImage implements PConstants, Cloneable { */ public void copy(int sx1, int sy1, int sx2, int sy2, int dx1, int dy1, int dx2, int dy2) { - switch (image_mode) { - //case CORNERS: - //break; - case CORNER: - sx2 += sx1; sy2 += sy1; - dx2 += dx1; dy2 += dy1; - break; - case CENTER: - sx2 /= 2f; sy2 /= 2f; - dx2 /= 2f; dy2 /= 2f; - break; - case CENTER_RADIUS: - int hr, vr; - hr = sx2; sx2 = sx1 + hr; sx1 -= hr; - vr = sy2; sy2 = sy1 + vr; sy1 -= vr; - hr = dx2; dx2 = dx1 + hr; dx1 -= hr; - vr = dy2; dy2 = dy1 + vr; dy1 -= vr; - break; - } - - if (intersect(sx1, sy1, sx2, sy2, dx1, dy1, dx2, dy2)) { - blit_resize(this.get(sx1, sy1, sx2 - sx1, sy2 - sy1), - 0, 0, sx2 - sx1 - 1, sy2 - sy1 - 1, - pixels, width, height, dx1, dy1, dx2, dy2, REPLACE); - } else { - blit_resize(this, sx1, sy1, sx2, sy2, - pixels, width, height, dx1, dy1, dx2, dy2, REPLACE); - } + copy(this, sx1, sy1, sx2, sy2, dx1, dy1, dx2, dy2); } @@ -374,28 +384,25 @@ public class PImage implements PConstants, Cloneable { */ public void copy(PImage src, int sx1, int sy1, int sx2, int sy2, int dx1, int dy1, int dx2, int dy2) { - switch (image_mode) { - //case CORNERS: - //break; - case CORNER: + if (image_mode == CORNER) { // if CORNERS, do nothing sx2 += sx1; sy2 += sy1; dx2 += dx1; dy2 += dy1; - break; - case CENTER: + + } else if (image_mode == CENTER) { sx2 /= 2f; sy2 /= 2f; dx2 /= 2f; dy2 /= 2f; - break; - case CENTER_RADIUS: - int hr, vr; - hr = sx2; sx2 = sx1 + hr; sx1 -= hr; - vr = sy2; sy2 = sy1 + vr; sy1 -= vr; - hr = dx2; dx2 = dx1 + hr; dx1 -= hr; - vr = dy2; dy2 = dy1 + vr; dy1 -= vr; - break; } - blit_resize(src, sx1, sy1, sx2, sy2, - pixels, width, height, dx1, dy1, dx2, dy2, REPLACE); + if ((src == this) && + intersect(sx1, sy1, sx2, sy2, dx1, dy1, dx2, dy2)) { + // if src is me, and things intersect, make a copy of the data + blit_resize(get(sx1, sy1, sx2 - sx1, sy2 - sy1), + 0, 0, sx2 - sx1 - 1, sy2 - sy1 - 1, + pixels, width, height, dx1, dy1, dx2, dy2, REPLACE); + } else { + blit_resize(src, sx1, sy1, sx2, sy2, + pixels, width, height, dx1, dy1, dx2, dy2, REPLACE); + } } @@ -419,39 +426,13 @@ public class PImage implements PConstants, Cloneable { } } + /** - * Copy things from one area of this image to another area + * Blends one area of this image to another area */ public void blend(int sx1, int sy1, int sx2, int sy2, int dx1, int dy1, int dx2, int dy2, int mode) { - switch (image_mode) { - //case CORNERS: - //break; - case CORNER: - sx2 += sx1; sy2 += sy1; - dx2 += dx1; dy2 += dy1; - break; - case CENTER: - sx2 /= 2f; sy2 /= 2f; - dx2 /= 2f; dy2 /= 2f; - break; - case CENTER_RADIUS: - int hr, vr; - hr = sx2; sx2 = sx1 + hr; sx1 -= hr; - vr = sy2; sy2 = sy1 + vr; sy1 -= vr; - hr = dx2; dx2 = dx1 + hr; dx1 -= hr; - vr = dy2; dy2 = dy1 + vr; dy1 -= vr; - break; - } - - if (intersect(sx1, sy1, sx2, sy2, dx1, dy1, dx2, dy2)) { - blit_resize(this.get(sx1, sy1, sx2 - sx1, sy2 - sy1), - 0, 0, sx2 - sx1 - 1, sy2 - sy1 - 1, - pixels, width, height, dx1, dy1, dx2, dy2, mode); - } else { - blit_resize(this, sx1, sy1, sx2, sy2, - pixels, width, height, dx1, dy1, dx2, dy2, mode); - } + blend(this, sx1, sy1, sx2, sy2, dx1, dy1, dx2, dy2, mode); } @@ -460,28 +441,24 @@ public class PImage implements PConstants, Cloneable { */ public void blend(PImage src, int sx1, int sy1, int sx2, int sy2, int dx1, int dy1, int dx2, int dy2, int mode) { - switch (image_mode) { - //case CORNERS: - //break; - case CORNER: + if (image_mode == CORNER) { // if CORNERS, do nothing sx2 += sx1; sy2 += sy1; dx2 += dx1; dy2 += dy1; - break; - case CENTER: + + } else if (image_mode == CENTER) { sx2 /= 2f; sy2 /= 2f; dx2 /= 2f; dy2 /= 2f; - break; - case CENTER_RADIUS: - int hr, vr; - hr = sx2; sx2 = sx1 + hr; sx1 -= hr; - vr = sy2; sy2 = sy1 + vr; sy1 -= vr; - hr = dx2; dx2 = dx1 + hr; dx1 -= hr; - vr = dy2; dy2 = dy1 + vr; dy1 -= vr; - break; } - blit_resize(src, sx1, sy1, sx2, sy2, - pixels, width, height, dx1, dy1, dx2, dy2, mode); + if ((src == this) && + intersect(sx1, sy1, sx2, sy2, dx1, dy1, dx2, dy2)) { + blit_resize(get(sx1, sy1, sx2 - sx1, sy2 - sy1), + 0, 0, sx2 - sx1 - 1, sy2 - sy1 - 1, + pixels, width, height, dx1, dy1, dx2, dy2, mode); + } else { + blit_resize(src, sx1, sy1, sx2, sy2, + pixels, width, height, dx1, dy1, dx2, dy2, mode); + } } @@ -573,19 +550,20 @@ public class PImage implements PConstants, Cloneable { ////////////////////////////////////////////////////////////// - // internal blitter/resizer/copier from toxi - // uses bilinear filtering if smooth() has been enabled - // 'mode' determines the blending mode used in the process - + /** + * Internal blitter/resizer/copier from toxi. + * Uses bilinear filtering if smooth() has been enabled + * 'mode' determines the blending mode used in the process. + */ private void blit_resize(PImage img, int srcX1, int srcY1, int srcX2, int srcY2, int[] destPixels, int screenW, int screenH, int destX1, int destY1, int destX2, int destY2, int mode) { - if (srcX1<0) srcX1=0; - if (srcY1<0) srcY1=0; - if (srcX2>=img.width) srcX2=img.width-1; - if (srcY2>=img.width) srcY2=img.height-1; + if (srcX1 < 0) srcX1 = 0; + if (srcY1 < 0) srcY1 = 0; + if (srcX2 >= img.width) srcX2 = img.width - 1; + if (srcY2 >= img.width) srcY2 = img.height - 1; int srcW = srcX2 - srcX1; int srcH = srcY2 - srcY1; @@ -834,10 +812,15 @@ public class PImage implements PConstants, Cloneable { r = ((ul*((cUL&RED_MASK)>>16) + ll*((cLL&RED_MASK)>>16) + ur*((cUR&RED_MASK)>>16) + lr*((cLR&RED_MASK)>>16)) << PREC_RED_SHIFT) & RED_MASK; - g = ( (ul*(cUL&GREEN_MASK) + ll*(cLL&GREEN_MASK) + - ur*(cUR&GREEN_MASK) + lr*(cLR&GREEN_MASK)) >>> PRECISIONB) & GREEN_MASK; + + g = ((ul*(cUL&GREEN_MASK) + ll*(cLL&GREEN_MASK) + + ur*(cUR&GREEN_MASK) + lr*(cLR&GREEN_MASK)) + >>> PRECISIONB) & GREEN_MASK; + b = (ul*(cUL&BLUE_MASK) + ll*(cLL&BLUE_MASK) + - ur*(cUR&BLUE_MASK) + lr*(cLR&BLUE_MASK)) >>> PRECISIONB; + ur*(cUR&BLUE_MASK) + lr*(cLR&BLUE_MASK)) + >>> PRECISIONB; + a = ((ul*((cUL&ALPHA_MASK)>>>24) + ll*((cLL&ALPHA_MASK)>>>24) + ur*((cUR&ALPHA_MASK)>>>24) + lr*((cLR&ALPHA_MASK)>>>24)) << PREC_ALPHA_SHIFT) & ALPHA_MASK; @@ -1063,27 +1046,6 @@ public class PImage implements PConstants, Cloneable { } - /* - // why is this code here? me confused [fry] - public void save(OutputStream output, int type) { - try { - if (type == TARGA) { - write_targa(output, pixels, width, height); - - } else if (type == TIFF) { - write_tiff(output, pixels, width, height); - - } else { - System.err.println("can't save image as that type"); - } - } catch (IOException e) { - System.err.println("error while trying to save image"); - e.printStackTrace(); - } - } - */ - - public void smooth() { smooth = true; } @@ -1093,9 +1055,11 @@ public class PImage implements PConstants, Cloneable { } + /** + * mode is one of CORNERS, CORNER, CENTER + */ public void imageMode(int mode) { image_mode = mode; } - } diff --git a/todo.txt b/todo.txt index 3de7f1c06..758311574 100644 --- a/todo.txt +++ b/todo.txt @@ -220,18 +220,26 @@ X modify image functions to use imageMode X lots more work on make.sh for both mac and pc X further tweaking of the new class structure X trying to get the build scripts wrapped up/working +X remove more (all?) ifdefs from code base + +040708 morning / early afternoon +X more work on ifdef removal / build scripts +X ask creas about src or dest in image functions +X finish imaging api +X modify make.sh to build processing.core _ casting working properly.. int() maps to toInt()? _ what is performance hit for this thing? -_ modify make.sh to build processing.core _ processing.app -> PdeBase, PdeEditor.. _ processing.serial -> PSerial, [PUsb] _ processing.video -> PMovie (file), PCamera (capture) _ processing.net -> PClient, PServer _ rewrite video, net, serial libraries to be separate -_ remove more (all?) ifdefs from code base -_ ask creas about src or dest in image functions +_ expand/subset for array operations (floats, ints, Strings) +_ see if reflection will allow expand for all class types +_ append/unappend (no push/pop), shift/unshift, +_ slice, splice, reverse, concat, split not necessarily before release _ check into open-source paperwork for p5