//////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// casey -- this is a bunch of crap that i've scribbled down as i've thought of it.. maybe they should be moved to your list or removed if they're not useful? DOCS _ mention connection to java and docs on getting started in java _ make clear that setup is just for setup _ but should also in the future allow to create static image _ notes on debugging _ run with java -Xint blahblah (turns off jit) // I don't know where this should live, on BBS? What do you think _ p5 faq items: re midi support, msgs w/ adam hoyle in mail folder _ also 'why p5' message from amit pitaru on 12/15/02 _ and p5 versus flash stuff _ lists the main arguments, could be a useful document _ list of reserved keywords _ make note of functions/variables used by ProcessingApplet _ using them in your app will break things (i.e. init()) _ explain using inner classes and using non-public classes _ start 'errors' section _ NullPointerException inside setup usually means no size() _ ability to write functions and inner classes _ mention ability to use import statements in java mode _ ability to do real (but not public) classes in same document _ check to see if get/set functions in applet actually work _ fix documentation appropriately _ image formats supported (gif and jpeg) _ if image doesn't load, just prints an error on console _ notes about running on win98 and that stupid startup exception _ make note in documentation about convex polygons DOCS / technotes _ using runtime.exec to run .ai files _ code to automatically open generated .ai files (exec(..ai)) _ debugging serial code _ hyperterminal - watching for binary garbage vs ascii text _ first debug (maybe even using ascii) and watch in hyperterminal _ or ship pooterm along with processing _ flicker - often ascii instead of binary _ timing of sleep, size of message, timing of write _ starting processing first, then stamp _ using objectXYZ() and screenXYZ() _ using curves _ making things faster _ memory running out, using ms and mx _ noBackground() if you're covering everything _ converting to/from ascii/decimal/hex/binary _ fixed width font format as technote and how to use //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// LANGUAGE Adding to the API for advanced users, supporting concise coding foreach String line (lines) foreach (String line = lines) foreach (String line, lines) foreach (String line) of lines ..would translate to.. for (int i = 0; i < lines.length; i++) { String line = lines[i]; } for (int i = 0..10) or for (int i, 0..10) foreach (int i) of 0..10 for (int i = start..stop) ..translating to.. for (int i = 0; i < 10; i++) for (int i = start; i < stop; i++) emit(arrayImageX) or printvar? or vprint? ..would translate to.. println("arrayImageX = " + arrayImageX); emit(arrayImageX, arrayImageY) ..would translate to.. println("arrayImageX, arrayImageY = " + arrayImageX + ", " + arrayImageY) //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// EXTENSIONS Scribblings for future API... BXSocket, BXServerSocket BXNetwork BXSerial > - playback of samples : > - methods: startSound (loop_num, start_ms, end_ms) , stopSound(), > volume() , pan() > - properties: duration > - formats: wav ( mp3 would be nice for compression ) > - events: onSoundEnd(), onSoundLoop() > > - synthesis (generating waves, filtering waves) would be wonderful to have > as well, but i think that samples should come first. BXSound, BXSampler or BXAudio play aiff or mp3 sound with a single command play buffer of samples with a single command full class allows play/pause/more advanced loading BXMovieInput/Output or BXVideo or BXQuickTimeOutput/Input BXMovie and BXCamera? BXImageIO, BXTiffImage BXDataFile (csv or tab separated data) BXDataMatrix BXDatabase, BXDatabaseCache (keeps queries to fill out table) //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// MISCELLANEOUS NOTES buzz.pl opt-in/opt-out #ifdef setup rather than forcing people to use buzz.pl to compile. could pick features that are opt-out, like net, that would have comments: //#ifdef NET //#endif meaning that it would normally get compiled without any trouble or similarly, could have other sections commented out that are opt-in, that use #ifdefs to be enabled.` Things that break often/things to test _ handling of key events (both as applet and in application) _ per-vertex coloring for different kinds of shapes _ that each shape type works as expected _ what if one short or one too many vertices? _ transforms are affecting geometry _ i.e. are line and point working in 3D? _ why did i think that z was backwards from gl? biggest problems from french workshop _ syntax more difficult than expected: semicolons and braces _ part is translation issue--wasn't a quick fix _ curly braces weren't on the keyboard _ encouraging people to indent their code for clarity _ slow to understand 'blocks' _ translation issue but could be aided by visual cues in editor _ might be better to use braces on separate lines to reinforce _ couldn't enforce people working on specific exercises _ too many cubes.. people playing with 3d before understanding it _ would be nice to have examples for all concepts on site _ or in a small printed book that serves as a reference _ courseware not complete--difficult to collect assignments teaching 3D _ expectation for 3D objects is that they begin in the center _ rather than a translate(W/2, H/2) then draw rotating cube _ make processing useful/usable _ start working on writing pdf files _ loading images/files from same dir as .pde file _ option to use jikes _ use external editor or write a usable one _ write simple class for lcd panel _ build adapter to plug directly into db9 serial port _ figure out characters used on screen by default (check web) _ make unicode converter from unicode char -> lcd screen bytes _ hook up lcd screen to power/serial port to test _ code to reprogram lcd screen _ look through rabbit api _ look into integration of cmd line compiler _ check out flash for its text editor _ write function to swap different names for Proce55ing _ use for window title _ simple app that does swapping of letters as an animation also an interesting possibility (for tech-minded only) use terminal emulator, and run iostream from process use pooterm stuff for the emulation window key commands would conflict but could use emacs under osx, linux use nano (maybe emacs?) under windows and nothing for macos9 //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// BUILDING P5 where to install jikes, jre, others? jre may need to be back in cvs, but annoying for dist because of all the CVS directories that it makes cvs co processing cd processing cvs update -P # optional, if you're only doing java dev rm -rf web need to have rt.jar from jdk 1.1 and comm.jar in the CLASSPATH to build bagel.. just gotta be that way, it's too messy otherwise need cygwin: zip, unzip, perl little guys: rm, cp, mv, tcsh build jikes for cygwin, use version 1.14, later than that has bugs ./configure, make, make install add $cygwin/usr/local/bin to path dist directories contain only the files specific to that platform (those are the ones checked into cvs) when dist.sh is run: 1) a copy of the dist dir is created, renamed 'processing-nnnn' 2) the remaining files are added (buttons.gif, pde.properties) 3) files are lf converted (i.e. notes.txt) comm.jar now needs to be in CLASSPATH for build environment macos may be superior platform for building retain unix file permissions for linux resource fork goodness for the mac for jgl version of bagel, jgl.jar needs to be in classpath //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// (C)BAGEL WORK The C Language version of the Bagel Graphics Library bagel engine: memoryimagesource, opengl, illustrator, postscript, pdf bagel to run on j2me / phones output to multiple languages: java -> c++ conversion cbagel engine: memory array, opengl bindings _ modify cbagel for opie _ would be interesting to build pre-processor for java p5 _ but that converts into cpp version of bagel apps.. mmm _ update cbagel to current bagel status _ get gcc tied into processing _ java disassembly inside p5 _ and assmebling it back again _ color() has a different meaning _ formerly a normalized 0..1 float to a packed rgb int _ now it's a color according to current standards _ float_color is a private version of the previous color() _ curve was broken (cvertexIndex being reset) _ curve() now doubles start/end points to be more logical _ (fits all four points by drawing six points) _ try screengrab using malloc and/or gobs of extra memory _ debug the version inside bagel b/c it's simpler _ bagel needs to be able to resize itself _ also to address screen as if it's another size _ is that simply a matter of changing the viewport? _ letterboxing as appropriate _ build windows app for testing bagel c++ ... -lgdi32 for cygwin _ updates from p5 api changes _ triangle() 6 parameters _ quad() 8 parameters _ rect/rectMode again _ new color solution _ color() -> uses colorMode _ red/green/blue() hue/saturation/value() functions _ getPixel/setPixel _ swap in 'color' as an int _ color c = #67aa78 _ keyDown(), mouseDown(), lastMouseX, lastMouseY _ degrees(), radians() _ fill, background, stroke all with int version for packed rgb _ why won't glut shut up about modifiers? _ add millis() to bappletgl that returns glut millis _ BGL_PATH should turn paths into os9 ready paths for os9 _ or whatever else for the other platforms _ macos9: font = loadFont(":fonts:Univers55.vlw"); _ or could use a "File" style object _ or do all path conversions internally: _ loadFont, loadImage.. already do gz decoding _ makingmovie/screengrab should be moved into bapplet, _ along with the stuff for making an ai screen grab _ mouseX/lastMouseX should be handled automatically _ mousePressed() function may not need vars passed in _ or maybe the only vars are alt/left-right/ctrl/shift _ maybe mouseevent is passed in, but not used in the _ function unless people want advanced features _ mouseX/mouseY/lastMouseX/lastMouseY all set by parent class _ lastKey and lastKeyCode -- not as useful as the mouse stuff //////////////////////////////////////////////////////////////////// MENU PROPOSALS // File New Open Save Save as Export Web Export Application ----- Proce55ing.net Reference ----- Quit // Edit Undo Redo ----- Cut Copy Paste ----- Find Replace ----- Select All // Control Run Present Stop ----- Step Forward (farway future) Step Backward (faraway future) // Sketch History Clear History Beautify // Environment Serial Port Use External Editor //////////////////////////////////////////////////////////////////// JAVA PACKAGES jdk 1.3 packages java.applet java.awt java.awt.color java.awt.datatransfer java.awt.dnd java.awt.event java.awt.font java.awt.geom java.awt.im java.awt.im.spi java.awt.image java.awt.image.renderable java.awt.print java.beans java.beans.beancontext java.io java.lang java.lang.ref java.lang.reflect java.math java.net java.rmi java.rmi.activation java.rmi.dgc java.rmi.registry java.rmi.server java.security java.security.acl java.security.cert java.security.interfaces java.security.spec java.sql java.text java.util java.util.jar java.util.zip javax.accessibility javax.naming javax.naming.directory javax.naming.event javax.naming.ldap javax.naming.spi javax.rmi javax.rmi.CORBA javax.sound.midi javax.sound.midi.spi javax.sound.sampled javax.sound.sampled.spi javax.swing javax.swing.border javax.swing.colorchooser javax.swing.event javax.swing.filechooser javax.swing.plaf javax.swing.plaf.basic javax.swing.plaf.metal javax.swing.plaf.multi javax.swing.table javax.swing.text javax.swing.text.html javax.swing.text.html.parser javax.swing.text.rtf javax.swing.tree javax.swing.undo javax.transaction org.omg.CORBA org.omg.CORBA_2_3 org.omg.CORBA_2_3.portable org.omg.CORBA.DynAnyPackage org.omg.CORBA.ORBPackage org.omg.CORBA.portable org.omg.CORBA.TypeCodePackage org.omg.CosNaming org.omg.CosNaming.NamingContextPackage org.omg.SendingContext org.omg.stub.java.rmi jdk 1.4 packages java.applet java.awt java.awt.color java.awt.datatransfer java.awt.dnd java.awt.event java.awt.font java.awt.geom java.awt.im java.awt.im.spi java.awt.image java.awt.image.renderable java.awt.print java.beans java.beans.beancontext java.io java.lang java.lang.ref java.lang.reflect java.math java.net java.nio java.nio.channels java.nio.channels.spi java.nio.charset java.nio.charset.spi java.rmi java.rmi.activation java.rmi.dgc java.rmi.registry java.rmi.server java.security java.security.acl java.security.cert java.security.interfaces java.security.spec java.sql java.text java.util java.util.jar java.util.logging java.util.prefs java.util.regex java.util.zip javax.accessibility javax.crypto javax.crypto.interfaces javax.crypto.spec javax.imageio javax.imageio.event javax.imageio.metadata javax.imageio.plugins.jpeg javax.imageio.spi javax.imageio.stream javax.naming javax.naming.directory javax.naming.event javax.naming.ldap javax.naming.spi javax.net javax.net.ssl javax.print javax.print.attribute javax.print.attribute.standard javax.print.event javax.rmi javax.rmi.CORBA javax.security.auth javax.security.auth.callback javax.security.auth.kerberos javax.security.auth.login javax.security.auth.spi javax.security.auth.x500 javax.security.cert javax.sound.midi javax.sound.midi.spi javax.sound.sampled javax.sound.sampled.spi javax.sql javax.swing javax.swing.border javax.swing.colorchooser javax.swing.event javax.swing.filechooser javax.swing.plaf javax.swing.plaf.basic javax.swing.plaf.metal javax.swing.plaf.multi javax.swing.table javax.swing.text javax.swing.text.html javax.swing.text.html.parser javax.swing.text.rtf javax.swing.tree javax.swing.undo javax.transaction javax.transaction.xa javax.xml.parsers javax.xml.transform javax.xml.transform.dom javax.xml.transform.sax javax.xml.transform.stream org.ietf.jgss org.omg.CORBA org.omg.CORBA_2_3 org.omg.CORBA_2_3.portable org.omg.CORBA.DynAnyPackage org.omg.CORBA.ORBPackage org.omg.CORBA.portable org.omg.CORBA.TypeCodePackage org.omg.CosNaming org.omg.CosNaming.NamingContextExtPackage org.omg.CosNaming.NamingContextPackage org.omg.Dynamic org.omg.DynamicAny org.omg.DynamicAny.DynAnyFactoryPackage org.omg.DynamicAny.DynAnyPackage org.omg.IOP org.omg.IOP.CodecFactoryPackage org.omg.IOP.CodecPackage org.omg.Messaging org.omg.PortableInterceptor org.omg.PortableInterceptor.ORBInitInfoPackage org.omg.PortableServer org.omg.PortableServer.CurrentPackage org.omg.PortableServer.POAManagerPackage org.omg.PortableServer.POAPackage org.omg.PortableServer.portable org.omg.PortableServer.ServantLocatorPackage org.omg.SendingContext org.omg.stub.java.rmi org.w3c.dom org.xml.sax org.xml.sax.ext org.xml.sax.helpers