new preproc work for int() et al on arrays.. routes through PApplet

This commit is contained in:
benfry
2004-07-08 23:02:59 +00:00
parent 47469b6de6
commit 098e384045
6 changed files with 94 additions and 32 deletions
+1 -1
View File
@@ -88,7 +88,7 @@ public class PdeCompiler implements PdeMessageConsumer {
// necessary to make output classes compatible with 1.1
// i.e. so that exported applets can work with ms jvm on the web
"-target",
PdePreferences.get("compiler.jdk_version"), //"1.1",
PdePreferences.get("preproc.jdk_version"), //"1.1",
// let the incompatability headache begin
// used when run without a vm ("expert" mode)
+9 -10
View File
@@ -59,11 +59,11 @@ public class PdePreprocessor {
*/
public PdePreprocessor() {
defaultImports[JDK11] =
PApplet.split(PdePreferences.get("compiler.imports.jdk11"), ',');
PApplet.split(PdePreferences.get("preproc.imports.jdk11"), ',');
defaultImports[JDK13] =
PApplet.split(PdePreferences.get("compiler.imports.jdk13"), ',');
PApplet.split(PdePreferences.get("preproc.imports.jdk13"), ',');
defaultImports[JDK14] =
PApplet.split(PdePreferences.get("compiler.imports.jdk14"), ',');
PApplet.split(PdePreferences.get("preproc.imports.jdk14"), ',');
}
@@ -79,14 +79,13 @@ public class PdePreprocessor {
*/
public String write(String program, String buildPath, String name,
String extraImports[]) throws java.lang.Exception {
// if the program ends with a comment, and no CR or LF
// an OutOfMemoryError will happen.. not gonna track down the
// bug now, so here's a hack for it:
if (program.endsWith("//")) {
// if the program ends with no CR or LF an OutOfMemoryError will happen.
// not gonna track down the bug now, so here's a hack for it:
if (program.charAt(program.length()-1) != '\n') {
program += "\n";
}
if (PdePreferences.getBoolean("compiler.substitute_unicode")) {
if (PdePreferences.getBoolean("preproc.substitute_unicode")) {
// check for non-ascii chars (these will be/must be in unicode format)
char p[] = program.toCharArray();
int unicodeCount = 0;
@@ -204,7 +203,7 @@ public class PdePreprocessor {
// if desired, serialize the parse tree to an XML file. can
// be viewed usefully with Mozilla or IE
if (PdePreferences.getBoolean("compiler.output_parse_tree")) {
if (PdePreferences.getBoolean("preproc.output_parse_tree")) {
stream = new PrintStream(new FileOutputStream("parseTree.xml"));
stream.println("<?xml version=\"1.0\"?>");
@@ -244,7 +243,7 @@ public class PdePreprocessor {
// emit standard imports (read from pde.properties)
// for each language level that's being used.
String jdkVersionStr = PdePreferences.get("compiler.jdk_version");
String jdkVersionStr = PdePreferences.get("preproc.jdk_version");
int jdkVersion = JDK11; // default
if (jdkVersionStr.equals("1.3")) { jdkVersion = JDK13; };
+14 -14
View File
@@ -169,40 +169,40 @@ history.recording = true
export.library = false
# may be useful when attempting to debug the preprocessor
compiler.save_build_files=false
preproc.save_build_files=false
# allows various preprocessor features to be toggled
# in case they are causing problems
# preprocessor: pde.g
compiler.color_datatype = true
compiler.web_colors = true
compiler.enhanced_casting = true
preproc.color_datatype = true
preproc.web_colors = true
preproc.enhanced_casting = true
# preprocessor: PdeEmitter.java
compiler.substitute_floats = true
compiler.substitute_image = false
compiler.substitute_font = false
preproc.substitute_floats = true
#preproc.substitute_image = false
#preproc.substitute_font = false
# auto-convert non-ascii chars to unicode escape sequences
compiler.substitute_unicode = true
preproc.substitute_unicode = true
# PdeCompiler.java
# PdePreproc.java
# writes out the parse tree as parseTree.xml, which can be usefully
# viewed in (at least) Mozilla or IE. useful when debugging the preprocessor.
compiler.output_parse_tree = false
preproc.output_parse_tree = false
# jdk version to use..
compiler.jdk_version = 1.1
preproc.jdk_version = 1.1
# base imports to include for java 1.1 (or higher)
compiler.imports.jdk11 = java.applet,java.awt,java.awt.image,java.awt.event,java.io,java.net,java.text,java.util,java.util.zip,netscape.javascript
preproc.imports.jdk11 = java.applet,java.awt,java.awt.image,java.awt.event,java.io,java.net,java.text,java.util,java.util.zip,netscape.javascript
# additional imports when exporting to java 1.3 or higher
compiler.imports.jdk13 = javax.sound.midi,javax.sound.midi.spi,javax.sound.sampled,javax.sound.sampled.spi
preproc.imports.jdk13 = javax.sound.midi,javax.sound.midi.spi,javax.sound.sampled,javax.sound.sampled.spi
# additional imports when exporting to java 1.4 or higher
compiler.imports.jdk14 = 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
preproc.imports.jdk14 = 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
# set the browser to be used on linux
browser.linux = mozilla
+1
View File
@@ -0,0 +1 @@
processing
+48 -1
View File
@@ -1534,9 +1534,13 @@ public class PApplet extends Applet
* Wrapper for tedious Integer.parseInt function
*/
static public int toInt(String what) {
return toInt(what, 0);
try {
return Integer.parseInt(what);
} catch (NumberFormatException e) { }
return 0;
}
/**
* Wrapper for tedious Integer.parseInt function
*/
@@ -1562,6 +1566,7 @@ public class PApplet extends Applet
return toInt(what, 0);
}
/**
* Make an array of int elements from an array of String objects.
* If the String can't be parsed as a number, its entry in the
@@ -1585,6 +1590,26 @@ public class PApplet extends Applet
}
/**
* Cast a float to an int.
*/
static public int toInt(float what) {
return (int) what;
}
/**
* Create an array of ints that correspond to an array of floats.
*/
static public int[] toInt(float what[]) {
int inties[] = new int[what.length];
for (int i = 0; i < what.length; i++) {
inties[i] = (int)what[i];
}
return inties;
}
/**
* Wrapper for tedious new Float(string).floatValue().
*/
@@ -1607,6 +1632,27 @@ public class PApplet extends Applet
}
/**
* Cast an int to a float.
*/
static public float toFloat(int what) {
return (float)what;
}
/**
* Create an array of ints that correspond to an array of floats.
*/
static public float[] toFloat(int what[]) {
float floaties[] = new float[what.length];
for (int i = 0; i < what.length; i++) {
//floaties[i] = (float)what[i];
floaties[i] = what[i];
}
return floaties;
}
/**
* Convert an array of Strings into an array of floats.
* See the documentation for toInt().
@@ -1615,6 +1661,7 @@ public class PApplet extends Applet
return toFloat(what, 0);
}
/**
* Convert an array of Strings into an array of floats.
* See the documentation for toInt().
+21 -6
View File
@@ -228,28 +228,39 @@ X ask creas about src or dest in image functions
X finish imaging api
X modify make.sh to build processing.core
040708 afternoon
040708 afternoon / early evening
X lots of work on making packaged classes work
X modify preproc to handle "void setup" -> "public void setup"
o preproc bug: text(String.valueOf(i+1), left + i*20, top);
o unexpected token "String"
X make more things public (i.e. pixels)
X get casting working properly.. int() maps to toInt()?
X what is performance hit for this thing?
X remove substitute_image/font
X remove String casting
X rename compiler.* to preproc.*
X OutOfMemoryError still showing up when no CR at end of app
OutOfMemoryError still showing up when no CR at end of app
040708 evening
_ get export working again
_ make multiple jar files thing work.. blech
_ casting working properly.. int() maps to toInt()?
_ what is performance hit for this thing?
_ 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
......................................................................
NOT REQUIRED FOR NEXT RELEASE
_ 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
_ prefs need to have a default
_ otherwise old prefs and new p5 will cause trouble
@@ -467,6 +478,10 @@ _ need curveTangent() code
..................................................................
TABLED FOR LATER (qasey's quagmires)
_ completeness of toInt/toFloat/toBoolean etc in preproc and PApplet
LOWER (post beta tweaks, non-structural)
1 _ Ctrl-Z will undo, but the window will not scroll to where the
1 _ "undoing" is happening. This can lead the user to assume that