Files
processing4/processing/todo.txt

626 lines
24 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
0041
X fill(#ffcc00) wasn't working for rect, calci not being set
X also affected background and stroke
X export was failing if no data dir
X move background() out of draw() for draw mode apps
X click on project name to quickly go to rename mode
X cursor goes away during edits (java bug, fix with hack)
X handling of key/mouse events smoothed out
X removed 'briefly' versions of mouse/key
X make scrollbar for console
X make win/linux write stderr to stderr.txt like the mac
X this will be useful until i implement scrollbar
X -> this might be problematic, watch out for lockups
X remove projects if created but nothing happens to them
X maybe do this on open or quit?
X first a syntax error, when fixed, causes NullPointerException 
X quitting the app makes things all better. argh.
X this just started with version37, it happens extrememely
X frequently and should be easy to reproduce the error
X images with imageMode set for simage() weren't working
pde
a _ see if play being highlighted can be implemented again
a _ especially important because of speed issues
macosx
a _ arrow keys don't work in the textarea
web / docs
a _ finish writing 'readme.txt'
a _ change download/index.html to not describe dates but process
a _ "this is alpha, we're heading to beta with series of sm releases"
a _ document serial a bit more in release notes
a _ how do we encourage/point to updates?
a _ auto updater? check for releases page in menu?
a _ this code is not performing correctly
a _ (see example in reference for expected output)
beginShape(TRIANGLE_STRIP);
vertex(30, 75);
vertex(40, 20);
vertex(50, 75);
vertex(60, 20);
vertex(70, 75);
vertex(80, 20);
vertex(90, 75);
endShape();
////////////////////////////////////////////////////////////////////
BAGEL / high
b _ better access to projX et al
b _ what's a better name? calcX? or write to an array?
b _ projectX, projectY, .. or projectedX ?
b _ images drawn from center don't work for simage()
b _ currently calling slower image routine
BAGEL / high & time consuming
b _ color won't set for fonts
b _ alpha
b _ concave/complex polygon shtuff
b _ eventually POLYGON auto-detects convex/concave polygon
b _ also add POLYGON_CONVEX and POLYGON_CONCAVE
b _ implement clipping planes and clipping of objects
b _ clipping [may be needed for current genome browser project]
b _ box is not opaque
b X problem is that lines are drawn second
b X one pixel lines have no z value.. argh
b translate(58, 48, 0);
b rotateY(0.5);
b box(40);
BAGEL / medium
b _ setting stroke width on circle makes odd patterns
b _ area copying functions
b _ copyPixel(x, y, to_x, to_y)
b _ copyArea(x, y, w, h, to_x, to_y)
b _ copyImage(x, y, w, h, to_x, to_y)
b _ bresenham (flat) oval function
b _ NullPointerException apparently when things way offscreen
b _ i.e. glyphrot with scale set to 4
b _ or at least that things get ridiculously slow
b _ clipping issues here.. but also something in scan converter
b _ not clipping areas from offscreen
b _ huge geometry slows things way down
b _ adaptive sizing of circle segmenting based on rendered size
b _ make size() available throughout
b _ stroked version of sphere is just a circle
b _ noClear -- implement with noBackground
b _ need to set bg color even if updated
b _ update/noUpdate() could also be done to force explicit updates only
b _ for ui-type applications that don't need to continually redraw
b _ keypressed is not persistent
b _ key repeat in os vs. how java handles it
b _ search java faq for info about getting around it
BAGEL / medium & time consuming
b _ anti-aliasing
b _ rewrite line and stroke code, it's a buggy mess
b _ lines become 2 pixels thick after a 3D transform
b _ better handling of single-pixel special case
b _ box is not filling properly
b _ problem is using single pixel, flat line with no z
b _ illustrator exporting
b _ version of Illustrator.java that uses bagel api
b _ sorting of polygons/lines on simple painters algorithm
b _ better lighting model to show darkness at various depths
b _ maybe just ultra-high res bitmaps from gl
b _ version of ProcessingApplet that replaces g. with ai. or pdf.
b _ picking
b _ ability to write data other than image into the buffer
b _ user can introduce new kinds of buffers at will (!)
b _ lists of names of objects, or the 'line number' buffer
b _ but how to determine *where* on object the hit occurs?
BAGEL / lower
_ support for moving the camera around
_ try using jgl inside processing
_ illustrator, postscript or pdf export?
_ export to static flash-based graphics
_ function to evaluate bezier or catmullrom points
_ used heavily in genome valence
_ curveMode to tweak the s parameter of catmullrom
_ why is every other pixel missing from mouse events?
_ fixed fonts are screwed, should only work at screen resolution
_ getStream for the filename doesn't work for directories
_ getfont("fonts/blah.fbf") refers to blah.raw, but that
_ also needs to be searched for in the fonts/ dir..
_ fast(er?) version of bagel that just uses java graphics
_ but leaves out many features
_ line endcaps and line joins
_ move math functions into utility library associated
_ with bagel, because those will be useful on other bagel platforms
_ pApplet will call BagelMath.whatever, so still looks like cos()
_ build in second matrix type: 2d affine
_ make sure line() commands don't try to have a fill
_ write code for reading uncompressed b/w tiff images
_ incorporate for fixed width fonts
_ setting accuracy of circles/sphere
_ setting accuracy of curve segments
_ write shearing function
_ optimize rotation functions
_ test winding polygons in different directions
_ test lighting to see how it compares with gl
_ non-homogenous colors for beginShape()
_ currently disabled b/c homogenousColors not set false for vertices
_ and code not written for curve vertices
_ better lockout inside beginShape() to keep other things from happening
_ when stroke in use, stroke letters (currently stroke doesn't affect
_ try with 1.4 frame buffer stuff to see if it's faster
_ will 1.4 work on osx?
_ way to screen grab at higher resolution
_ method for rendering at higher res and then scaling down
_ (even if this causes signficant performance hit)
_ look at glut for other needed shapes
_ setting a fill color when drawing an image should affect the image
_ or maybe image.setColor or setTone to mix a specific color in
_ live video editing, wanting things more procedural
(C)BAGEL WORK
_ 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
////////////////////////////////////////////////////////////////////
PDE / high
a _ text editor? jedit's textarea class? hmm? hmm?
b _ for 'java' mode, try run using external vm
b _ would need to get error output stream from app.. argh
b _ only allow under win/osx/linux
b _ not clear how to kill the process.. does that work w/ 1.3?
b _ class unloading not happening in java mode
b _ need to add randomizer to even non-self gen'd classes
b _ or figure out how to unload old classes.. grr
b _ lockup when something missing from classpath on dynamic load
b _ but makes no error.. peditorconsole probably swallowing it
b _ change writeJava/start functions to be combined in kjc
b _ but the rest inside PdeEditor that takes care of launching/placing
b _ online signup cgi for people to add themselves to the list
b _ see about setting up simple bug tracker/feature system
b _ queue for people reporting things externally
b _ bugzilla but simpler
b _ would also be nice for people to be able to vote on features
b _ save serial port on close
PDE / medium
b _ 'save as' from examples puts into examples dir.. :(
b _ option to delete current project (trickier)
b _ also needs to have method for verify.. blech
b _ beautify is broken
b _ sketch: sketch-000 is dumb
b _ check logs to see where we're getting traffic from
b _ event to explorer to open 'parts' directory of project
b _ option to toggle console on/off (not just in properties, but realtime)
b _ work on editor buttons
b _ play button not really working
b _ never un-highlights, especially with exceptions
b _ also when using draw() instead of loop()
b _ applet needs to notify runner that it has terminated
b _ make PdeEditorButtons wait until mouseup to change
b _ (currently doesn't feel as good as it could)
b _ look into using serialporteventlistener for simpleserial
b _ may help with problems due to threading/synchronizing
b _ licensing issues with kjc (before public release)
b _ font usage/substition solution
b _ write code to bind/convert java fonts
b _ best would be freetype or jdk 1.3/1.4
b _ java freetype? jni freetype to build texmap fonts?
b _ look at flash file format? (does it have kerning?)
b _ example: multi-user server app (shared whiteboard)
b _ example: basic network app
b _ file i/o utility classes
b _ read as set of lines, read as cells in grid, read num sequence
b _ then methods for writing all of the same
b _ exceptions in draw() apps aren't caught
b _ the program resize(200, 200); just does nothing (doesn't complain)
b _ menu option to change username/login
b _ if new user, offer to rename 'default' if it contains things
b _ user name is changed by clicking and typing
b _ after user hits 'enter', checks to see if user exists
b _ if not, pops up message asking if they want to change
b _ message goes in same spot as error/status label (turns yellow?)
b _ if user says 'no', then
b _ ability to export 'applications' (not just applets)
b _ application can still do serial (qt, other stuff?)
b _ applet runs in browser, though applet on cbagel is everything..
b _ include main class info for executable jar file with jdk > 1.2
b _ not difficult to do, just some tweaking once applet export works
b _ wrapper that invokes the applet using a copy of the jre
b _ main() method needs to set layout manager if jexegen is to be used
b _ (msft vm defaults to null layout manager)
b _ also make sure pack() is happening
b _ kjc is really frustrating about some of its error/warning msgs
b _ erroneous errors from kjc regarding 'var not inited'
b _ is there any way to disable this message?
b _ talk to simon about error streams and kjc
b _ better piping of output from kjc
b _ modify kjc to take a PrintWriter, instead of current hacks
b _ might be able to set default values for vars using perl5subst
b _ ability to include other code from sketchbook directory
b _ compile entire sketchbook on startup, check for new files on compile?
b _ Compiler.disable() message is weird and doesn't always work
b _ probably just remove it for now
b _ bug in paren balancing
b _ paren problems comes from overusing parens (too many closing)
b _ image[first[i], 0, 0) hitting last paren causes jump to top
cosmetic [lower priority]
b _ run button can be highlighted to show how long thread is alive
b _ the thread would be the one inside bapplet that keeps it going
b _ only copy data files into build when there are changes
b _ make sure the still relevant files aren't removed
b _ setLastModified on the files after copying (jdk13)
b _ editorbuttons: if nothing selected on popup, need to deselect
b _ editorbuttons: if export fails (compile error) need deselect
b _ may want to throw exceptions from bagel
b _ but catch them inside bapplet--as part of making things easier
pdebase cleanup [lower priority]
b _ remove 'encoding' crap from PdeBase
b _ only existed b/c of reading as bytes and not using jdk11 methods
b _ cleanup program/inline_program crap.. take out scheme stuff
b _ better readFile/loadImage inside PdeBase
b _ temp array should be resizable inside readFile
b _ might just use ByteArray streams
b _ use getresource for loading image
b _ remove Editor's frame instance, replace refs with PdeBase.frame
PDE / low
_ if 'void' left out before loop or setup, cryptic message about
_ 'constructor loop must be named Temporary_23498_2343'
_ add a better handler for this specific thing?
_ shouldn't do so much work (redrawing in loop) if waiting for input
_ mode for when no full animation taking place
_ otherwise machine is continually maxed out while app is running
_ quicktime exporter or image sequence export
_ fairly quick--just use code from dbn
_ stop() method in applet should stop kjc environment
_ should be able to call stop() to 'quit' an applet
_ run java code besides processing applets
_ if not processing applet, look for a main(), no main give an error
_ dbn2p5 converter.. ooh!
PDE / dist
b _ need document icons
b _ figure out about distributing source
b _ kjc is gnu, so source needs to be available
PDE / windows
b _ windows launcher/exe
b _ splash screen
b _ build from command line, using gcc
b _ file association for .pde files
PDE / macos
b _ handlers for basic events
b _ MRJAboutHandler (just show splash screen)
b _ image for 'about processing'
b _ MRJPrefsHandler (open pde.properties in a text editor)
b _ MRJQuitHandler (confirm quit, may need to be in another thread)
b _ MRJOpenApplicationHandler and MRJOpenDocumentHandler
b _ especially the open document fella
b _ under osx, app won't get doc unless app already launched
b _ dataInputStream, setUseCaches on the url to false
b _ URLConnection.setUseCaches(false)
b _ parent.obj.close() on the url
b _ set file type/creator for .pde files.. TEXTPde1
b _ also for .jar and .html for files on export
b _ not sure whether to enable this for osx or not..
PDE / macos9
b _ make sure editor window is front so that error line highlights
PDE / macosx
b _ splash screen
b _ remove 'quit' from file menu
PDE / linux
b _ splash screen
b _ test serial with ibm vm and all
PDE / features
_ might be nice to have some notion of plugins for pde
_ color picker or other things written by folks
_ add all .jar files in lib/plugins on startup
_ make some kind of internal color picker
_ could be a separate window that's always around if needed
_ regexps: http://javaregex.com/cgi-bin/pat/tutorial.asp
_ a better editor:
_ line numbers like bbedit
_ syntax coloring
_ emacs indents and key commands
_ http://mathsrv.ku-eichstaett.de/MGF/homes/grothmann/je/index.html
_ want emacs-style editor that's faster loading than emacs
_ tweak updater a little bit so it's more likely to work
_ use numbered versioning?
_ give updater feedback (progress dialog, error msg)
PDE / science fiction
_ toggle for showing a function name each time its hit
_ toggle for showing line numbers within a function
_ i'm here messages, tie in with breakpoints for debugger
_ lightweight debugger, doesn't slow down, runs in back
_ toggle to show attr/value for some var in simple way
_ comments as debugging descriptors, output to console, shown in context
_ comments as naming for shapes drawn after it,
_ or some other model of naming based on inserted text with "" or // or #
_ could fit nicely with printf-style statements and comments
_ comments would contain descriptions //!blah for printing and formatting
_ sketchbook - doodling/scribbling area.. since wacom tablet easily accessible
_ look into maxx programming
_ single or multi-file cvs, not based on directories
_ i.e. i want illustrator.java for a project
_ version # stored in .java file
_ if a new version is available, asks 'do you want to update?'
_ multi-file: quicksort + sortable
_ check out interface builder for interesting tidbits
DOCS / guide
X _ document imageMode, planeMode, ellipseMode
X _ 'rot' example not working in release 18
_ 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
X _ make note in documentation about getting access to pixel array
X _ pixels[] is in ProcessingApplet
_ 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
_ bug in sun vm for freaking out
_ also happened with ibm vm.. grr.. (or was it a path problem?)
_ fixed width font format as technote and how to use
_ 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 transformPoint
_ 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
DOCS / reference
_ adding lights
_ control of position/color of default lights
_ controlling camera movements
_ mcguffin sent some notes about this
_ multmatrix/identity
_ constants besides PI, TWO_PI
_ min/max with 3 parameters
_ if (a) ? 3 : 4
_ formatting printf-style things
_ audio input
_ audio synthesis
X _ just saying 'millis' in processingapplet, instead of getMillis()
_ keyPressed, keyReleased, mousePressed, mouseReleased
MISC / building
_ build a linux/x86 release
_ write converter for java bagel -> cpp version
_ include #ifdefs for c stuff
_ fix buzz.pl to not create ../../bagel
_ how to use ssh identity file to maintain auth for brancusi
_ write dist.bat for releases
_ don't forget to update 'export' dir with processing releases
_ write code for automatic macintosh releases
MISC / code tidbits for scrapbook
_ delayUntil would be nice to have
_ but at some point there has to be a cutoff
_ have a library of useful code that people can add to programs
_ otherwise things are too simple, and env is a crutch
_ quicksort should probably just be made into 'sort' class
_ it's the only one ever used
_ stringutils.split is a useful one
_ readFileLines et al
_ translateMiddle() ? to move to the middle of the screen?
_ perlin noise function
_ read table/csv formatted data into a matrix
_ pseudo-database format version of this that stores indexes to file
_ rather than loading the whole thing at once
BXSocket, BXServerSocket
BXNetwork
BXSerial
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)
MISC / 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?
things noticed while casey watched him using the software
X _ if no 0 before decimal place in a number it breaks
X _ display window should have separate close box
X _ save window positions on closing (due to crashing)
X _ title of the file should be shown
X _ needs to be a menubar
_ text editor is quite bad (hiding cursor thing)
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
questions to resolve
X _ is it necessary to have fullscreen option on toolbar anymore?
_ what's better than POLYGON_CONVEX and POLYGON_CONCAVE?
_ should we use jdk 1.3 or msft vm?
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
JAVA BUGS
_ cursor disappears in textarea and doesn't reappear until re-entry
_ windows: jre 1.3.1_03 through 1.4.0_01
UNSORTED
_ 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
dammit we need a text editor.
gonna get sick of people bitching about it.
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 co bagel
cd bagel
rm -rf jgl
rm -rf cpp
cd ..
rm -rf web (optional, if you're only doing java dev)
cvs update -P (prune empty directories)
need to have 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
./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
_ hhmmm
_ for jgl version of bagel, jgl.jar needs to be in classpath