diff --git a/processing/app/PdeBase.java b/processing/app/PdeBase.java
index 6f3d81ef9..8b2d49e17 100644
--- a/processing/app/PdeBase.java
+++ b/processing/app/PdeBase.java
@@ -45,6 +45,8 @@ import com.apple.mrj.*;
public class PdeBase {
static final String VERSION = "0075 Alpha";
+ static String openedAtStartup;
+
PdeEditor editor;
static final int WINDOWS = 1;
@@ -61,6 +63,22 @@ public class PdeBase {
static public void main(String args[]) {
+ if (args.length == 1) {
+ PdeBase.openedAtStartup = args[0];
+ }
+
+ MRJOpenDocumentHandler startupOpen = new MRJOpenDocumentHandler() {
+ public void handleOpenFile(File file) {
+ // this will only get set once.. later will be handled
+ // by the PdeEditor version of this fella
+ if (PdeBase.openedAtStartup == null) {
+ //System.out.println("handling outside open file: " + file);
+ PdeBase.openedAtStartup = file.getAbsolutePath();
+ }
+ }
+ };
+ MRJApplicationUtils.registerOpenDocumentHandler(startupOpen);
+
PdeBase app = new PdeBase();
}
@@ -126,6 +144,146 @@ public class PdeBase {
// .................................................................
+ static final int kDocumentsFolderType =
+ ('d' << 24) | ('o' << 16) | ('c' << 8) | 's';
+ static final int kPreferencesFolderType =
+ ('p' << 24) | ('r' << 16) | ('e' << 8) | 'f';
+ static final int kDomainLibraryFolderType =
+ ('d' << 24) | ('l' << 16) | ('i' << 8) | 'b';
+ static final short kUserDomain = -32763;
+
+
+ static public File getProcessingDataFolder() {
+ File dataFolder = null;
+
+ if (platform == MACOSX) {
+ // carbon folder constants
+ // http://developer.apple.com/documentation/Carbon/Reference
+ // /Folder_Manager/folder_manager_ref/constant_6.html#/
+ // /apple_ref/doc/uid/TP30000238/C006889
+
+ // additional information found int the local file:
+ // /System/Library/Frameworks/CoreServices.framework
+ // /Versions/Current/Frameworks/CarbonCore.framework/Headers/
+
+ // this is the 1.4 version.. but using 1.3 since i have the stubs
+ // import com.apple.eio.*
+ //println(FileManager.findFolder(kUserDomain,
+ // kDomainLibraryFolderType));
+
+ // not clear if i can write to this folder tho..
+ try {
+ if (false) {
+ new FileInputStream("ignored");
+ }
+
+ MRJOSType domainLibrary = new MRJOSType("dlib");
+ File libraryFolder = MRJFileUtils.findFolder(domainLibrary);
+ //MRJFileUtils.findFolder(kUserDomain, domainLibrary);
+ dataFolder = new File(libraryFolder, "Processing");
+
+ } catch (FileNotFoundException e) {
+ //e.printStackTrace();
+ //System.exit(1);
+ showError("Problem getting Library folder",
+ "Error getting the Processing library folder.", e);
+ }
+
+ } else if (platform == WINDOWS) {
+ // looking for Documents and Settings/blah/Application Data/Processing
+
+ // this is just based on the other documentation, and eyeballing
+ // that part of the registry.. not confirmed by any msft/msdn docs.
+ // HKEY_CURRENT_USER\Software\Microsoft
+ // \Windows\CurrentVersion\Explorer\Shell Folders
+ // Value Name: AppData
+ // Value Type: REG_SZ
+ // Value Data: path
+
+ /*
+ RegistryKey topKey = Registry.getTopLevelKey("HKCU");
+ String localKeyPath =
+ "\\Software\\Microsoft\\Windows\\CurrentVersion" +
+ "\\Explorer\\Shell Folders";
+ RegistryKey localKey = topKey.openSubkey(topKey, localKeyPath);
+ String appDataPath = localKey.getStringValue("AppData");
+ return new File(appDataPath, "Processing");
+ */
+ return null;
+
+ } else {
+ // otherwise make a .processing directory int the user's home dir
+ File home = new File(System.getProperty("user.home"));
+ dataFolder = new File(home, ".processing");
+ }
+
+ // create the folder if it doesn't exist already
+ if (!dataFolder.exists()) dataFolder.mkdirs();
+
+ return dataFolder;
+ }
+
+
+ static public File getProcessingDataFile(String filename) {
+ return new File(getProcessingDataFolder(), filename);
+ }
+
+
+ static public File getDefaultSketchbookFolder() {
+ if (platform == MACOSX) {
+ // looking for /Users/blah/Documents/Processing
+
+ // carbon folder constants
+ // http://developer.apple.com/documentation/Carbon/Reference/Folder_Manager/folder_manager_ref/constant_6.html#//apple_ref/doc/uid/TP30000238/C006889
+
+ // additional information found int the local file:
+ // /System/Library/Frameworks/CoreServices.framework/Versions/Current/Frameworks/CarbonCore.framework/Headers/
+
+ // this is the 1.4 version.. but using 1.3 since i have the stubs
+ // import com.apple.eio.*
+ //println(FileManager.findFolder(kUserDomain,
+ // kDomainLibraryFolderType));
+
+ // not clear if i can write to this folder tho..
+ try {
+ MRJOSType domainDocuments = new MRJOSType("docs");
+ File libraryFolder = MRJFileUtils.findFolder(domainDocuments);
+ //MRJFileUtils.findFolder(kUserDomain, domainDocuments);
+ return new File(libraryFolder, "Processing");
+
+ } catch (FileNotFoundException e) {
+ showError("sketch folder problem",
+ "Could not locate default sketch folder location.", e);
+ }
+
+ } else if (platform == WINDOWS) {
+ // looking for Documents and Settings/blah/My Documents/Processing
+
+ // http://support.microsoft.com/?kbid=221837&sd=RMVP
+ // The path to the My Documents folder is stored in the
+ // following registry key, where path is the complete path
+ // to your storage location:
+ // HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+ // Value Name: Personal
+ // Value Type: REG_SZ
+ // Value Data: path
+
+ }
+
+ return null;
+
+ // if it failed, or if on linux, prompt the user or quit
+
+ /*
+ File home = new File(System.getProperty("user.home"));
+ File phome = new File(home, ".processing");
+ if (!phome.exists()) phome.mkdirs();
+ return phome;
+ */
+ }
+
+
+ /*
static public File getProcessingHome() {
File home = new File(System.getProperty("user.home"));
@@ -135,7 +293,7 @@ public class PdeBase {
// in the default preferences.txt because it mentions this path
if (PdeBase.platform == PdeBase.MACOSX) {
// on macosx put the sketchbook in the "Documents" folder
- phome = new File(home, "Documents" + File.separator + "Processing");
+ //phome = new File(home, "Documents" + File.separator + "Processing");
} else if (PdeBase.platform == PdeBase.WINDOWS) {
// on windows put the sketchbook in the "My Documents" folder
@@ -150,11 +308,7 @@ public class PdeBase {
if (!phome.exists()) phome.mkdirs();
return phome;
}
-
-
- static public File getProcessingHome(String filename) {
- return new File(getProcessingHome(), filename);
- }
+ */
// .................................................................
diff --git a/processing/app/PdeEditor.java b/processing/app/PdeEditor.java
index ef78fdeab..5359aa2e0 100644
--- a/processing/app/PdeEditor.java
+++ b/processing/app/PdeEditor.java
@@ -42,7 +42,8 @@ import com.apple.mrj.*;
public class PdeEditor extends JFrame
-implements MRJAboutHandler, MRJQuitHandler, MRJPrefsHandler
+ implements MRJAboutHandler, MRJQuitHandler, MRJPrefsHandler,
+ MRJOpenDocumentHandler //, MRJOpenApplicationHandler
{
// yeah
static final String WINDOW_TITLE = "Processing";
@@ -120,13 +121,15 @@ implements MRJAboutHandler, MRJQuitHandler, MRJPrefsHandler
public PdeEditor() {
super(WINDOW_TITLE + " - " + PdeBase.VERSION);
- // this is needed by just about everything else
- preferences = new PdePreferences();
// #@$*(@#$ apple.. always gotta think different
MRJApplicationUtils.registerAboutHandler(this);
MRJApplicationUtils.registerPrefsHandler(this);
MRJApplicationUtils.registerQuitHandler(this);
+ MRJApplicationUtils.registerOpenDocumentHandler(this);
+
+ // this is needed by just about everything else
+ preferences = new PdePreferences();
// set the window icon
try {
@@ -368,18 +371,23 @@ implements MRJAboutHandler, MRJQuitHandler, MRJPrefsHandler
}
- // last sketch that was in use
+ // last sketch that was in use, or used to launch the app
- //String sketchName = PdePreferences.get("last.sketch.name");
- String sketchPath = PdePreferences.get("last.sketch.path");
- //PdeSketch sketchTemp = new PdeSketch(sketchPath);
-
- if ((sketchPath != null) && (new File(sketchPath)).exists()) {
- // don't check modified because nothing is open yet
- handleOpen2(sketchPath);
+ if (PdeBase.openedAtStartup != null) {
+ handleOpen2(PdeBase.openedAtStartup);
} else {
- handleNew2(true);
+ //String sketchName = PdePreferences.get("last.sketch.name");
+ String sketchPath = PdePreferences.get("last.sketch.path");
+ //PdeSketch sketchTemp = new PdeSketch(sketchPath);
+
+ if ((sketchPath != null) && (new File(sketchPath)).exists()) {
+ // don't check modified because nothing is open yet
+ handleOpen2(sketchPath);
+
+ } else {
+ handleNew2(true);
+ }
}
@@ -1031,19 +1039,25 @@ implements MRJAboutHandler, MRJQuitHandler, MRJPrefsHandler
presentationWindow.toFront();
}
- try {
- if (!sketch.handleRun()) return;
+ final SwingWorker worker = new SwingWorker() {
+ public Object construct() {
+ try {
+ if (!sketch.handleRun()) return null;
- runtime = new PdeRuntime(sketch, this);
- runtime.start(presenting ? presentLocation : appletLocation);
- watcher = new RunButtonWatcher();
+ runtime = new PdeRuntime(sketch, PdeEditor.this);
+ runtime.start(presenting ? presentLocation : appletLocation);
+ watcher = new RunButtonWatcher();
- } catch (PdeException e) {
- error(e);
+ } catch (PdeException e) {
+ error(e);
- } catch (Exception e) {
- e.printStackTrace();
- }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null; // needn't return anything
+ }
+ };
+ worker.start();
//sketch.cleanup(); // where does this go?
}
@@ -1275,6 +1289,16 @@ implements MRJAboutHandler, MRJQuitHandler, MRJPrefsHandler
}
+ /**
+ * This is the implementation of the MRJ open document event,
+ * and the Windows XP open document will be routed through this too.
+ */
+ public void handleOpenFile(File file) {
+ //System.out.println("handling open file: " + file);
+ handleOpen(file.getAbsolutePath());
+ }
+
+
/**
* Open a sketch given the full path to the .pde file.
* Pass in 'null' to prompt the user for the name of the sketch.
diff --git a/processing/app/PdePreferences.java b/processing/app/PdePreferences.java
index f9bd6963d..9c85b455f 100644
--- a/processing/app/PdePreferences.java
+++ b/processing/app/PdePreferences.java
@@ -17,8 +17,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
@@ -44,12 +44,12 @@ import javax.swing.undo.*;
on first run:
processing.properties is created in user.home
- it contains the contents of
+ it contains the contents of
preferences.txt + pde_platform.properties
and then begins writing additional sketch.properties stuff
- this class no longer uses the Properties class, since
- properties files are iso8859-1, which is highly likely to
+ this class no longer uses the Properties class, since
+ properties files are iso8859-1, which is highly likely to
be a problem when trying to save sketch folders and locations
*/
public class PdePreferences extends JComponent {
@@ -114,7 +114,7 @@ public class PdePreferences extends JComponent {
load(PdeBase.getStream("preferences.txt"));
} catch (Exception e) {
- PdeBase.showError(null, "Could not read default settings.\n" +
+ PdeBase.showError(null, "Could not read default settings.\n" +
"You'll need to reinstall Processing.", e);
}
@@ -146,12 +146,12 @@ public class PdePreferences extends JComponent {
//File home = new File(System.getProperty("user.home"));
//File processingHome = new File(home, "Processing");
//preferencesFile = new File(home, PREFS_FILE);
- preferencesFile = PdeBase.getProcessingHome(PREFS_FILE);
+ preferencesFile = PdeBase.getProcessingDataFile(PREFS_FILE);
if (!preferencesFile.exists()) {
// create a new preferences file if none exists
// saves the defaults out to the file
- save();
+ save();
} else {
// load the previous preferences file
@@ -160,7 +160,7 @@ public class PdePreferences extends JComponent {
load(new FileInputStream(preferencesFile));
} catch (Exception ex) {
- PdeBase.showError("Error reading preferences",
+ PdeBase.showError("Error reading preferences",
"Error reading the preferences file. " +
"Please delete (or move)\n" +
preferencesFile.getAbsolutePath() +
@@ -192,7 +192,7 @@ public class PdePreferences extends JComponent {
// [ ] Prompt for name and folder when creating new sketch
- sketchPromptBox =
+ sketchPromptBox =
new JCheckBox("Prompt for name when opening or creating a sketch");
pain.add(sketchPromptBox);
d = sketchPromptBox.getPreferredSize();
@@ -211,7 +211,7 @@ public class PdePreferences extends JComponent {
top += d.height + GUI_BETWEEN;
- // Sketchbook location:
+ // Sketchbook location:
// [...............................] [ Browse ]
label = new JLabel("Sketchbook location:");
@@ -243,14 +243,14 @@ public class PdePreferences extends JComponent {
// take max height of all components to vertically align em
vmax = Math.max(d.height, d2.height);
- //label.setBounds(left, top + (vmax-d.height)/2,
+ //label.setBounds(left, top + (vmax-d.height)/2,
// d.width, d.height);
//h = left + d.width + GUI_BETWEEN;
- sketchbookLocationField.setBounds(left, top + (vmax-d.height)/2,
+ sketchbookLocationField.setBounds(left, top + (vmax-d.height)/2,
d.width, d.height);
h = left + d.width + GUI_SMALL; //GUI_BETWEEN;
- button.setBounds(h, top + (vmax-d2.height)/2,
+ button.setBounds(h, top + (vmax-d2.height)/2,
d2.width, d2.height);
right = Math.max(right, h + d2.width + GUI_BIG);
@@ -259,7 +259,7 @@ public class PdePreferences extends JComponent {
// [ ] Enable export to "Library"
- exportLibraryBox = new JCheckBox("Enable advanced \"Library\" features" +
+ exportLibraryBox = new JCheckBox("Enable advanced \"Library\" features" +
" (requires restart)");
exportLibraryBox.setEnabled(false);
pain.add(exportLibraryBox);
@@ -282,11 +282,11 @@ public class PdePreferences extends JComponent {
// More preferences are in the ...
/*
- String blather =
- "More preferences can be edited directly\n" +
+ String blather =
+ "More preferences can be edited directly\n" +
"in the file " + preferencesFile.getAbsolutePath();
//"More preferences are in the 'lib' folder inside text files\n" +
- //"named preferences.txt and pde_" +
+ //"named preferences.txt and pde_" +
//PdeBase.platforms[PdeBase.platform] + ".properties";
JTextArea textarea = new JTextArea(blather);
@@ -314,7 +314,7 @@ public class PdePreferences extends JComponent {
// [ OK ] [ Cancel ] maybe these should be next to the message?
- right = Math.max(right, left + d.width + GUI_BETWEEN +
+ right = Math.max(right, left + d.width + GUI_BETWEEN +
BUTTON_WIDTH + GUI_SMALL + BUTTON_WIDTH);
button = new JButton(PROMPT_OK);
@@ -424,7 +424,7 @@ public class PdePreferences extends JComponent {
public void load(InputStream input) throws IOException {
- BufferedReader reader =
+ BufferedReader reader =
new BufferedReader(new InputStreamReader(input));
//table = new Hashtable();
@@ -499,7 +499,7 @@ public class PdePreferences extends JComponent {
skprops.put("last.sketch.directory", sketchDir.getAbsolutePath());
//skprops.put("user.name", userName);
- skprops.put("last.divider.location",
+ skprops.put("last.divider.location",
String.valueOf(splitPane.getDividerLocation()));
//
@@ -510,7 +510,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. " +
+ skprops.store(output, "Settings for processing. " +
"See lib/preferences.txt for defaults.");
// need to close the stream.. didn't do this before
@@ -540,7 +540,7 @@ public class PdePreferences extends JComponent {
//properties.getProperty(attribute) : applet.getParameter(attribute);
String value = properties.getProperty(attribute);
- return (value == null) ?
+ return (value == null) ?
defaultValue : value;
*/
}
@@ -585,13 +585,13 @@ public class PdePreferences extends JComponent {
try {
return Integer.parseInt(value);
- } catch (NumberFormatException e) {
+ } catch (NumberFormatException e) {
// ignored will just fall through to returning the default
System.err.println("expecting an integer: " + attribute + " = " + value);
}
return defaultValue;
//if (value == null) return defaultValue;
- //return (value == null) ? defaultValue :
+ //return (value == null) ? defaultValue :
//Integer.parseInt(value);
*/
}
@@ -622,7 +622,7 @@ public class PdePreferences extends JComponent {
String r = Integer.toHexString(what.getRed());
String g = Integer.toHexString(what.getGreen());
String b = Integer.toHexString(what.getBlue());
- set(attr, "#" + r.substring(r.length() - 2) +
+ set(attr, "#" + r.substring(r.length() - 2) +
g.substring(g.length() - 2) + b.substring(b.length() - 2));
}
@@ -634,8 +634,8 @@ public class PdePreferences extends JComponent {
StringTokenizer st = new StringTokenizer(str, ",");
String fontname = st.nextToken();
String fontstyle = st.nextToken();
- return new Font(fontname,
- ((fontstyle.indexOf("bold") != -1) ? Font.BOLD : 0) |
+ return new Font(fontname,
+ ((fontstyle.indexOf("bold") != -1) ? Font.BOLD : 0) |
((fontstyle.indexOf("italic") != -1) ? Font.ITALIC : 0),
Integer.parseInt(st.nextToken()));
}
@@ -682,11 +682,11 @@ public class PdePreferences extends JComponent {
}
vmax = Math.max(d.height, d2.height);
- label.setBounds(left, top + (vmax-d.height)/2,
+ label.setBounds(left, top + (vmax-d.height)/2,
d.width, d.height);
h = left + d.width + BETWEEN;
- combo.setBounds(h, top + (vmax-d2.height)/2,
- d2.width, d2.height);
+ combo.setBounds(h, top + (vmax-d2.height)/2,
+ d2.width, d2.height);
right = Math.max(right, h + d2.width + BIG);
top += vmax + BETWEEN;
*/
@@ -705,7 +705,7 @@ public class PdePreferences extends JComponent {
//boolean ee = new Boolean(skprops.getProperty("editor.external", "false")).booleanValue();
//editor.setExternalEditor(ee);
- ///} catch (Exception e) {
+ ///} catch (Exception e) {
// this exception doesn't matter, it's just the normal course of things
// the app reaches here when no sketch.properties file exists
//e.printStackTrace();
diff --git a/processing/app/PdeSketchbook.java b/processing/app/PdeSketchbook.java
index 88f18e1fe..328af0e99 100644
--- a/processing/app/PdeSketchbook.java
+++ b/processing/app/PdeSketchbook.java
@@ -109,7 +109,7 @@ public class PdeSketchbook {
//String folderName = PdePreferences.get("sketchbook.name.default");
//File sketchbookFolder = new File(home, folderName);
- File sketchbookFolder = PdeBase.getProcessingHome();
+ File sketchbookFolder = PdeBase.getDefaultSketchbookFolder();
PdePreferences.set("sketchbook.path",
sketchbookFolder.getAbsolutePath());
diff --git a/processing/build/macosx/dist.sh b/processing/build/macosx/dist.sh
index 0d3328c16..e151232b5 100755
--- a/processing/build/macosx/dist.sh
+++ b/processing/build/macosx/dist.sh
@@ -104,7 +104,7 @@ find processing -name "CVS" -exec rm -rf {} ';'
#mv processing "Processing $REVISION"
mv processing "processing-$REVISION"
-stuff -f sitx processing-$REVISION
+#stuff -f sitx processing-$REVISION
# if there is a command line tool to make a dmg from this dir.. hmm
diff --git a/processing/build/macosx/dist/Processing.app/Contents/Info.plist b/processing/build/macosx/dist/Processing.app/Contents/Info.plist
index 08ca17496..529cf444e 100755
--- a/processing/build/macosx/dist/Processing.app/Contents/Info.plist
+++ b/processing/build/macosx/dist/Processing.app/Contents/Info.plist
@@ -22,6 +22,30 @@
processing.icns
CFBundleIdentifier
org.processing.app
+ CFBundleDocumentTypes
+
+
+ CFBundleTypeExtensions
+
+ pde
+ java
+
+ CFBundleTypeIconFile
+ pde.icns
+ CFBundleTypeName
+ Processing Source File
+ CFBundleTypeMIMETypes
+
+ text/plain
+
+ CFBundleTypeOSTypes
+
+ TEXT
+
+ CFBundleTypeRole
+ Editor
+
+
Java
VMOptions
diff --git a/processing/build/macosx/run.sh b/processing/build/macosx/run.sh
index 80d9e2edb..182c4f462 100755
--- a/processing/build/macosx/run.sh
+++ b/processing/build/macosx/run.sh
@@ -17,3 +17,4 @@ export CLASSPATH
#cd work && /System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Commands/java -Dcom.apple.macos.useScreenMenuBar=true PdeBase
cd work && java -Dapple.laf.useScreenMenuBar=true PdeBase
+#cd work && java -Dapple.laf.useScreenMenuBar=true -Dcom.apple.mrj.application.growbox.intrudes=false PdeBase
diff --git a/processing/core/todo.txt b/processing/core/todo.txt
index a1158260f..45ece3a61 100644
--- a/processing/core/todo.txt
+++ b/processing/core/todo.txt
@@ -24,42 +24,46 @@ X debug why certain spots are having errors (see 'problem here' notes)
X INVALID_OPERATION after drawing lines for cube
X fix noLoop bug
X remove errors when drawing textures
+X reverse y coordinates
+
+_ beginFrame() around setup()
+_ draw mode stuff happens inside setup..
+_ or maybe need to get better at size() inside of draw() ?
+_ make this consistent with the regular PApplet
+_ otherwise things are going to be weird/difficult for debugging
-_ figure out min/max texture sizes when binding to avoid problems
_ fix non-bound textures from mangling everything else
_ fix enable/disable textures for some objects
_ fix endian ordering issues so that things work properly
+_ figure out min/max texture sizes when binding to avoid problems
+_ minimum texture size may be 64x64
+_ might need to enforce it as a minimum
+
+_ remove need to use depth() at the beginning
+_ and cameraMode(PERSPECTIVE) on each frame
+_ why is the first one failing?
+
+_ get loop, noLoop, redraw, and framerate all working
+_ needs custom animator thread..
+
_ make play button un-highlight with opengl
_ also make window move messages work properly
-_ can ALPHA fonts work using the other replace modes
+_ very necessary, since opens window at 100x100
+
+_ can ALPHA fonts work using the other replace modes?
_ resolve ARGB versus RGBA versus just A issues for fonts
_ make sure that current scenario works identically on mac
_ if so, just switch the image code to expect alpha in the high bits
_ fonts probably need to be RGBA, not ALPHA style images
_ there's nothing really ALPHA about them?
-_ remove need to use depth() at the beginning
-_ and cameraMode(PERSPECTIVE) on each frame
-_ why is the first one failing?
-/ reverse y coordinates
-_ minimum texture size may be 64x64
-_ might need to enforce it as a minimum
-_ named colors.. have a method for a full color lookup table
-_ addcolor("blah blah blah", colornum);
-_ fill("blah blah blah");
-_ maybe this is bad practice--too slow, should use variables
-_ text() with \n is semi-broken
-_ font encoding issues
-_ java seems to force straight windows encoding.. (problem for pi fonts)
-_ opentype/cff fonts don't work with live loading from the app
-_ many (all?) opentype fonts won't show up or aren't supported
-_ this may be only cff fonts that have trouble
-_ when encoding with something besides the standard encoding, problematic
-_ so sonata otf and sonata don't seem to have any chars at all
-_ implement size(0, 0) -> just doesn't bother doing a frame.show();
_ implement fullscreen().. this takes over the screen as best it can
_ really more like present mode..
_ that if applet is 500x500, centers on a 800x600 window
+_ though how do you get the screen size?
+_ screen.width and screen.height?
+_ image(String name) and textFont(String name)
+_ do we change to font(arial, 12) ?
scripting
_ on exceptions, use die to just kill the applet
@@ -78,10 +82,9 @@ _ to take care of exception handling
_ or maybe scripts are just handled with a different method? (yech)
_ or maybe setup() can actually throw and Exception?
_ but that's inserted by the parser, and hidden from the user?
-
-_ beginFrame() around setup()
-_ draw mode stuff happens inside setup..
-_ or maybe need to get better at size() inside of draw() ?
+_ implement size(0, 0) -> just doesn't bother doing a frame.show();
+_ too abstract, just have draw() call exit by default
+_ so if nothing inside draw, just quits
opengl documentation
_ lights cannot be enabled/disabled throughout
@@ -97,6 +100,16 @@ _ bring screen space and font size settings back in to PGraphics
_ causing too much trouble to be stuck down in PFont
_ don't allocate zbuffer & stencil until depth() is called
+_ massive graphics engine changes
+_ explicitly state depth()/nodepth()
+_ move to new graphics engine
+_ test with rgb cube, shut off smoothing
+_ make sure line artifacts are because of smoothing
+_ implement 2x oversampling for anti-aliasing
+_ before graphics engine change, attach jogl stuff
+_ need to try jogl to make sure no further changes
+_ and the illustrator stuff
+
postscript
_ how to hook into curve rendering so that curve segments are drawn
_ maybe lines are rendered and sorted,
@@ -105,9 +118,10 @@ _ that can be re-rendered
_ also integrate catmull-rom -> bezier inverse matrices
_ even with the general catmull-rom, to render via ai beziers
-libraries could handle a series of events..
- i.e. a 'completion' event, or 'new data' event
- these could be registered on obejcts in a general way
+libraries
+_ libraries could handle a series of events..
+_ i.e. a 'completion' event, or 'new data' event
+_ these could be registered on obejcts in a general way
random tasks
_ someone to figure out a good model for adaptive sizing of circles
@@ -167,11 +181,6 @@ _ takes only line segments and triangles to blit (dxf writer)
_ vertices max out at 512.. make it grow
-_ getAllFonts() not quite working for many fonts
-_ i.e. Orator Std on windows.. macosx seems to be ok
-_ is getFamilyNames() any different/better?
-_ when did this break? 1.4.1? 1.4.x vs 1.3?
-
_ go through and figure out what stuff to make public
_ screenX/Y aren't properly working for 2D points against a 3D matrix
@@ -181,6 +190,19 @@ _ screenX/Y and also using the 3 arg version of translate -
_ ie translate(hw,hh,0) instead of just translate(hw,hh).
text issues
+_ text() with \n is semi-broken
+_ font encoding issues
+_ java seems to force straight windows encoding.. (problem for pi fonts)
+_ opentype/cff fonts don't work with live loading from the app
+_ many (all?) opentype fonts won't show up or aren't supported
+_ this may be only cff fonts that have trouble
+_ when encoding with something besides the standard encoding, problematic
+_ so sonata otf and sonata don't seem to have any chars at all
+_ getAllFonts() not quite working for many fonts
+_ i.e. Orator Std on windows.. macosx seems to be ok
+_ is getFamilyNames() any different/better?
+_ when did this break? 1.4.1? 1.4.x vs 1.3?
+_ may be that cff fonts won't work?
_ textMode ALIGN_CENTER _LEFT _RIGHT -> CENTER, LEFT, RIGHT ?
_ need to resolve SCREEN_SPACE vs OBJECT_SPACE
_ can this be auto-detected with noDepth()?
@@ -203,23 +225,16 @@ _ it could be placed at the end of the file
_ simple way to just use java text in p5 applets?
_ the current text support is just so hokey
-_ before graphics engine change, attach jogl stuff
-_ need to try jogl to make sure no further changes
-_ and the illustrator stuff
+_ named colors.. have a method for a full color lookup table
+_ addcolor("blah blah blah", colornum);
+_ fill("blah blah blah");
+_ maybe this is bad practice--too slow, should use variables
+
_ 404 error because first searches applet directory on zipdecode
-_ image(String name) and textFont(String name)
-_ do we change to font(arial, 12) ?
_ write PApplet2, a full screen version of PApplet
_ this might be used for presentation mode
-_ massive graphics engine changes
-_ explicitly state depth()/nodepth()
-_ move to new graphics engine
-_ test with rgb cube, shut off smoothing
-_ make sure line artifacts are because of smoothing
-_ implement 2x oversampling for anti-aliasing
-
_ api for file-based renderers
_ need to work this out since it will affect other api changes
_ size(0, 0) and then ai.size(10000, 20000)
diff --git a/processing/todo.txt b/processing/todo.txt
index e3621ebbf..dfb718edc 100644
--- a/processing/todo.txt
+++ b/processing/todo.txt
@@ -13,12 +13,15 @@ X still not perfect, but some tweaks for improvement
X cosmetic fixes
X is PdeEditorHeader one pixel too tall
X move the tabs over just slightly
+X put 'play' on a SwingWorker thread
+_ not sure if this is working or not
sketchbook/prefs location
_ read from registry key to get the proper name for these folders
_ also find some way to do this on the mac
_ on non-english windows (or at the broad) these will be named differently
_ http://support.microsoft.com/?kbid=221837&sd=RMVP
+_ or is there a proper way to do this with java params?
_ move to ~/Application Data/Processing for windows
_ and ~/Library/Processing for macosx
_ and ~/.processing for linux
@@ -31,6 +34,14 @@ _ test to see if it's possible to write to "My Documents"
_ if not, should bring up a prompt asking where to put sketchbook
_ also put something in lib/preferences.txt for default location
_ this way a course admin can change the default location
+_ need to check if volume is read-only, notify and quit if it is
+_ people are trying to run off the disk image
+_ actually that should be fine..
+_ but make sure the prefs location can be written
+_ need to pay attention to when running from read-only drive
+_ reported by brandenberg
+_ "p5 will launch from the disk image, but will
+_ not draw the sketch name bar doesn't appear"
_ bring back "rename" ?
@@ -350,13 +361,6 @@ PDE / Details
1 _ objects probably not getting finalized
1 _ http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1050134854;start=0
- 1 _ need to check if volume is read-only, notify and quit if it is
- 1 _ people are trying to run off the disk image
- 1 _ need to pay attention to when running from read-only drive
- 1 _ reported by brandenberg
- 1 _ "p5 will launch from the disk image, but will
- 1 _ not draw the sketch name bar doesn't appear"
-
1 _ size() has memory limitations (pitaru)
1 _ catch OutOfMemoryError inside size() and let the user know
1 _ http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1038847001