0178 core (private)
X filter(DILATE/ERODE)
X   dilate(boolean) has bug in clamping of top kernel coordinate
X   http://dev.processing.org/bugs/show_bug.cgi?id=1477
X deprecated 'screen', adding screenW and screenH
X write implementation for get/set methods inside PImage (w/o pixels[])


0177 core (private)
X no changes


0176 core (private)
X opengl sketches run at 30fps in present mode on OS X
o   still having problems w/ full screen non-FSEM
X   http://dev.processing.org/bugs/show_bug.cgi?id=1425
X PFont not working well with lots of characters
X   only create bitmap chars on the fly when needed (in createFont)
X Implement better caching mechanism when creating large fonts
X   http://dev.processing.org/bugs/show_bug.cgi?id=1111
X fix problem with "create font" still showing anti-aliased text
X don't make fonts power of 2
X PGraphics3D: beginDraw does not release old textures
X   http://dev.processing.org/bugs/show_bug.cgi?id=1423
X   fix from taifun_browser
X removing camera() and perspective() from setSize() trashes resize
X   probably regression b/c camera/perspective can't be called then
X   http://dev.processing.org/bugs/show_bug.cgi?id=1391


0175 core (private) 
X changed createInputRaw() to only bother checking URLs if : present


0174 core (private)
X svg paths that use 'e' (exponent) not handled properly
X   http://dev.processing.org/bugs/show_bug.cgi?id=1408


0173 core (private)
X Re-enabled hack for temporary clipping. 
X   Clipping still needs to be implemented properly, however. Please help!
X   http://dev.processing.org/bugs/show_bug.cgi?id=1393


0172 core (private)
X no changes to the core (or were there?) 


0171 core (1.0.9)
X Blurred PImages in OPENGL sketches
X   removed NPOT texture support (for further testing)
X   http://dev.processing.org/bugs/show_bug.cgi?id=1352


0170 core (1.0.8)
X added some min/max functions that work with doubles
X   not sure if those are staying in or not
X filter(RGB) supposed to be filter(OPAQUE) 
X   http://dev.processing.org/bugs/show_bug.cgi?id=1346
X implement non-power-of-2 textures
X fix get() when used with save() in OpenGL mode
X immediately update projection with OpenGL 
X   in the past, projection updates required a new frame
X   also prevents camera/project from being reset with setSize() (regression?)
X     which was a problem anyway because it made GL calls outside draw()
X partial fix for texture edge problems with opengl
o   http://dev.processing.org/bugs/show_bug.cgi?id=602
X some camera problems may be coming from "cameraNear = -8" line
X   this may cause other problems with drawing/clipping however
X opengl camera does not update on current frame (has to do a second frame)
X remove methods from PApplet that use doubles


0169 core (1.0.7)
X remove major try/catch block from PApplet.main()
X   hopefully will allow some exception stuff to come through properly
X PVector.angleDistance() returns NaN
X   http://dev.processing.org/bugs/show_bug.cgi?id=1316


0168 core (1.0.6)
X getImage() setting the wrong image type
X   http://dev.processing.org/bugs/show_bug.cgi?id=1282
X strokeWeight() makes lines 2x too thick with P2D
X   http://dev.processing.org/bugs/show_bug.cgi?id=1283
X image() doesn't work with P2D, P3D, and OPENGL with noFill()
X   http://dev.processing.org/bugs/show_bug.cgi?id=1299
o   maybe using rgb instead of tint inside drawing loops?
X   http://dev.processing.org/bugs/show_bug.cgi?id=1222


0167 core (1.0.5)
X changed text layout methods from private to protected


0166 core (1.0.4)
X disable point() going to set() from PGraphicsJava2D
X   set() doesn't honor alpha consistently
X   also causes problems with PDF
X preliminary thread() implementation
X double param version of map()
X PImage cacheMap problem when using PImage.get() 
X   http://dev.processing.org/bugs/show_bug.cgi?id=1245
X problems with > 512 points and P3D/OPENGL (thx DopeShow)
X   http://dev.processing.org/bugs/show_bug.cgi?id=1255
X imageMode(CENTER) doesn't work properly with P2D
X   http://dev.processing.org/bugs/show_bug.cgi?id=1232
X reset matrices when using beginRecord() with PDF
X   http://dev.processing.org/bugs/show_bug.cgi?id=1227
X resizing window distorts gl graphics
X   patch from Pablo Funes
X   http://dev.processing.org/bugs/show_bug.cgi?id=1176
X significant point() and set() slowdown on OS X
X   http://dev.processing.org/bugs/show_bug.cgi?id=1094


0165 core (1.0.3)
X update to itext 2.1.4
X endRecord or endRaw produces RuntimeException with PDF library
X   http://dev.processing.org/bugs/show_bug.cgi?id=1169
X problem with beginRaw/endRaw and OpenGL
X   http://dev.processing.org/bugs/show_bug.cgi?id=1171
X set strokeWeight with begin/endRaw
X   http://dev.processing.org/bugs/show_bug.cgi?id=1172
X fix strokeWeight with P3D (better version of line hack)
X make P3D use proper weights
X ArrayIndexOutOfBoundsException with point()
X   http://dev.processing.org/bugs/show_bug.cgi?id=1168


0164 core (1.0.2)
X requestImage() causing problems with JAVA2D
X fix minor strokeWeight bug with OpenGL
X text() with char array
o   add documentation
o   add this for text in a rectangle?
X minor bug fix to svg files that weren't being resized properly
X OpenGL is rendering darker in 0149+ 
X   http://dev.processing.org/bugs/show_bug.cgi?id=958
X   the fix has been found, just incorporate it
X   thanks to dave bollinger
X OutOfMemoryError with ellipse() in P3D and OPENGL
X   http://dev.processing.org/bugs/show_bug.cgi?id=1086
X   should also fix problem with AIOOBE
X   http://dev.processing.org/bugs/show_bug.cgi?id=1117
X point(x,y) ignores noStroke() (in some renderers)
X   http://dev.processing.org/bugs/show_bug.cgi?id=1090
X fix startup problem when scheme coloring was odd
X   http://dev.processing.org/bugs/show_bug.cgi?id=1109
X fix several point() problems with P3D
X   http://dev.processing.org/bugs/show_bug.cgi?id=1110
X nextPage() not working properly with PDF as the renderer
X   http://dev.processing.org/bugs/show_bug.cgi?id=1131
X save styles when nextPage() is called
X beginRaw() broken (no DXF, etc working)
X   http://dev.processing.org/bugs/show_bug.cgi?id=1099
X   http://dev.processing.org/bugs/show_bug.cgi?id=1144
X Fix algorithm for quadratic to cubic curve conversion 
X   wrong algorithm in PGraphicsOpenGL and PShapeSVG
X   (thanks to user 'shambles')
X   http://dev.processing.org/bugs/show_bug.cgi?id=1122
X tint() not working in P2D
X   http://dev.processing.org/bugs/show_bug.cgi?id=1132
X blend() y coordinates inverted when using OpenGL
X   http://dev.processing.org/bugs/show_bug.cgi?id=1137

invalid/wontfix/dupe
X Processing will not start with non-standard disk partitioning on OS X
X   http://dev.processing.org/bugs/show_bug.cgi?id=1127
X Got NoClassDefFoundError exception when accessing quicktime API
X   http://dev.processing.org/bugs/show_bug.cgi?id=1128
X   http://dev.processing.org/bugs/show_bug.cgi?id=1129
X   http://dev.processing.org/bugs/show_bug.cgi?id=1130
X not using present mode correctly
X   http://dev.processing.org/bugs/show_bug.cgi?id=1138
X apparent graphics driver conflict on vista
X   http://dev.processing.org/bugs/show_bug.cgi?id=1140
X PImage.save() does not create parent directories
X   http://dev.processing.org/bugs/show_bug.cgi?id=1124
X sketch turning blue and not working on osx
X   http://dev.processing.org/bugs/show_bug.cgi?id=1164
X dupe: blend() inaccurary
X  http://dev.processing.org/bugs/show_bug.cgi?id=1008
X glPushAttrib style function
X   http://dev.processing.org/bugs/show_bug.cgi?id=1150
X calling saveFrame() in noLoop() (update reference)
X   http://dev.processing.org/bugs/show_bug.cgi?id=1155

xml
X fix for xml elements that have null names
X added listChildren() method
X added optional toString(boolean) parameter to enable/disable indents


0163 core (1.0.1)
X do not parse split() with regexp
X   http://dev.processing.org/bugs/show_bug.cgi?id=1060
X ArrayIndexOutOfBoundsException in ellipseImpl() with 1.0
X   http://dev.processing.org/bugs/show_bug.cgi?id=1068


0162 core (1.0)
X no additional changes for 1.0


0161 core
X present on macosx causing strange flicker/jump while window opens
X   using validate() for present mode, pack() otherwise
X   http://dev.processing.org/bugs/show_bug.cgi?id=1051


0160 core
X stroked lines drawing on top of everything else in P3D
X   http://dev.processing.org/bugs/show_bug.cgi?id=1032
X 100x100 sketches not working


0159 core
o disable present mode? (weirdness with placements on mac)
X   deal with some present mode issues
X   use FSE on mac within the PDE
X   when exporting, never use FSE
_   document changes re: can specify --exclusive on command line
X do we need to do glEnable for multisample with gl?
o   just need to test this on a few platforms
X   doesn't seem to be the case
X Present mode and OPENGL not working in 0156 with Windows Vista
X   http://dev.processing.org/bugs/show_bug.cgi?id=1009
X   Seems to be limited to Java 6u10 (but verify)
o   -Dsun.java2d.d3d=false seems to fix the problem
o   can probably add that to PApplet.main()
X   does not work


0158 core
X beginShape(TRIANGLE_FAN), and therefore arc(), broken in P2D
X   also a typo in the ColorWheel example
X   http://dev.processing.org/bugs/show_bug.cgi?id=1019
X P2D - null pointer exception drawing line with alpha stroke
X   http://dev.processing.org/bugs/show_bug.cgi?id=1023
X P2D endShape() is working like endShape(CLOSE) 
X   http://dev.processing.org/bugs/show_bug.cgi?id=1021
X   http://dev.processing.org/bugs/show_bug.cgi?id=1028 (mark as dupe)
X arc() center transparent
X   http://dev.processing.org/bugs/show_bug.cgi?id=1027
X   mark as dupe of bug #200
X   but fixed for the P2D case, still afflicts P2D
X P2D - alpha stroke rendered at full opacity
X   http://dev.processing.org/bugs/show_bug.cgi?id=1024
X smooth() on single line ellipses not coming out smooth
X   sort of works, just not great
X improve (slightly) the quality of ellipse() and arc() with P2D
X   don't use TRIANGLE_FAN on ellipseImpl() and arcImpl() with P2D
X   split out ellipseImpl and arcImpl from PGraphics into P2D and P3D
X figure out better model for adaptive sizing of circles
X   also goes for arcs, though will be weighted based on arc size
X Bring back CENTER_RADIUS but deprecate it
X   http://dev.processing.org/bugs/show_bug.cgi?id=1035
X enable smoothing by default in opengl
X   change hints to instead only be able to DISABLE 2X or 4X
X bring back .width and .height fields for PShape
o   need to update the examples to reflect
X   no examples to update
X change reference re: smoothing in opengl
X   hint(), smooth(), and size()
X   rev the version number


0157 core
X SVG polygon shapes not drawing since loadShape() and PShape changes
X   http://dev.processing.org/bugs/show_bug.cgi?id=1005
X image(a, x, y) not honoring imageMode(CENTER)
X   need to just pass image(a, x, y) to image(a, x, y, a.width, a.height)
X   rather than passing it directly to imageImpl()
X   http://dev.processing.org/bugs/show_bug.cgi?id=1013
o disable P2D before releasing (unless implementation is finished)


0156 core
X clarify the "no variables in size() command" rule
X   http://dev.processing.org/bugs/show_bug.cgi?id=992
X present mode broken in general?
X   placement of elements in present mode is messed up
X   "stop" button hops around, window not centered on screen
X   http://dev.processing.org/bugs/show_bug.cgi?id=923
X disable P2D for size() and createGraphics() before releasing
X   already was disabled, just a bug in detecting it


0155 core
X hint(DISABLE_DEPTH_TEST) throws null pointer exception with OpenGL
X   http://dev.processing.org/bugs/show_bug.cgi?id=984


0154 core
X only set apple.awt.graphics.UseQuartz on osx, otherwise security error
X   http://dev.processing.org/bugs/show_bug.cgi?id=976
X add skewX() and skewY() to PMatrix
X Add support style attribute for path tag to Candy SVG (ricard)
X   http://dev.processing.org/bugs/show_bug.cgi?id=771
X remove setX/Y/Z from PVector, copy() (use get() instead), add mult/div
X   remove copy() from PVector? 
X   add mult() and div() with vector inputs?


0153 core
X make PImage.init() public again


0152 core
X no changes to 0152 core


0151 core
X NullPointerException on curveVertex() when using more than 128 vertices
X   http://dev.processing.org/bugs/show_bug.cgi?id=952
X Text not bounding correctly with x, y, w, h
X   http://dev.processing.org/bugs/show_bug.cgi?id=954
o dataFolder() might be flawed b/c it's referring to contents of jar file
o   for input, better to use openStream
X   clear up the javadoc on this
X odd-size height will make blue line across image in saveFrame()
X   http://dev.processing.org/bugs/show_bug.cgi?id=944
X   probably the pixel flipping code (and endian sorting) not happening
X   because the blue comes from the byte order flip
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=OpenGL;action=post;num=1219196429
X ArrayIndexOutOfBoundsException in PLine
X   http://dev.processing.org/bugs/show_bug.cgi?id=246
X   http://dev.processing.org/bugs/show_bug.cgi?id=462
X random AIOOBE with P3D and points
X   http://dev.processing.org/bugs/show_bug.cgi?id=937

cleanup
X alter bezier and curve matrices to use PMatrix
X   float array stuff is redundant with code that's in PMatrix
X   and PMatrix has to be included even w/o P3D so...
X add texture support to begin/endRaw
X should we do joins when alpha is turned off?
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=OpenGL;action=display;num=1210007450
X   no, because it's too processor intensive to draw a lotta ellipses
X   but added a note about it to the reference for 0151
X strokeWeight() doesn't work in opengl or p3d
o gl smoothing.. how to disable polygon but keep line enabled
o   or at least make a note of this?
o   leave smooth off, get the gl object, then enable line smooth
X   don't bother, this is a workaround for another bug
o PPolygon no longer in use and PLine is a mess
o   make a version of PGraphics3 that uses it for more accurate rendering?


0150 core
X no changes to processing.core in 0150


0149 core
X remove MACOS9 constant from processing.core.*
X   because code no longer runs on os9 since dropping 1.1 support
X specular() with alpha has been removed
X GLDrawableFactory.chooseGraphicsConfiguration() error with OpenGL
X   http://dev.processing.org/bugs/show_bug.cgi?id=891
X   http://dev.processing.org/bugs/show_bug.cgi?id=908
X fix problem with unregisterXxxx()
X   http://dev.processing.org/bugs/show_bug.cgi?id=910
X make parseFloat() with String[] array return NaN for missing values
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Syntax;action=display;num=1220880375
X fix problems with text in a rectangle
X   http://dev.processing.org/bugs/show_bug.cgi?id=893
X   http://dev.processing.org/bugs/show_bug.cgi?id=899
X finish getImage() method inside PImage
X delay() is broken
X   http://dev.processing.org/bugs/show_bug.cgi?id=894
X remove extra ~ files from core.jar
X   also fix for other libraries in the make scripts across platforms
X fix problems in PApplet regarding signed code
X   createInput() wasn't bothering to check files when not online
X unhint() has been removed, see the reference for hint() for changes
o enable() and disable() instead of hint()/unhint()
o   should these use text strings? how will that be compiled?
X remove unhint(), add opposite hints for those that need to be disabled
o   maybe update hint() ref to be more clear about screen not accumulating
X   no, it's explicitly stated as such
X make decisions about whether PGraphics is an abstract class or not
X   method signature is a real problem
X figure out how to handle constructor mess
X   clean up setMainDrawingSurface()
X   should instead be inside size(), and init(), no?
X add to hint(DISABLE_DEPTH_TEST)
X   gl.glClear(GL.GL_DEPTH_BUFFER_BIT); 
X   or clearing the zbuffer for P3D
X   also add a note to the hint() reference
X DISABLE_DEPTH_TEST bad results
X   have to clear the zbuffer to make it work
X   this may be specific to lines
X   http://dev.processing.org/bugs/show_bug.cgi?id=827
X   though it also seems to be a problem with opengl
X   also make a note of disabling as a way to help font appearance
o Font width calculation fails when using vectorfonts and PDF
o   http://dev.processing.org/bugs/show_bug.cgi?id=920
X um, this is gross: getMatrix((PMatrix2D) null)
X no changing point sizes when using beginShape(POINTS)
X   this is an opengl restriction, should we stick with it elsewhere?
X   and changing stroke weight in general (with lines/shapes)
o   no renderer does this, we should probably disable it
X   added a note to the reference about it
X may need to add to PApplet.main() for OS X 10.5
X   System.setProperty("apple.awt.graphics.UseQuartz", "true");
X deprecate arraycopy(), change to arrayCopy()

cleaning
o chooseFile() and chooseFolder() with named fxn callbacks
o   the function must take a File object as a parameter
o add better error messages for all built-in renderers
o   i.e. "import library -> pdf" when pdf is missing
o cameraXYZ doesn't seem to actually be used for anything
o   since camera functions don't even look at it or set it
o registerSize() in arcball is causing trouble
o   some sort of infinite loop issue
o textMode(SCREEN) is broken for opengl
o   http://dev.processing.org/bugs/show_bug.cgi?id=426
o textSpace(SCREEN) for opengl and java2d
o   don't use loadPixels for either
o   use font code to set the cached color of the font, then call set()
o   although set() with alpha is a little different..
o resizing opengl applet likely to cause big trouble
o   componentlistener should prolly only do size() command outside of draw
o fjen says blend() doens't work in JAVA2D
o   the functions are fairly well separated now in PMethods
o   just go through all the stuff to make sure it's setting properly

point()
X java2d - if strokeWeight is 1, do screenX/Y and set()
X   if strokeWeight larger, should work ok with line()
X   no, use an ellipse if strokeWeight is larger
X gl points not working again
X   need to implement point() as actual gl points
X   this means adding points to the pipeline
X point() doesn't work with some graphics card setups
X   particularly with opengl and java2d
X   http://dev.processing.org/bugs/show_bug.cgi?id=121
X point() issues
o   point() being funneled through beginShape is terribly slow
X     go the other way 'round
X   sometimes broken, could be a problem with java 1.5? (was using win2k)

font
X fix getFontMetrics() warning
X   need to have a getGraphics() to get the actual Graphics object
X   where drawing is happening. parent.getGraphics() works except for OpenGL
X Java2D textLinePlacedImpl should check for ENABLE_NATIVE_FONTS hint
X   http://dev.processing.org/bugs/show_bug.cgi?id=633
X also try to check native font on textFont() commands
X   in case the hint() has been enabled in the meantime
X   or rather, always load native font, even w/o the hint() being set

PGraphics API changes
X setMainDrawingSurface() -> setPrimarySurface()
X mainDrawingSurface = primarySurface;
X resize() -> setSize() (roughly)
X endShape() with no params is no longer 'final'
X X/Y/Z -> TX/TY/TZ
X MX/MY/MZ -> X/Y/Z (for sake of PShape)
X render_triangles -> renderTriangles()
X depth_sort_triangles -> sortTriangles()
X render_lines -> renderLines()
X depth_sort_lines -> sortLines()
X no longer any abstract methods in PGraphics itself
X removed support for specular alpha (and its 'SPA' constant)
X clear() -> backgroundImpl()
X add DIAMETER as synonym for CENTER for ellipseMode and friends
X textFontNative and textFontNativeMetrics have been removed
X   they've been re-implemented per-PGraphics in a less hacky way
X hint(ENABLE_NATIVE_FONTS) goes away
X   need to mention in createFont() reference
X   also maybe cover in the loadFont() reference? (maybe problem...)
X image.cache has been removed, replaced with get/set/removeCache()
X   this allows per-renderer image cache data to be stored
X imageMode has been removed from PImage, too awkward
X   this also means that imageMode ignored for get(), set(), blend() and copy()
X smooth is now part of PGraphics, moved out of PImage
X raw must handle points, lines, triangles, and textures
X light position and normal are now PVector object
X changed NORMALIZED to NORMAL for textureMode()

shapes
X maybe finish off the svg crap for this release
X working on pshape
X   add shape() methods to PGraphics/PApplet
X   test and fix svg examples
X revisions.txt for x/y/z/ tx/ty/tz.. other changes in api.txt
X bring svg into main lib 
X need to straighten out 'table' object for quick object lookup
X   maybe add to all parent tables? (no, this gets enormous quickly)
X fix svg caps/joins for opengl with svg library
X   http://dev.processing.org/bugs/show_bug.cgi?id=628
X save/restore more of the p5 graphics drawing state
X   not setting colorMode(), strokeCap, etc.
X ignoreStyles is broken - how to handle
X   need a whole "styles" handler
X handle cap/join stuff by
X   if it's setting the default, no error message
X   if it's not the default, then show an error msg once
X   have a list Strings for errors called, rather than constants for all
X     that way, no need to have an error message for every friggin function
X PMatrix now PMatrix3D (maybe not yet?)
X change svg library reference

hint/unhint/enable/disable
X option to have renderer errors show up
X   1) as text warnings 2) as runtime exceptions 3) never
X add warning system for pgraphics, rather than runtime exceptions
X   keep array of warning strings, and booleans for whether they've called
X ENABLE_DEPTH_SORT not really working for GL
X   because the zbuffer is still there, it's still calculating
X   actually, this is probably because it happens after the frame
X   so really, flush is required whenever the depth sort is called
X   need to check this--isn't this referring to DISABLE_DEPTH_TEST?
X ENABLE_DEPTH_SORT causing trouble with MovieMaker
X   need to make the flush() api accessible
X   http://dev.processing.org/bugs/show_bug.cgi?id=692
X image smoothing 
X   straighten out default vs. ACCURATE vs. whatever
X   Java2D and P3D and OpenGL are all inconsistent
o   need to be able to do hint() to do nearest neighbor filtering
X   http://dev.processing.org/bugs/show_bug.cgi?id=685
o   imageDetail(), textDetail(), etc?
o   decisions on image smoothing vs. text smoothing vs. all


0148 core
X tweaks to PGraphicsOpenGL to support GLGraphics


0147 core
X processing sketches not restarting after switching pages in safari
X   http://dev.processing.org/bugs/show_bug.cgi?id=581

cleaning
X misshapen fonts on osx (apple fixed their bug)
X   http://dev.processing.org/bugs/show_bug.cgi?id=404


0146 core
X fix the internal file chooser so that people don't need to make their own
X   threading is a problem with inputFile() and inputFolder()
X   dynamically load swingworker?
o   remove saveFile() methods?
o     write up examples for these instead?
o     start an integration section?
X get() in java2d not honoring imageMode or rectMode
X add imageMode(CENTER) implementation
X   add a bunch of changes to the reference to support this
X Duplicate 3d faces in beginRaw() export
X   this was actually doubling geometry, potentially a bit of a disaster
X   http://dev.processing.org/bugs/show_bug.cgi?id=737
o bezierVertex YZ Plane fill problem
X   http://dev.processing.org/bugs/show_bug.cgi?id=752
X   weird coplanar stuff, shouldn't be doing 3D anyway

cleanup
X switch to requestImage() (done in 0145)
o can bug 77 be fixed with a finalizer? (no, it cannot)
X make sure that images with alpha still have alpha in current code
X text in rectangle is drawing outside the box
X   http://dev.processing.org/bugs/show_bug.cgi?id=844
X points missing in part of screen
X   http://dev.processing.org/bugs/show_bug.cgi?id=269


0145 core
X separate x/y axis on sphereDetail() params
X   http://dev.processing.org/bugs/show_bug.cgi?id=856
X make sure docs for PImage use createImage
X add notes about JOGLAppletLauncher
X   http://download.java.net/media/jogl/builds/nightly/javadoc_public/com/sun/opengl/util/JOGLAppletLauncher.html
X   added to javadoc
o need a halt() method which will kill but not quit app (sets finished?)
o   exit() will actually leave the application
o   this may in fact only be internal
X   this is just the stop() method, though maybe we need to document it
X text(String, float, float, float, float) draws text outside box
X   http://dev.processing.org/bugs/show_bug.cgi?id=844
X implement textAlign() for y coords in text rect
X   need to add reference for this
X textAlign() bottom now takes textDescent() into account
X remove gzip-related hint()

threading
X major threading overhaul before 1.0 (compendium)
X   http://dev.processing.org/bugs/show_bug.cgi?id=511
X   ewjordan has added a good trace of the badness
X need to move off anim off the main event thread
X   move away from using method like display
X   look into opengl stuff for dealing with this
X move addListeners() calls back out of PGraphics
X resize window will nuke font setting
X textFont() used in setup() is null once draw() arrives
X   http://dev.processing.org/bugs/show_bug.cgi?id=726
X colorMode() set inside setup() sometimes not set once draw() arrives
X   http://dev.processing.org/bugs/show_bug.cgi?id=767
X applet sizing issues with external vm
X   could this possibly be related to the linux bug?
X   http://dev.processing.org/bugs/show_bug.cgi?id=430
X alloc() stuff not fixed because of thread halting
X   problem where alloc happens inside setup(), so, uh..
X   http://dev.processing.org/bugs/show_bug.cgi?id=369
X   should instead create new buffer, and swap it in next time through
X sonia (and anything awt) is locking up on load in rev 91
X   prolly something w/ the threading issues
X   paint is synchronized in 0091
X     however this is a necessity, otherwise nasty flickering ensues
X     and using a "glock" object seems to completely deadlock
X   http://dev.processing.org/bugs/show_bug.cgi?id=46
o claim that things are much slower in 107 vs 92
o   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Suggestions;action=display;num=1141763531
X   hopefully this is cleaned up by removing some of the synchronization
X sketches lock up when system time is changed
X   http://dev.processing.org/bugs/show_bug.cgi?id=639
X can draw() not be run on awt event thread?
X   look into opengl stuff for dealing with this
o "is there a better way to do this" thread in lists folder
X framerate that's reported is out of joint with actual
X   http://dev.processing.org/bugs/show_bug.cgi?id=512
X   accuracy of frame timer is incorrect
X   seems to be aliasing effect of low resolution on millis()
X   so rates coming out double or half of their actual
X   probably need to integrate over a rolling array of 10 frames or so
X frameRate() speeds up temporarily if CPU load drops dramatically
X   http://dev.processing.org/bugs/show_bug.cgi?id=297
o   perhaps add a hint(DISABLE_FRAMERATE_DAMPER)
X fix the flicker in java2d mode
X   http://dev.processing.org/bugs/show_bug.cgi?id=122
X   framerate(30) is still flickery and jumpy..
X   not clear what's happening here
X   appears to be much worse (unfinished drawing) on macosx
X     try turning off hw accel on the mac to see if that's the problem


0144 core
X if loading an image in p5 and the image is bad, no error msg shown
X   that is, if a loadImage() turns up an access denied page
X   added an error message for this, and the image width and height will be -1
X added loadImageAsync() for threaded image loading

opengl fixes 
X incorporate changes from andres colubri into PGraphicsOpenGL
X   most of the changes incorporated, something weird with constructors
X use gluErrorString() for glError() stuff
X PGraphicsOpenGL.java:
X   directionalLight() and .pointLight() are both calling
X   glLightNoAmbient() which then creates a new FloatBuffer 
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1199376364


0143 core
X some fonts broken in java 1.5 on osx have changed again
X   http://dev.processing.org/bugs/show_bug.cgi?id=407
X   filed as bug #4769141 with apple http://bugreport.apple.com/
X   appears that asking for the postscript name no longer works
o   fix "create font" and associated font stuff to straighten it out
X   was grabbing the wrong native font with ico sketch 
X   seems that the psname is no longer a good way to grab the font? related?
X available font issues
X   is getFontList returning a different set of fonts from device2d?
X     try it out on java 1.3 versus 1.4
X   getAllFonts() not quite working for many fonts
X   i.e. Orator Std on windows.. macosx seems to be ok
X   is getFamilyNames() any different/better?
X   when did this break? 1.4.1? 1.4.x vs 1.3?
X   may be that cff fonts won't work?
X   or is it only those with ps names?
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1117445969
o leading looks too big, at least in PGraphics2 with news gothic
X   though prolly the converted version of the .ttf?
X add a fix so that negative angle values won't hork up arc() command
X add resize() method to PImage


0142 core
X update iText in PDF library to 2.1.2u
X loadStrings(".") should not list directory contents
X   http://dev.processing.org/bugs/show_bug.cgi?id=716


0141 core
X no changes to core in 0141


0140 core
X add static version of loadBytes() that reads from a File object
X slightly clearer error messages when OpenGL stuff is missing


0139 core
X no changes to core in 0139


0138 core
X improve tessellation accuracy by using doubles internally
X   http://dev.processing.org/bugs/show_bug.cgi?id=774


0137 core
X add gz handling for createOutput()
X change openStream() to createInput() (done in 0136)
X   add createOutput() 
X   deprecate openStream() naming


0136 core
X add static version of saveStream() (uses a File and InputStream object)
X A "noLoop()" sketch may be unresponsive to exit request
X   http://dev.processing.org/bugs/show_bug.cgi?id=694
X Fixed bug with subset() when no length parameter was specified
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Syntax;action=display;num=1196366408
X   http://dev.processing.org/bugs/show_bug.cgi?id=707
X figure out why tiff images won't open with after effects
X   http://dev.processing.org/bugs/show_bug.cgi?id=153
X   open with photoshop, resave, see which tags change
X     specifically, which tags that were in the original image file
X     perhaps something gets corrected? 
X   had a fix, but decided not to re-implement the loadTIFF stuff too
X fix for bezierTangent() problem from dave bollinger
X   http://dev.processing.org/bugs/show_bug.cgi?id=710
X implement curveTangent (thanks to davbol)
X   http://dev.processing.org/bugs/show_bug.cgi?id=715
X fix problem with get() when imageMode(CORNERS) was in use
X fix bug with splice() and arrays
X   http://dev.processing.org/bugs/show_bug.cgi?id=734
X 'screen' is now static
X   undo this--may need to be better about specifying screen and all
X PImage mask doesn't work after first call
X   http://dev.processing.org/bugs/show_bug.cgi?id=744
X load and save tga results in upside down tga
X   http://dev.processing.org/bugs/show_bug.cgi?id=742
X fix problem with g.smooth always returning false in JAVA2D
X   http://dev.processing.org/bugs/show_bug.cgi?id=762
X add XMLElement (not filename) constructor to SVG lib
X   http://dev.processing.org/bugs/show_bug.cgi?id=773


0135 core
X modelX/Y/Z still having trouble
X   http://dev.processing.org/bugs/show_bug.cgi?id=486
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Suggestions;action=display;num=1186614415
X add docs for model/screen/Y/Z
X   added for model, along with example. 
X   screen was already complete
X bring back opengl mipmaps (create them myself? try w/ newer jogl?)
X   opengl mipmaps are leaking (regression in spite of #150 fix)
X   http://dev.processing.org/bugs/show_bug.cgi?id=610
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=OpenGL;action=display;num=1193967684
X   seems to not actually be a problem on mbp, try desktop?
X copy() was needing updatePixels() when used with OPENGL or JAVA2D
X   http://dev.processing.org/bugs/show_bug.cgi?id=681
X   check on the bug report for this one as well
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Syntax;action=display;num=1173394373

earlier 
o add notes about fixing serial on the mac to the faq (and link to bug)
X   not necessary, hopefuly things working better now
X utf8 and encodings
X   createWriter() and createReader() that take encodings
X   xml files seem to be a lot of UTF-8
X xml stuff
X   getItem("name");
X   getItems("name"); (same, but looks for multiple matches
X   getItem("path/to/item");
o   or could use getItem and getItemList? getItemArray()?
o   read more about xpath
X parse xml from a string object
X   not have to just use Reader
X   add mention of this to the board
o update to new version of jogl
X fix mini p5 bugs for eugene


0134 core
X add noLights() method
X   http://dev.processing.org/bugs/show_bug.cgi?id=666
X redraw the screen after resize events (even with noLoop)
X   http://dev.processing.org/bugs/show_bug.cgi?id=664
o problem with transparency in mask()
o   http://dev.processing.org/bugs/show_bug.cgi?id=674
X   mark bug as invalid, using fill() instead of tint()
X move to UTF-8 as native format for core file i/o operations
X   update reference to document the change
o jogl glibc 2.4 problem on linux
o   move back to previous jogl until 1.1.1 is released
X   http://dev.processing.org/bugs/show_bug.cgi?id=675
o deal with opengl applet export changes
o   what is deployment suggestion for all the different platforms?
o   can the jar files actually provide the DLLs properly?
X revert back to jogl 1.0


0133 core
X fix problem with "export to application" and opengl
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=OpenGL;action=display;num=1193142573
X add focus requests so that better chance of keys etc working
X   http://dev.processing.org/bugs/show_bug.cgi?id=645
X   argh, these make things worse (P3D run internal)
X add stuff about classversionerrors to the reference
X   also update the libraries page
X fix background() with P3D and beginRaw()
X endRaw() has a problem with hint(ENABLE_DEPTH_SORT)
X   because the triangles won't be rendered by the time endRaw() is called
X   force depth sorted triangles to flush
X is mousePressed broken with noLoop() or redraw()?
X   sort of but not really, add notes to reference about it

cleaning
o calling graphics.smooth(), graphics.colorMode() outside begin/endDraw
o   this causes everything to be reset once the draw occurs
o   kinda seems problematic and prone to errors?
X   nope, just need to say to do all commands inside begin/endDraw
o finish implementation so 1.1 support can return
X   http://dev.processing.org/bugs/show_bug.cgi?id=125
o check into ricard's problems with beginRecord()
X   i believe these were caused by linux java2d issues
X beginFrame()/beginDraw() and defaults()
X   when should these be called, when not?
X   seems as though the begin/end should happen inside beginRaw/Record
X   defaults() gets called by the size() command in PApplet
o would be cool if could sort w/o the sort class..
o   meaning use reflection to sort objects, just by implementing a few methods
o   would be much simpler and less confusing than new Sort() etc 
o   or would it be ridiculously slow?
X   just using Comparator instead, since moving to Java 1.4
X make a PException that extends RuntimeException but packages an ex?
X   http://java.sun.com/docs/books/tutorial/essential/exceptions/runtime.html
X   no, not necessary, and exceptions suck
o need to write an error if people try to use opengl with 1.3 (i.e. on export)
o   don't let users with java < 1.4 load OPENGL
o   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Contribution_3DOpenGL;action=display;num=1114368123;start=3
o catch security exceptions around applet i/o calls
o   not just for saving files, but provide better error msgs when
o     attempting to download from another server
X   nope, just cover this in the reference
o files not in the data folder (works in env, not in sketch)
X   mentioned repeatedly in the docs
o fix link() to handle relative URLs
o   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1081710684
X   more trouble (and bug-worthy) than it's worth
o put SecurityException things around file i/o for applets
o   rather than checking online(), since applets might be signed
X   no, better to let errors come through
o slow on java2d, fast on p3d
o   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1115276250;start=3

ancient
o strokeWeight is still broken
o   setting stroke width on circle makes odd patterns
o   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1077013848
o   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1080347160
o more weirdness with stroke on rect, prolly not alpha
o   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1085799526
o rect is not getting it's stroke color set
o   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1073582391;start=0
o weird problem with drawing/filling squares
o   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1077226984
o alpha of zero still draws boogers on screen
o   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1073329613;start=0
o   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1080342288;start=0
o break apart functions into local (placement) and override (blitting)
o   just have a "thin_flat_line" option in opengl code
o is quad strip broken or not behaving as expected?
X   may be correct, it worked for nik
X inside draw() mode, delay() does nothing
X   delay might be a good way to signal drawing to the screen/updating
X set(x, y, image) x, y not setting with processing

fixed earlier
X is the texture[] array in PGraphics3D causing the problems with memory?
X   actually it's a PGraphicsGL problem.. 
X   maybe the image binding not getting unbound?
o should image i/o be moved into PImage?
o   still needs applet object, so it's not like this is very useful
o   external PImage methods could take stream, i suppose..
X   relevant parts were moved in, others not
o loadImage() using spaces in the name
o   if loadImage() with spaces when online(), throw an error
o get tiff exporter for p5 to support argb and gray
X   would also need to modify the tiff loading code, 
X   because the header would be different
X   http://dev.processing.org/bugs/show_bug.cgi?id=343
X map() is not colored, neither is norm
X image outofmemoryerror for casey's students
X   http://dev.processing.org/bugs/show_bug.cgi?id=355
X   this may be related to a ton of other memory bugs
X   1.5.0_07 and 1.4.2_12 contain the -XX:+HeapDumpOnOutOfMemoryError switch 
X     invaluable for tracking down memory leaks 
X   can't replicate anymore
X texture mapping
X   very odd, "doom era" stuff
X   would it be possible to have a 'slow but accurate' mode?
X   http://dev.processing.org/bugs/show_bug.cgi?id=103
X   fixed in release 0125
X add hint() and unhint()
X   also add unhint() to the keywords file
X   and maybe remove hint() from keywords_base?
o present mode is flakey.. applet doesn't always come up
o   seems like hitting stop helps shut it down?
o   is full screen window not being taken down properly?
o   has this fixed itself, or is it an issue with launching externally?
X   seems to be fixed in later java versions
X rewrite getImpl/setImpl inside opengl
X placement of 100x100 items is odd
X   happens with P3D and maybe also P2D?
X   http://dev.processing.org/bugs/show_bug.cgi?id=128


0132 core
X an image marked RGB but with 0s for the alpha won't draw in JAVA2D
X   images with 0x00 in their high bits being drawn transparent
X   also if transparency set but RGB is setting, still honors transparency
X   http://dev.processing.org/bugs/show_bug.cgi?id=351
X improve memory requirements for drawing images with JAVA2D
X   now using significantly less memory

tint/textures
X tint() and noTint() switching problem in P2D
X   this should be a quick fix
X   http://dev.processing.org/bugs/show_bug.cgi?id=222
X related to the fill bugs: when fill is identical, no fill applied
X   actually tint() should take over for fill as per-vertex color
X   when textured images are being used
X   http://dev.processing.org/bugs/show_bug.cgi?id=169
X tint() should set texture color, fill() is ignored with textures
X   add to the reference
X fix tint() for PGraphics3 (what could be wrong?)
X   tint() honoring alpha but not colored tint
X   maybe not setting fill color when drawing textures
X   guessing it's an implementation issue in sami's renderer
X   check with the a_Displaying example and tint(255, 0, 0, 100);
X   http://dev.processing.org/bugs/show_bug.cgi?id=90


0131 core
X hint(DISABLE_DEPTH_TEST) not behaving consistently
X   http://dev.processing.org/bugs/show_bug.cgi?id=483
o make hints static - cannot do that
X clean up hinting mechanism a bit
X look into jogl anti-aliasing on osx
o   smoothMode(2) and smoothMode(4), right after size()?
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=OpenGL;action=display;num=1175552759
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=OpenGL;action=display;num=1164236069
X look into capabilities stuff from mike creighton
X   also sets the aa mode on the pc so it no longer needs control panel bunk
X update to JOGL 1.1.0
X add gluegen-rt back to the applet export
X   http://download.java.net/media/jogl/builds/nightly/javadoc_public/com/sun/opengl/util/JOGLAppletLauncher.html
X add print() and println() for long and double
X   http://dev.processing.org/bugs/show_bug.cgi?id=652
X fix minor bug in saveStream() (undocumented)
X "this file is named" errors don't like subdirectories
X   need to strip off past the file separator or something


0130 core
X fixed problem with size() and the default renderer
X   the renderer was being reset after setup(), 
X   so anything that occurred inside setup() was completely ignored.
X   http://dev.processing.org/bugs/show_bug.cgi?id=646
X   http://dev.processing.org/bugs/show_bug.cgi?id=648
X   http://dev.processing.org/bugs/show_bug.cgi?id=649
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1192873557
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1192731014


0129 core
X width and height not always set properly
X   http://dev.processing.org/bugs/show_bug.cgi?id=642
X bring back background() with alpha


0128 core
X remove PFont reflection stuff
X remove cursor reflection stuff
X fix up sorting functions
X   implement sortCompare() and sortSwap()
X      discuss this with casey
X   also could be using Arrays.sort(blah) with Comparable (1.2+)
X   make sorting functions static
X   use methods from Arrays class, cuts down on code significantly
X   implement sortCompare() and sortSwap()
X     discuss this with casey
o     also could be using Arrays.sort(blah) with Comparable (1.2+)
X   make sorting functions static?
o should loadFont() work with ttf files (instead of createFont?)
X   otherwise loadFont() would work with font names as well, awkward
X   better to use createFont() for both
o jogl issues with some cards on linux, might be fixed with newer jogl
X   http://dev.processing.org/bugs/show_bug.cgi?id=367
X remove methods for background() to include an alpha value
X   this is undefined territory because of zbuffer and all
X   if you want that effect, use a rect()
X saveFrame() produces a black background because bg not set correctly:
X   http://dev.processing.org/bugs/show_bug.cgi?id=421
X background not being set properly
X   http://dev.processing.org/bugs/show_bug.cgi?id=454
X   having shut off the defaults reset, background not getting called for java2d
X   so this will make that other stuff regress again
X   in particular, when the applet is resized, but renderer not changed
X why aren't background() / defaults() being called for opengl?
o   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Contribution_3DOpenGL;action=display;num=1118784331
o simon reports borders on P3D and OPENGL if background() not called
X window fixed at 100x100 pixels
X   http://dev.processing.org/bugs/show_bug.cgi?id=197
X   width/height on problem machine prints out as:
X   100x100 issues are exhibited on bh140c PCs, test and fix!
X   100,200 and 128,200
o AIOOBE on PLine 757.. halts renderer
o fix erik's problems with export (also in bugs db)
X draw() called twice in vista with java 1.6
X   http://dev.processing.org/bugs/show_bug.cgi?id=587

cleanup from previous releases
X P3D not doing bilinear interpolation in text and images 
X   because smooth() has to be set (and smooth throws an error in P3D)
X   how should this be handled? a hint? allowing smooth()?
X   probably just allow smooth() but don't smooth anything
o pdf export ignoring transparency on linux
o   check to see if this is the case on other linux machines
o   seems to be working fine on windows
o   http://dev.processing.org/bugs/show_bug.cgi?id=345
X change how java version is determined on mac
X   http://developer.apple.com/technotes/tn2002/tn2110.html
X   (this tn provides no guidance for macos8/9.. gah)
o little window showing up on macosx when running
X   never able to confirm, probably just old java bug
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1081284410
o flicker happening on osx java 1.4, but not 1.3:
o   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1083184297
o don't let users on < 1.3 load JAVA2D
X set upper bound on framerate so as not to completely hose things?

fixed in 0127
X ARGB problems with createGraphics
o   P3D from createGraphics needs to be marked RGB not ARGB
X   http://dev.processing.org/bugs/show_bug.cgi?id=160
X   http://dev.processing.org/bugs/show_bug.cgi?id=428
X   http://dev.processing.org/bugs/show_bug.cgi?id=482
X   http://dev.processing.org/bugs/show_bug.cgi?id=530
X   http://dev.processing.org/bugs/show_bug.cgi?id=527

reasons to drop 1.1 support (and support 1.3+)
X remove reflection from createFont() constructor/methods in PFont
X   this would make PFont much smaller
X array functions could be done through Arrays.xxx class
X   although some of these may be built in
X sorting could be done through built-in sort() class
X split() function could echo the built in split/regexp setup
X   and add features for regexp
X could introduce use of Timer class in examples
X also use SwingWorker to launch things on other threads
X weirdness of two modes of handling font metrics
X   textFontNativeMetrics gives deprecation error
X   getFontList stuff in PFont causes problems


0127 core
X pixel operations are broken in opengl
X   get(), set(), copy(), blend(), loadPixels, updatePixels() 
X   set(x, y, image) y reversed in openGL 
X   background(image) also broken
X   also textMode(SCREEN)
X   http://dev.processing.org/bugs/show_bug.cgi?id=91
o replaceAll() not supported by 1.1
o   http://dev.processing.org/bugs/show_bug.cgi?id=561
o make version of loadBytes that checks length of the stream first
o   this might not be worth it
o     the number of cases where this works is small (half of url streams) 
o     and who knows if the value returned will be correct
o     (i.e. will it be the uncompressed or compressed size of the data?)

createGraphics() issues
X offscreen buffers fail with texture mapping
X   pixels not being set opaque (only with textures?)
X   http://dev.processing.org/bugs/show_bug.cgi?id=594
X   add note to createGraphics() docs that opacity at edges is binary
X PGraphics problem with fillColor
X   http://dev.processing.org/bugs/show_bug.cgi?id=468

fixed earlier
X add to open() reference problems with mac
X   need to use the 'open' command on osx
X   or need to do this by hand
X   prolly better to do it by default, since on windows we use cmd?
X   check to see if the user has 'open' in there already
X   they can call Runtime.getRuntime().exec() if they want more control

fixed earlier (in 0125) by ewjordan
X accuracy in P3D is very low
X   http://dev.processing.org/bugs/show_bug.cgi?id=95
X textured polys throwing a lot of exceptions (ouch)  
X   http://dev.processing.org/bugs/show_bug.cgi?id=546
X polygons in z axis with nonzero x or y not filling properly
X   http://dev.processing.org/bugs/show_bug.cgi?id=547


0126 core
o rect() after strokeWeight(1) gives wrong coords
X   http://dev.processing.org/bugs/show_bug.cgi?id=535
X   bug in osx java 1.4 vs 1.5
X fix bug in str() methods that take arrays
X   method was not working properly, was using the object reference
X new version of saveStream()
X implement auto-gzip and gunzip
X fix bug where sort() on 0 length array would return null
X   instead, returns an array
X unregisterXxxx() calls to remove methods from libs
X   http://dev.processing.org/bugs/show_bug.cgi?id=312
X   implemented by ewjordan
X sort() on strings ignores case 
X   mention the change in the reference
X added MIN_FLOAT, MAX_FLOAT, MIN_INT, MAX_INT to PConstants
X throw AIOOBE when min() or max() called on zero length array
o fix lerpColor() to take the shortest route around the HSB scale
o loadBytes() doesn't do auto gunzip? but loadStrings and createReader do?
X   this might be a good solution for dealing with the differences
o   with loadBytes(), they can use gzipInput (or loadBytesGZ?)
o   although what does openStream do? (doesn't do auto?)
X   auto-gunzip on createReader()
o   add auto-gunzip to loadStrings()
X   others for auto-gunzip?
X   do the same for createWriter() et al
X disable mipmaps in 0126
X   http://dev.processing.org/bugs/show_bug.cgi?id=610
X add match() method that returns an array of matched items


0125 core
X more blend() modes (the five listed on the thread below?)
X   http://dev.processing.org/bugs/show_bug.cgi?id=132
X   figure out what the modes should actually be: 
X     photoshop: normal, dissolve; darken, multiply, color burn, 
X                linear burn; lighten, screen, color dodge, linear
X                dodge; overlay, soft light, hard light, vivid light, 
X                linear light, pin light, hard mix; difference, 
X                exclusion; hue, saturation, color, luminosity
X     illustrator: normal; darken, multiply, color burn; lighten,
X                  screen, color dodge; overlay, soft light, hard light; 
X                  difference, exclusion; hue, sat, color, luminosity
X     director: Copy, Transparent, Reverse, Ghost, Not copy, 
X               Not transparent, Not reverse, Not ghost, Matte, Mask;
X               (below seems more useful:
X               Blend, Add pin, Add, Subtract pin, Background transparent,
X               Lightest, Subtract, Darkest, Lighten, Darken
X     flash: 
X   DIFFERENCE: C = abs(A-B);
X   MULTIPLY: C = (A * B ) / 255
X   SCREEN: C= 255 - ( (255-A) * (255-B) / 255 )
X   OVERLAY: C = B < 128 ? (2*A*B/255) : 255-2*(255-A)*(255-B)/255
X   HARD_LIGHT: C = A < 128 ? (2*A*B/255) : 255-2*(255-A)*(255-B)/255
X   SOFT_LIGHT: C = B < 128 ? 2*((A>>1)+64)*B/255 : 255-(2*(255-((A>>1)+64))*(255-B)/255)
X jre 1.5.0_10 is still default at java.com.. blech
X   http://dev.processing.org/bugs/show_bug.cgi?id=513
X constant CENTER_RADIUS will be changed to just RADIUS
X   CENTER_RADIUS is being deprecated, not removed
X   remove CENTER_RADIUS from any p5 code (i.e. examples)
X split() inconsistency (emailed casey, will discuss later)
X   make split(String, String) behave like String.split(String)
X   and make current split(String) into splitTokens(String)
X   that means split(String) no longer exists
o   add splitTokens() documentation
o   document new version of split() and regexp
o   should we mention String.split?
X ironed out more of the preproc parseXxxx() functions
X deal with targa upside-down and non-rle encoding for tga images
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1171576234
X change println(array) to be useful 
o   document using join() for old method
X   remove print(array) since it's silly?
X     make sure it's not in the reference
X     [0] "potato", [1] "tomato", [2] "apple" 
X fix filter(GRAY) on an ALPHA image to produce a good RGB image

0125p2
X updatePixels ref is wrong
X   has x/y/w/h version
X   the reference is also cut off
X make ENTER, TAB, etc all into char values (instead of int)
X some way to vertically center text
X   either by setting its middle vertical point
X   or by setting a top/bottom for the rectangle in which it should be placed
o   maybe textAlign(CENTER | VERTICAL_CENTER);
X   or TOP, MIDDLE, and BOTTOM
o   textAlign(CENTER | TOP);
o   could even have textAlign(CENTER) and textAlign(TOP) not replace each other
X   or textAlign(LEFT, MIDDLE); -> this one seems best
X   add reference for new param, and update keywords.txt
X given to andy

0125p3
X PImage.save() method is not working with get()
X   http://dev.processing.org/bugs/show_bug.cgi?id=558
X NullPointerException in Create Font with "All Characters" enabled 
X   http://dev.processing.org/bugs/show_bug.cgi?id=564
X added min() and max() for float and int arrays
X   need to update reference
X   moved around min/max functions
X opengl image memory leaking
X   when creating a new PImage on every frame, slurps a ton of memory
X   workaround is to write the code properly, but suggests something bad
X   http://dev.processing.org/bugs/show_bug.cgi?id=150
X   opengl keeping memory around.. 
X   could this be in vertices that have an image associated
X   or the image buffer used for textures
X   that never gets cleared fully?
X registerSize() was registering as pre() instead
X   http://dev.processing.org/bugs/show_bug.cgi?id=582
X set() doesn't bounds check
X   this shouldn't actually be the case
X   http://dev.processing.org/bugs/show_bug.cgi?id=522
X   get()/set() in PGraphicsJava2D don't bounds check
X   was actually a dumb error in setDataElements()
X set modified to true on endDraw() so that image updates properly
X   http://dev.processing.org/bugs/show_bug.cgi?id=526
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Syntax;action=display;num=1171574044

0125p4 (in progress)
X significant improvement to text and images in opengl
X   now using mipmaps to interpolate large and small images
X   fix bug with mipmapping on radeon 9700
X things not showing up in linux
X   this may be fixed along with bug #341
X   probably threading issue, 98 doesn't have any trouble
X   signs point to Runner or PApplet changes between 98 and 99
X   commenting out applet.setupFrameResizeListener() 
X     in line 307 from Runner.java solved the problem
X   http://dev.processing.org/bugs/show_bug.cgi?id=282
X size of sketch different in setup() and draw() on linux
X   make sure that the sketch isn't being sized based on bad insets
X   problem with resizing the component when the frame wasn't resizable
X   http://dev.processing.org/bugs/show_bug.cgi?id=341
X major rework of the open() command
X   add gnome-open/kde-open for with PApplet.open()
X   add open (-a?) on osx to the open() command
X   make changes in the javadoc and reference
X opengl crashes when depth sorting more than two textured shapes
X   http://dev.processing.org/bugs/show_bug.cgi?id=560

ewjordan stuff (changes checked in)
X rect() changes size as it changes position
X   http://dev.processing.org/bugs/show_bug.cgi?id=95
X strange texture warping in P3D
X   hint(ENABLE_ACCURATE_TEXTURES)
X   http://dev.processing.org/bugs/show_bug.cgi?id=103
X lines skip on 200x200 surface because of fixed point rounding error
X   http://dev.processing.org/bugs/show_bug.cgi?id=267
X   this may be same as 95
X Polygons parallel to z-axis not always filling with nonzero x or y
X   http://dev.processing.org/bugs/show_bug.cgi?id=547


0124 core
X with smooth() turned off, shouldn't be smoothing image on resize
X   but on osx, apple defaults the image smoothing to true
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Programs;action=display;num=1164753510
X   http://developer.apple.com/documentation/Java/Conceptual/JavaPropVMInfoRef/Articles/JavaSystemProperties.html#//apple_ref/doc/uid/TP40001975-DontLinkElementID_6
X background(0, 0, 0, 0) was resetting stroke, smooth, etc.
X make imageImpl() use WritableRaster in an attempt to speed things up
X fix weird situation where fonts used in more than one renderer wouldn't show
X opengl doesn't draw a background for the raw recorder
X change P3D to smooth images nicely (bilinear was disabled)
X ambientLight(r,g,b) was still ambientLight(r,g,r)
X   http://dev.processing.org/bugs/show_bug.cgi?id=465
X fix from dave bollinger for the POSTERIZE filter
X   http://dev.processing.org/bugs/show_bug.cgi?id=399
X fix PImage regression in 0124 and the cache crap
X added a version of trim() that handles an entire array
X removed contract(), one can use expand() and subset() instead
X backgroundColor to cccccc instead of c0c0c0
X loadImage() requires an extension, maybe add a second version?
X   loadImage("blah", "jpg");
X   otherwise people have to use strange hacks to get around it
X   also chop off ? from url detritus
X   also just pass off to default createImage() if no extension available
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Syntax;action=display;num=1165174666
X   http://dev.processing.org/bugs/show_bug.cgi?id=500
X java 1.5.0_10 breaks jogl
X   add error message to p5 about it
X   http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6504460
X   http://www.javagaming.org/forums/index.php?topic=15439.0
X   upgrade to 1.5.0_11 or later:
X     http://java.sun.com/javase/downloads/index_jdk5.jsp
X   or downgrade to 1.5.0_09
X     http://java.sun.com/products/archive/j2se/5.0_09/index.html
X no disk in drive error
X   was this something that changed with the java updates? (1.5_10)
X     doesn't seem to be, still not sure
X   problem was the floppy drive.. gak
X   http://dev.processing.org/bugs/show_bug.cgi?id=478
X copy() sort of broken in JAVA2D
X   example sketch posted with bug report
X   http://dev.processing.org/bugs/show_bug.cgi?id=372
o saveStrings(filename, strings, count) 
o   otherwise the save is kinda wonky
o   or maybe that should just be done with the array fxns

fixed earlier
o sketches often freeze when stop is hit on an HT machine
o   need to test the examples cited on pardis' machine
o   http://dev.processing.org/bugs/show_bug.cgi?id=232
X debug NumberFormat InterruptedException on dual proc machine
X   use notify() instead of interrupt()? 
X   or Thread.currentThread() should be checked first?
o svg loader is on the list for 1.0
o   maybe include as part of PApplet (casey thinks so)
X using gl, lines don't show up in pdf with record (they're ok with p3d)
X   http://dev.processing.org/bugs/show_bug.cgi?id=325
o with network connection
o   download a copy of the source for 0069, get the renderer 
o   svn mv PGraphics2 PGraphicsJava
o version of BApplet that replaces g. with ai. or pdf.


0123 core
X setup() and basic mode apps not working
X   http://dev.processing.org/bugs/show_bug.cgi?id=463


0122 core
X noiseSeed() only works once, before the arrays are created
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1162856262
X make lerpColor honor the current color mode
X   lerpColor(c1, c2, amt, RGB/HSB/???)
o   test this out for a bit
o   though that's awkward b/c colors always RGB
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Suggestions;action=display;num=1160096087
X regression in P3D that prevents point() from drawing
X   problem is with setup_vertex() not adding similar points
X   http://dev.processing.org/bugs/show_bug.cgi?id=444
X if doing openstream on url, says that "the file" is missing or invalid
X   add notes about it being a url

fixed earlier, bug cleaning
X gray background in pdf (using both gl and p3d)
X   http://dev.processing.org/bugs/show_bug.cgi?id=324
X   verified as fixed in 0122


0121 core
X need to document changes to int() (no longer accepts boolean)
X background(0, 0, 0, 0) is the way to really clear everything with zeroes
X   or background(0, 0), but the former is prolly better conceptually
X   how to clear the screen with alpha? background(0, 0, 0, 0)?
o   background(EMPTY) -> background(0x01000000) or something?
X size(), beginRecords(), beginRaw(), createGraphics() 
X   broken for file-based renderers in 0120
X   http://dev.processing.org/bugs/show_bug.cgi?id=434


0120 core
X fixed error when using hint(ENABLE_NATIVE_FONTS) with JAVA2D
X   java.lang.IllegalArgumentException: 
X   null incompatible with Global antialiasing enable key
X fix issue where ambientLight(r, g, b) was instead ambientLight(r, g, r)
X   http://dev.processing.org/bugs/show_bug.cgi?id=412
X createFont() should always use native fonts
X   need to warn that fonts may not be installed
X   recommend that people include the ttf if that's the thing
X   or rather, that this is only recommended for offline use
X fix 3D tessellation problems with curveVertex and bezierVertex
X   actually was z = Float.MAX_VALUE regression
X   http://dev.processing.org/bugs/show_bug.cgi?id=390
X   two examples in sketchbook
X   this has been reported several times
X concave polygons having trouble if points come back to meet 
X   tesselator/triangulator gets confused when points doubled up
X   might need to avoid previous vertex hitting itself
X   http://dev.processing.org/bugs/show_bug.cgi?id=97
X   graphics gems 5 has more about tessellation
X polygons perpendicular to axis not drawing
X   is this a clipping error?
X   probably a triangulation error, because triangles work ok
X   http://dev.processing.org/bugs/show_bug.cgi?id=111
X   problem is that the area of the polygon isn't taking into account z
X lookat is now camera(), but not fixed in the docs
X   add notes to the faq about the camera changes on the changes page
o update run.bat for new quicktime
o   unfortunately this is messy because qtjava sometimes has quotes
o   and qtsystem might be somewhere besides c:\progra~1
X   run.bat has been removed from current releases
X registering font directories in pdf.. is it necessary? 
X   (commented out for 0100)
X   re-added for 0120
o when re-calling size() with opengl, need to remove the old canvas
o   need to check to see if this is working properly now
X passing applet into createGraphics.. problems with re-adding listeners
X   since the listeners are added to the PApplet
X   i think the listeners aren't re-added, but need to double check
X createGraphics() having problems with JAVA2D, and sometimes with P3D
X   http://dev.processing.org/bugs/show_bug.cgi?id=419
X with default renderer, no default background color?
X   only sometimes.. why is this?
X only call defaults() when it's part of a PApplet canvas
X   make sure that defaults() is no longer necessary
X   don't want to hose PGraphics for others
X   both for pdf, and making background transparent images
X PGraphics3D should alloc to all transparent
X   unless it's the main drawing surface (does it know on alloc?)
X   in which case it should be set to opaque
X have createGraphics() create a completely transparent image
X   and also not require defaults() to be called
X make a note in the createFont() reference that 1.5 on OS X has problems
o if calling beginPixels inside another, need to increment a counter
o   otherwise the end will look like it's time to update
o   which may not actually be the case
o   i.e. calling filter() inside begin/end block
X get creating new PGraphics/2/3 working again
X   http://dev.processing.org/bugs/show_bug.cgi?id=92
X   maybe createGraphics(200, 200) to create same as source
X   createGraphics(200, 200, P2D) to create 2D from 3D
X   also, drawing a PGraphics2 doesn't seem to work
X   new PGraphics2 objects are set as RGB, but on loadPixels/updatePixels
X     they're drawn as transparent and don't have their high bits set
X problems between modelX between alpha and beta
X   http://dev.processing.org/bugs/show_bug.cgi?id=386
X   y may be flipped in modelX/Y/Z stuff on opengl
X     is this the same bug? assuming that it is

in previous releases
X when using PGraphics, must call beginFrame() and endFrame()
X   also need to be able to turn off MemoryImageSource on endFrame
X   call defaults() in beginFrame()
X should PGraphics be a base class with implementations and variables?
X   then PGraphics2D and PGraphics3D that subclass it?
X   (or even just PGraphics2 and PGraphics3)
X   also rename PGraphics2 to PGraphicsJava
X   it's goofy to have the naming so different
X tweak to only exit from ESC on keyPressed
o   probably should just make this a hint() instead
X   just documented in reference instead
o metaballs example dies when using box()
o   long string of exceptions, which are also missing their newlines
X grabbing sun.cpu.endian throws a security exception with gl applets
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Contribution_3DOpenGL;action=display;num=1114368123


0119 core
X add saveStream() method
X change to handle Java 1.5 f-up where URLs now give FileNotFoundException
X   http://dev.processing.org/bugs/show_bug.cgi?id=403
X add unlerp() method


0118 core
X replace jogl.jar with a signed version
X fix the export.txt file for the linux release
X fix problem with setting the parent and the PDF renderer


0117 core
X no changes, only to the build scripts


0116 core
X make background() ignore transformations in JAVA2D
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1147010374
o createGraphics to not require defaults()
X   can't do, because an end() function must be called to clear the renderer
X add "hide stop button" arg for PApplet
X beginFrame/endFrame -> beginDraw/endDraw
X add new constant for the DXF renderer
X array utilities on Object[] are worthless.. fix it with reflection?
X   see if reflection will allow expand for all class types
X   expand, append, contract, subset, splice, concat, reverse
X typed version of array functions:
X   append(), shorten(), splice, slice, subset, concat, reverse
X   http://dev.processing.org/bugs/show_bug.cgi?id=115
X fix issue where processing applets would run extremely fast 
X   after having been starved of resources where there framerate dropped
X   http://dev.processing.org/bugs/show_bug.cgi?id=336
X added color/stroke/tint/fill(#FF8800, 30);
X test imageio with images that have alpha (does it work?)
X   nope, doesn't, didn't finish support
X   http://dev.processing.org/bugs/show_bug.cgi?id=350
X openStream() fails with java plug-in because non-null stream returned
X   http://dev.processing.org/bugs/show_bug.cgi?id=359
X update jogl to latest beta 5
X make framerate into frameRate (to match frameCount)
X AIOOBE in P3D during defaults/background/clear
X   PGraphics.clear() problem from workbench and malware stuff
X   had to put synchronized onto draw and size()
X   actually it'll work if it's only on size()
X   the sync on the mac hangs an applet running by itself
X     even though it seems to be ok for a component
X   thread sync problem with allocation
X   http://dev.processing.org/bugs/show_bug.cgi?id=369
X major threading change to use wait()/notifyAll() instead of interrupt/sleep
X noLoop() at end of setup is prolly b/c of interruptedex
X   need to not call Thread.interrupt()
X opengl + noLoop() causes InterruptedException
X   check to see noLoop() breakage is fixed in 92 vs 91
X     checked, not fixed
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1115330568
X   http://dev.processing.org/bugs/show_bug.cgi?id=164
X remove image(filename) and textFont(filename) et al.
X revision 115 may be saving raw files as TIFF format
X   may be a bug specific to java 1.5 (nope)
X   http://dev.processing.org/bugs/show_bug.cgi?id=378
X saveFrame() not working for casey
X   problem with tiff loading in photoshop etc
X check http:// stuff to see if it's a url first on openStream()
X   it's the most harmless, since prolly just a MFUEx
X fix problem where root of exported sketch won't be checked
X   http://dev.processing.org/bugs/show_bug.cgi?id=389
X createFont not working from applets (only with .ttf?)
X   throws a security exception because of the reflection stuff
X   http://dev.processing.org/bugs/show_bug.cgi?id=101
X urls with ampersands don't work with link()
X   Runtime.getRuntime().exec("cmd /c start " + url.replaceAll("&","^&"));
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1149974261
X fix bug where smooth() was shut off after using text
X   (that had the smoothing turned off when used in "Create Font")
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1148362664
X fix dxf to use begin/endDraw instead of begin/endFrame
X   fixes axel's bug with dxf export
X set default frameRate cap at 60
X   otherwise really thrashing the cpu when not necessary
X jpeg loading may be extremely slow (loadBytes?)
X   seems specific to 0115 versus the others
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1158111639
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1154714548
X   http://dev.processing.org/bugs/show_bug.cgi?id=392
X loadImage() problems with png and jpg
X   actually it's an issue with some types of jpeg files
X   http://dev.processing.org/bugs/show_bug.cgi?id=279
X   java.lang.IllegalArgumentException: 
X     Width (-1) and height (-1) cannot be <= 0
X   identical to what happens when the image data is bad
X     for instance, trying to load a tiff image with the jpg loader
X   http://dev.processing.org/bugs/show_bug.cgi?id=305
o blend() mode param should be moved to the front
X   nah, works better with the other format
X   make sure there's parity with the copy() functions
X   remove single pixel blend functions
o   blend() should prolly have its mode be the first param
X   move blend() to blendColor() when applying it to a color
X added lerpColor(), though it needs a new name
X went back to old image i/o (sometimes caused trouble when exported)
X   http://dev.processing.org/bugs/show_bug.cgi?id=376
X change reader() to createReader() for consistency?
X   though printwriter is odd for output..
X   also createWriter() and the rest
o add to docs: save() on a PImage needs savePath() added
X hint(DISABLE_NATIVE_FONTS) to disable the built-in stuff?
X   or maybe this should be hint(ENABLE_NATIVE_FONTS) instead?
X   figure out default behavior for native text fonts
X make sure insideDrawWait() is in other resize() methods
X   begin/end/alloc waits to PGraphicsJava2D, PGraphicsOpenGL, PGraphics3D
X fix bug with fill(#ffcc00, 50); 
X toInt() on a float string needs to work
X   need to check for periods to see if float -> int first
X shape changes
X   remove LINE_STRIP - tell people to use beginShape() with no params
X   remove LINE_LOOP - tell people to use endShape(CLOSE)
o   also remove POLYGON? 
X     may as well remove it
X     though something still needed as an internal constant
X   add endShape(CLOSE) or CLOSED
X when running as an applet, sketchPath won't be set
X   change the error message slightly
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Syntax;action=display;num=1153150923
X use parseFloat instead of toFloat()? to be consistent with javascript
X   also clean up some of the casting silliness

more recent
X only update mouse pos on moved and dragged
X   http://dev.processing.org/bugs/show_bug.cgi?id=170
X   also updates a bug that caused sketches to jump in funny ways

fixed in 0115 / quicktime 7.1
X color values on camera input flipped on intel macs
X   checked in a change for this recommended on qtjava list
X   http://dev.processing.org/bugs/show_bug.cgi?id=313

really old stuff
o get loop, noLoop, redraw, and framerate all working in opengl
o   needs custom animator thread..
o depth() shouldn't be needed for opengl unless actually 3D
o   right now the camera doesn't get set up unless you call depth()
o box and sphere are broken in gl
o what should the update image function be called?


0115 core
X remove debug message from loadPixels()
X remove debug message from PGraphics2.save()
X fix error message with dxf when used with opengl
X if file is missing for reader()
X   return null and println an error rather than failing
X add arraycopy(from, to, count);
X fix fill/stroke issues in bugs db (bug 339)
X saveTIFF, saveHeaderTIFF, saveTGA no longer public/static in PImage
X   this was a mistake to expose the api this way
X more image file i/o in java 1.4
X   add dynamic loading of the jpeg, png, and gif(?) encoder classes
X   http://dev.processing.org/bugs/show_bug.cgi?id=165
X   http://java.sun.com/products/java-media/jai/index.jsp
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Programs;action=display;num=1120174647
X P5 cannot read files generated by saveFrame()
X   need to update docs re: tga
X   and add support for reading its own uncompressed TIFs
X   http://dev.processing.org/bugs/show_bug.cgi?id=260


0114 core
X added createGraphics(width, height, renderer) 
X   no need to use (..., null) anymore
X fix set() for JAVA2D, also fixes background(PImage) for JAVA2D
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Syntax;action=display;num=1145108567
X remove "max texture size" debug message
X flicker with depth sort enabled
X implement basic depth sorting for triangles in P3D and OPENGL
X   add option to sort triangles back to front so alpha works
X   http://dev.processing.org/bugs/show_bug.cgi?id=176
o   at least add it to the faq, or this would be a test case w/ the sorting


0113 core
X fix for open() on macosx submitted by chandler


0112 core
X saveFrame() issues with JAVA2D on osx
X   http://dev.processing.org/bugs/show_bug.cgi?id=189
o implement hint(NO_DEPTH_TEST) for opengl
X   already done hint(DISABLE_DEPTH_TEXT);
X check min/max texture sizes when binding to avoid problems
X   minimum texture size may be 64x64
X   maximum appears to be 2048, on macs maybe 512
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Contribution_3DOpenGL;action=display;num=1137130317
X fix non-bound textures from mangling everything else
X   http://dev.processing.org/bugs/show_bug.cgi?id=322
X   fix enable/disable textures for some objects
X   also a big problem for fonts
X   calling updatePixels() on each frame fixes the issue (sorta)
X images are memory leaking pretty badly 
X   texture re-allocated on each frame
X lighting bug introduced in rev 109
X   spotLight has troubles with an invalid value
X     probably somethign weird about the params (3 vs 4) being sent
X     the first spotLight works fine, it's something with the second
X     (the one that follows the mouse)
X     just something to debug in the example
X   regression from contributed code.. 
X   was using apply() instead of set() in PMatrix inverse copy
X filter() is also broken (not rewinding the intbuffer)
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Contribution_3DOpenGL;action=display;num=1144561113

sound has been removed
o duration as an internal param, not a function
o When a sound is finished playing, 
o   it should return to 0 so it can play again
o Putting sound.loop() in draw() seemed to spawn multiple sounds threads?
o After a sound is paused, it will only play from where it was paused
o   to its end and will not loop again
o The ref in PSound2 says volume accepts vals from 0...1
o   but values larger than one increase the volume.
o SoundEvent // is sound finished?? Can't access now. 
o make java 1.1 version of PSound work properly
o merge PSound and PSound2 via reflection?
o   once debugged, merge these back together and use reflection
o     (unless it's a messy disaster)
o Unsupported control type: Master Gain 
o   what's actually causing this error?
o   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1115467831
o PSound.play() won't play the sound a 2nd time (reopened)
o   http://dev.processing.org/bugs/show_bug.cgi?id=208
o loadSound apparently broken in java 1.5?
o   http://dev.processing.org/bugs/show_bug.cgi?id=285
X need to just remove PSound altogether


0111 core
X need to have a better way of getting/figuring out the endian 
X   use ByteOrder class in jdk 1.4, since issue is local to JOGL
X   security ex when run as an applet
X   also can no longer assume that macosx is big endian
X   http://dev.processing.org/bugs/show_bug.cgi?id=309
o making 'run' synchronized caused a freeze on start w/ opengl
X display() as a function name is problematic
X   causes nothing to show up.. either rename or mark it final
X   http://dev.processing.org/bugs/show_bug.cgi?id=213
X fix for lights throwing a BufferOverflowException


0110 core
X finish updates for osx and opengl
X   http://developer.apple.com/qa/qa2005/qa1295.html
X   find/build universal version of jogl


0109 core
X loadImage("") produces weird error message
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Programs;action=display;num=1136487954
X still having strokeCap() problems
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1134011764
X fixes contributed by willis morse to deal with memory wastefulness
X   should help speed up some types of OPENGL and P3D mode sketches


0108 core
X image(String filename, ...) and textFont(String filename, ...) implemented
X add notes to faq about video fix
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=VideoCamera;action=display;num=1134871549
X look into code that fixes crash on camera.settings()
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=VideoCamera;action=display;num=1139376484
X finish dxf writer that'll work with recordRaw()


0107 core
X no changes, only fixes for "save" bugs


0106 core
X fix bug where more than 512 vertices would cause trouble in P3D and OPENGL


0105 core
X fix some issues with beginRaw and opengl


0104 core
X don't open a window the size of the pdf if in pdf mode
X   need to have some sort of flag in the gfx context that it's visible or not
o   handled inside updateSize()?
X   if it doesn't display to the screen, needs to never show a window
X   basically if the main gfx context isn't viewable, close the window
X   since it may have already been opened at 100x100
X   avoid opening it in the first place?
X added toolkit getFontMetrics() for shape mode fonts to be able to change size
X recordRaw() to a PGraphics3 should send 3D data.
X   but recordRaw() to a PGraphics(2) should send only 2D data.


0103 core
X fix stack overflow problem
X   bug in itext implementation on osx (10.4 only?)
X   http://www.mail-archive.com/itext-questions@lists.sourceforge.net/msg20234.html

in previous releases
X recordFrame() and beginFile()/endFile()
X   how to deal with triangles/lines and triangleCount and lineCount
X     maybe just need a triangleImpl and lineImpl
X     because it's too messy to retain the triangle objects and info
X calling recordFrame() from mousePressed is important
X   dangerous tho because mouse fxn called just before endFrame


0102 core
X no changes, windows-only release to deal with processing.exe


0101 core
X add dispose() call to the shutdown part of PApplet


0100 core
X user.dir wasn't getting set properly
X when graphics can be resized, resize rather than creating new context
X change savePath() et al a great deal, include better docs
X   http://dev.processing.org/bugs/show_bug.cgi?id=199
X   straighten out save() and saveFrame()
o   use File object for when people know what they're doing?
X   same issue occurs with pdf and creating graphics obj

get initial version of pdf working
X get rid of beginFrame/endFrame echo to recorders?
X   that way begin/end can just be where the recorder starts/stops?
X recordRaw is really confusing.. 
X   when to use beginFrame/endFrame
X   is beginRaw/endRaw really needed?
X   seems to be a problem that it's an applet method
X   but then it's called on the g of the applet
X   but then it's the recorderRaw of that g that gets it called.. 
X how to flush when the sketch is done
X   inside dispose method? explicit close?
X   call exit() at end of pdf apps? exit calls dispose on gfx?
X beginRecord() and endRecord() so that record doesn't stop after frame?
X enable PGraphicsPDF for inclusion
X write documentation on images (they suck) and fonts (use ttf)


0099 core
X removed playing() method from PSound
X integrate destroy() method from shiffman as dispose() in PSound2
X ComponentListener is probably what's needed for resize() 
X   make sure that components can be resized properly via size()
X   http://dev.processing.org/bugs/show_bug.cgi?id=209
X   or that it properly responds to a setBounds() call
X calling size() elsewhere in the app doesn't quite work
X   A second call to size almost works. 
X   The buffer apparently gets allocated and saveFrame saves the 
X   new size but drawing appears to be disabled.
X   http://dev.processing.org/bugs/show_bug.cgi?id=243


0098 core
X change recordShapes() to just record() and recordRaw()
X width, height set to zero in static mode
X   http://dev.processing.org/bugs/show_bug.cgi?id=198
X   probably only set when resize() is called, and it's not happening
X   be careful when fixing this, bugs 195/197 were a result:
X   http://dev.processing.org/bugs/show_bug.cgi?id=195
X   http://dev.processing.org/bugs/show_bug.cgi?id=197
X PSound.play() won't play the sound a 2nd time
X   (have to call stop() first)
X   http://dev.processing.org/bugs/show_bug.cgi?id=208


0097 core
X no changes, only export to application stuff


0096 core
X set applet.path to user.dir if init() is reached and it's not set
X add DISABLE_DEPTH_TEST to PGraphics3
X   need to document this somewhere
X   also need to add to PGraphicsGL
X access logs are being spammed because openStream() gets a 404
X   the default should be to check the .jar file
X openStream() doesn't work with subfolders
X   http://dev.processing.org/bugs/show_bug.cgi?id=218
X screwed up movie loading paths (quick fix)
X   http://dev.processing.org/bugs/show_bug.cgi?id=216
X additional cleanup in the Movie class
X make path thing into getPath() or something?
X   sketchPath(), dataPath(), savePath(), createPath()
X applet shouldn't be resizing itself
X   opens at correct size, then makes itself small, then large again
X setup() mode apps often don't open at the correct placement
X   because of their resizing
X check into bug where applet crashing if image not available
X   probably need to add a hint() to make things not halt
X loadBytes() and openStream() et al need to return null
X   loadImage() can too, but print an error to the console
X "not available in P3D" should read "OPENGL" in opengl lib
X keypressed ref: repeating keys
X   also remove "no drawing inside keypressed"
X text block wrap problem with manual break character (\n)
X   http://dev.processing.org/bugs/show_bug.cgi?id=188

draw mode issues
X when run externally without a draw, applets will exit immediately
X   when run internally (no code folder or .java files) will just wait
X shouldn't quit draw mode apps immediately
X   otherwise something gets drawn then the applet exits
X   should instead use exit() when they need to exit
X NullPointerException when no draw()
X   http://dev.processing.org/bugs/show_bug.cgi?id=210
X window closing immediately with library imports
X   http://dev.processing.org/bugs/show_bug.cgi?id=204
X check into loadImage() with jars bug, very frustrating
o   when using loadImage() on a jar, turn off "no cache" option?
X image no load halts the program (rather than returning null)
X note in the reference: png images work with java 1.3+
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=WebsiteBugs;action=display;num=1125968697
X   add bug re: gif image break missing to revisions.txt
X   http://dev.processing.org/bugs/show_bug.cgi?id=217

image pile
X get loadImage() to work properly with data folder
X   should probably use the code from loadStream
X   and the url stuff should be an alternate method altogether
o loadImage() seems to be caching everything from the jar
X   http://java.sun.com/developer/technicalArticles/Media/imagestrategies/index.html
o   make a note of how to disable this
o   http://processing.org/discourse/yabb/YaBB.cgi?board=Programs;action=display;num=1078795681
o bizarre image loading error with c_Rollover.zip
X   couldn't find/replicate this
o   read uncompressed tiff
X   read uncompressed tga files.
X     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1081190619
X     http://processing.org/discourse/yabb/YaBB.cgi?board=Tools;action=display;num=1066742994
o updated png encoder
o   http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1083792994

older stuff, no longer an issue
o don't cache stuff from loadStrings and others
o   mac java vm won't give up old version of file
o   or use setUseCaches(false)
o too many push() will silently stop the applet inside a loop
X allow save(), saveFrame() et al to properly pass in absolute paths
X   (so that it doesn't always save to the applet folder)
X   could require that save() takes an absolute path?
X loadImage must be used inside or after setup
X   either document this and/or provide a better error message
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Programs;action=display;num=1060879468
X expose function to write tiff header in PImage (advanced)
X   helps with writing enormous images
X tag release 93 (francis thinks it's rev 1666)


0095 core
X undo the fix that causes the width/height to be properly set 


0094 core
X fix bug that was causing font sizes not to be set on opengl
X   http://dev.processing.org/bugs/show_bug.cgi?id=174
X apply fix from toxi to make targa files less picky
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1127999630
X "folder" has been renamed to "path" to match savePath().
X added "dataPath" to return the full path to something in the data folder
X savePath should maybe be appletPath or sketchPath
X   because can be used for opening files too 
X   (i.e. if needing a File object)
X width, height set to zero in static mode
X   probably only set when resize() is called, and it's not happening
X g.smooth is always false in opengl
X   http://dev.processing.org/bugs/show_bug.cgi?id=192

o triangleColors are different because they're per-triangle
o   as opposed to per-vertex, because it's based on the facet of the tri
X make vertexCount etc properly accessible in PGraphics3
X   so that people can do things like the dxf renderer
X also have a simple way to hook in triangle leeches to PGraphics3
X   this exists, but needs to be documented, or have accessors


0093 core
X upgrade jogl to a newer rev to fix osx "cannot lock" issues
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1118603714
X   http://192.18.37.44/forums/index.php?topic=1596.msg79680#msg79680
X faster blur code contributed by toxi
X filter(ERODE) and filter(DILATE) contributed by toxi
o textAscent() should probably be g.textAscent instead
o   more like textLeading() etc
X   nope, because it requires grabbing the font metrics and other calculations
X bezierDetail, curveDetail made public
X added textMode(SHAPE) for OPENGL
X error message saying that strokeCap and strokeJoin don't work in P3D
X textMode(SHAPE) throws ex when drawing and font not installed
X fix a bug with filename capitalization error throwing
X add NO_DEPTH_TEST to PGraphics3
X java 1.4 code snuck into PApplet, causing problems on the mac
X   http://dev.processing.org/bugs/show_bug.cgi?id=146
X prevent PGraphics.save() from inserting a file prefix
X   so that people can use absolute paths
X   or add a version that takes a file object

nixed or fixed in previous releases
X textMode(SCREEN) having issues on Mac OS X
X   seem to be problems with updatePixels() on the mac
X   appears to run asynchronously
X move zbuffer et al into PGraphics so that people don't have to cast to P3
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Contribution_3DOpenGL;action=display;num=1116978834
o noLoop() is behaving strangely
o   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1116002432;start=0


0092 core
X rle-compressed tga save() method added by toxi
X   also version that only saves RGB instead of ARGB
X proper/consistent api to access matrices in PGraphics/PGraphics3
X   first use loadMatrix(), then m00, m01 etc
X   find the post on the board and make a note of this
X proper api for access to Graphics2D object in PGraphics2
X   just add the current "g2" thing to the faq
X   and make a note of it on the suggestions board
X vars like cameraX etc need to be in PGraphics
X   otherwise g.xxxx won't work
X   how far should this go? vertices etc?
X   vertices not included because switching to triangleImpl and lineImpl
X fix for copy() in java2d to make things a little speedier
X make PApplet.main() for java 1.3 friendly (Color class constants)
X remove call to background() in PGraphics2
o change PGraphics to PGraphics2 
o   or not, because PGraphics has all the base stuff for 3D
o   change PGraphics2 to PGraphicsJava or PGraphicsJava2D
o   maybe wait until the new shape stuff is done?
X move font placement stuff back into PGraphics?
X   figure out how to get regular + java fonts working
X   use that do drive how the api is set up
X optimize fonts by using native fonts in PGraphics2
X   especially textMode(SCREEN) which is disastrously slow
X   in java2d, can quickly blit the image itself
X   this way, can isolate it for gl too, which will use glBitmap
X   danger of this setup is that it may run much nicer for the author
X     i.e. with the font installed, and then super slow for their users
X add "smooth" as a field inside the font file
X   and when smooth field is set, make sure JAVA2D enables smoothing
X   since otherwise smooth() has to be called for the whole g2
X rob saunders contributed a fix for a bug in PImage.copy()
X   the wrong boundaries were being copied in the code
X fix bug where noLoop() was waiting 10 secs to call exit()
X add ability to draw text from the current text position


0091 core
X change to synchronization to hopefully fix some update issues
X curveVertex() problem in P2D when > 128 points fixed
_   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1115856359;start=0
X for present mode, need to set a default display 
X   currently crashes if only --present is specified w/o --display
o make the 1.4 code in PApplet load via reflection
X   doesn't appear necessary with 1.3 applets
o   or is some of the stuff usable in 1.3 but not all?
o     ie. the device config classes exist but not the set full screen method
X currently some bugs in the main() because it's not sizing applets 
X   if running in present mode it works ok
X   but that also needs its display set.. argh
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1115834600;start=0
X add exit() function to actually explicitly quit
X   scripts will just require that people include exit at the end
X esc should kill fullscreen mode (actually now it just quits anything)
X   can a key handler be added to the window? not really
X   add an escape listener to the applet tho.. but will it work with gl?
X   how can this be shut off for presentations?
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1114027594;start=0
X present mode wasn't reading the stop button color
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Suggestions;action=display;num=1116166897;start=0
X cleaned up the createFont() functions a little
X java 1.3 required message isn't clickable
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1117552076


0090 core
X added arraycopy() function that calls System.arraycopy()
X   also the useful shortcut fxn


0089 core
X no changes since 88


0088 core
X createFont crashes on verdana (win2k)
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1115258282;start=0
X made ceil(), floor(), and round() return ints instead of floats
X fix for PSound: Unsupported control type: Master Gain 
X   just shuts off the volume control
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1115467831;start=0

cleared out / completed in previous releases
X typed version of expand() and contract()
o fishwick bug with text() and shapes
o   ellipses no longer completed when g.dimensions = 2 or 3,
o   or not even drawn.. what a mess.
X go through and figure out what stuff to make public
o depth testing of lines vs text is problematic
o   probably need to patch in an older version of the line code
o   use depth()/noDepth() to handle depth test
X on exceptions, use die to just kill the applet
X make the file i/o stuff work more cleanly
X   if people want to use their own file i/o they can do that too
o this could also be contributing to the hanging bug
X static applets need to be able to resize themselves on 'play'
X figure out what to do with static apps exported as application
X   needs to just hang there
o scripts (w/ no graphics) will need to call exit() explicitly
o   actually.. just override the default draw() to say exit()
X may need a fileOutput() and fileInput() function
X   to take care of exception handling
o or maybe scripts are just handled with a different method? (yech)
o   or maybe setup() can actually throw and Exception?
o   but that's inserted by the parser, and hidden from the user?
o implement size(0, 0) -> just doesn't bother doing a frame.show();
o   too abstract, just have draw() call exit by default
o   so if nothing inside draw, just quits
o   make properly exit after things are finished
o still some weirdness with thread flickering on the mac
o   and frenetic display updates on the pc
o move really general things out of PConstants (X, Y, Z..) ?
X add something to PApplet to have constants for the platform
o   needed for error messages (don't talk about winvdig on mac)
X   and also useful for programs
X bring screen space and font size settings back in to PGraphics
X   causing too much trouble to be stuck down in PFont


0087 core

fixed in previous releases
X The PushPop example in Transformations is not working
X   with lights() callled
X The transparency of the Rotate3D example in Translformations
X   is not as expected
X lighting totally sucks (both PGraphics3 and PGraphicsGL)
X bring in materials for opengl as well?
X   don't include a class, just make it similar to the light functions
X sphere() and box() should set normals and take textures
X background color seems to be wrong?
X   check this once lighting actually works
X printarr() of null array crashes without an error
X   actually, errors from many crashes not coming through on the mac?


0086 core
X java 1.4 getButton() was inside the mouse handler
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1114147314;start=3
X color() doesn't work properly because g might be null?
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1114518309;start=0
X textMode(RIGHT) etc causing trouble.. tell ppl to use textAlign()
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Syntax;action=display;num=1114219121;start=4
X saveFrame with a filename still causing trouble:
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1114097641;start=0
X fov should be in radians
X present mode not working on macosx 10.2?
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1114381302;start=0
X ex on endshape if no calls to vertex
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1113940972
X is camera backwards, or staying fixed and moving the scene?
X   camera() is broken, should be ok to call it at beinning of loop
X   end of lookat might be backwards
X   or endCamera might be swapping camera and cameraInv
X     beginCamera also grabs it backwards


0085 core
X camera() was missing from PGraphics
X some tweaks to openStream() for loading images and less errors
X basic clipping in P3D from simon


0084 core
X fixed create font / incremented font file version number
X simon lighting fixes
X added simon's lighting docs to lights() fxn in javadoc
X set default stroke cap as ROUND
X   otherwise smooth() makes points disappear
X hack for text with a z coordinate


0083 core
X fix double key events
X fix mrj.version security error on the pc
X set() fixes for PGraphics2 and setImpl inside PGraphics
X remove angleMode (also from PMatrix classes)
X remove/rename postSetup() stuff from PGraphics/PApplet
X camera(), perspective(), ortho()
X matrix set by the camera on each beginFrame
X push/pop are now pushMatrix/popMatrix
o get PGraphics.java engine working again

lighting stuff
X make fill() cover ambient and diffuse
X   provide separate call for ambient to shut it off
o why does diffuse just mirror fill()?
o   seems to cover just diffuse, not ambient_and_diffuse like fill
o   maybe fill() should set diffuse, and sep call to ambient() sets ambient?
X   removed it
X move dot() to the bottom w/ the other math

already done
X remove PMethods as actual class, use recordFrame(PGraphics)
X   size(200, 200, "processing.illustrator.PGraphicsAI");

api questions
o image(String name) and textFont(String name)
o   do we change to font(arial, 12) ?
X remove angleMode() ?
X be consistent about getXxx() methods
X   just use the variable names.. don't do overkill on fillR et al
X   or just what functions are actually made public
X   is fillRi needed? it's pretty goofy..
X how to handle full screen (opengl especially) or no screen (for scripts)

tweaking up simong light code
o what's up with resetLights?
o add PLight object to avoid method overflow
o preApplyMatrix, invApplyMatrix? 
o   applyMatrixPre and applyMatrixIn
o   rotateXInv is ugly.. 
o   irotateX?, papplyMatrix?

wednesday evening
X expose api to launch files, folders, URLs
X   use with/in place of link()
X   call it open()
X what to call firstMouse
X implement rightMouse?
X   yes, mouseButton = LEFT, CENTER, or RIGHT
X error when running on 1.1... 
X   You need to install Java 1.3 or later to view this content.
X   Click here to visit java.com and install.
X make inverseCamera into cameraInv
X fix messages referring to depth()
X   route all of them through a single function rather than current waste
X fix bezierVertex() in P3D for newer api

wednesday late
X track loadImage() with filenames that are inconsistent
X   really a problem with the ves61r kids
X   i.e. mixed case filename in sketch is different in windows
X   but when uploaded to a unix server causes a serious problem
X   use canonicalPath to flag possible problems
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1096508877;start=5
o fix shapes in P3D (line loop, polygons, etc)
o should we include a from and to for the directional light?
X   no, cuz it doesn't do much really.. 
X   fromX-toX etc is all that's different

thursday day
X set modelview to camera on endCamera
X add ortho() and perspective() to PGraphics.java

thursday evening
o textMode(ALIGN_LEFT) etc, should make sure that left/center/right not used
X   though since have to change to LEFT, should be easy to switch

friday night
o should toInt('5') return the ascii or the char? 
X   since (int) '5' returns the ascii, that's what it does
X   made a note in the PApplet reference

text api
X textMode ALIGN_CENTER _LEFT _RIGHT -> CENTER, LEFT, RIGHT ? 
X use built-in font if available? yes
o text() with \n is semi-broken
X does the font or PApplet control the size? (the font, ala java)
X without setting the font, SCREEN_SPACE comes out weird
o move SCREEN_SPACE into ScreenFont() class?
o   probably not, casey thinks screen space text is prolly more useful
o   that way can clear up some of the general confusion in the code
X textFont with a named font can use the renderer/os font
X   illustrator api can get the ps name from the java font name
X     since it's associated with the font file.. wee!
X   for postscript, can grab the real font
o   altho problem here is that really the fonts just need a name
o      since needs to render to screen as well
o      font has to be installed to get psname
X      fine because why would you embed a ps font that you don't have?
o need to resolve SCREEN_SPACE vs OBJECT_SPACE
o   can this be auto-detected with noDepth()? 
o   how does rotated text work?
o     PFont.rotate(180) rotate(PI)
o     or can this be detected from the matrix?
X don't use pixels to do screen space text inside PFont
X   add a function in PGraphics for direct pixel image impl 
X store the font name in the vlw font file (at the end)
o   could include multiple names for multi platforms
X get text impl stuff working properly
o look into fixing the texture mapping to not squash fonts
o   NEW_GRAPHICS totally smashes everything

friday postgame
X implement createFont()
X   with a .ttf does a create font internally (1.3+ only)
X     although the images aren't populated 
X     until a P2D/P3D/OPENGL tries to draw them, which triggers it
X     but if PGraphics2, just uses the built-in font
X   also works for font names and just creating them
X     if font name doesn't end with otf or ttf, then tries to create it
X change objectX/Y/Z to modelX/Y/Z
X PFont.list() to return string list of all the available fonts
X   probably not a mode of use that we really want to encourage
X   actually important because the whole graphicsdevice crap is silly
X     and we need a 1.1 versus 1.3/1.4 version
X implement printarr() as println() ?
X   actually deal with all the array types.. oy
X should nf() handle commas as well?
X   just add a basic nfc() version for ints and floats
o   yes, and add nf(int what) so that non-padded version works
o   but don't put commas into the zero-padded version
o   make nf/nfs/nfp not so weird
o   nf(PLUS, ...) nf(PAD, ...) nfc(PLUS, ...)
X unhex was broken for numbers bigger than 2^31

saturday late afternoon
X fix bug with openStream() and upper/lowercase stuff
X   do a better job of handling any kind of URLs in openStream()

sunday morning
X incorporate simon's new lighting code


0082 core
X make jdkVersion, jdkVersionName, platform, platformName variables
X additional note about screen sizes and displays
X sto instead of stop in present mode
X appears that opengl libraries weren't correctly added in 81?
X requestFocus() now called on gl canvas
X basic lights now work by default


0081 core
X background(PImage) now works in opengl
X when running externally, applets don't always get placed properly
X   if size is never set, then doesn't always layout
X   problem is in gl and in core, and is inconsistent
X   move more logic for layout into PApplet.. maybe a static method?
X   this way can avoid duplicating / breaking things
o what is the stroked version of a sphere? a circle?
X write list of params that can be passed to PApplet
o document in the code a note about how size() et al place themselves
X saveFrame was double-adding the save path because of save() changes

size(200, 200, P3D) - createGraphics and placement issues 
X make pappletgl work back inside papplet
X   and then size(300, 300, DEPTH) etc
X   get rid of opengl renderer menu
o   otherwise hint() to use the p5 renderer instead of java2d
X applet placement is screwy
X how to force PGraphics() instead of PGraphics2()
X   size(300, 200, P2D);
X size() doing a setBounds() is really bad
X   because it means things can't be embedded properly
o applets on osx (and windows) sometimes show up 20 pixels off the top 
X how to shut off rendering to screen when illustrator in use? 
X   need size(30000, 20000) for illustrator, problem in papplet
X   size(30000, 20000, ILLUSTRATOR)
X make Graphics2 et al load dynamically using reflection
X   can this be done with g2 and if exception just falls back to g1?
X   this way people can remove g1 by hand
o size() that changes renderer will throw nasty exception in draw()
X   or maybe that's ok? document that no changing renderers?
X take a look to see what needs to happen to get PAppletGL merged in
X   i.e. can i just extend GLCanvas?

present mode
o call present() from inside the code?
o   that if applet is 500x500, centers on a 800x600 window
X   no, that's nasty... use --present to launch in present window
X though how do you get the screen size? 
X   screen.width and screen.height? - yes
X write java 1.4 code for full screen version of PApplet
X   this might be used for presentation mode
X proper full screen code for present mode
X   why do mouse motion events go away in full screen mode
X   or with a Window object
X use screen manager to run present mode properly
X   set both versions to require java 1.4
X   change the Info.plist inside macosx
X   and add something to PdeBase to make sure that it's in 1.4
X running present mode with a bug in the program hoses things
X   make sure the program compiles before starting present mode


0080 core
X PApplet.saveFrame() is saving to sketch folder, PApplet.save() is not
X   PApplet.save() will save to the applet folder, 
X   but PImage.save() or PGraphics.save() will save only to the current
X   working directory, usually the Processing folder.
X removed static version of mask() from PImage
X   no more PImage.mask(theImage, maskImage)
X   just use theImage.mask(maskImage)
X PImage.filter() 
X   maybe use quasimondo's gaussian blur code?
X     http://incubator.quasimondo.com/processing/gaussian_blur_1.php
o   filter() on subsections? yes, in keeping with rest of api
X   no, in keeping with getting shit done
X   BLUR - write simple blur
X     how does photoshop handle this?
X   BLUR - add gaussian blur
X   email re: credit/attribution and descrepancy between algos
X forgot to mention the line hack to get points working in 78
X implemented PGraphicsGL.set(x, y, argb)
X implement PGraphicsGL.set(x, y, PImage)
X blend, copy, filter all implemented for opengl
X copy(Pimage, x, y) has become set(x, y, PImage)
X textMode -> textAlign
X   ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT -> LEFT, CENTER, RIGHT
X textSpace -> textMode
X   NORMAL_SPACE -> NORMALIZED, OBJECT_SPACE -> OBJECT
X text in a box is broken (at least for PGraphics2)
o   check to see if it's a rounding error with width()
o   get text rect working again (seems to be in infinite loop)
X   nope, was just that the space width wasn't being scaled up properly
X clean up the javadoc so no more errors
X change mbox to PFont.size? 
o   make width() return values based on natural size?
X   not a great idea.. plus java2d uses 1 pixel font for things
X email simon re: lighting api
X   things are actually more on track than expected
X camera is swapping colors in gl (on mac?)
X   in fact, all textures on mac were swapping colors
X   test this on windows to see if fixed
X sphere x,y,z,r or box w,h,d.. need to make them consistent
X   goodbye sphere(x, y, z, r)
o should available() be waiting() or something like that instead?
o go through and see what functions (no pixel ops?) frame recorders should have
X   decided instead to use recordFrame(PGraphics)
o remove SCREEN_SPACE altogether? 
X   can't do this for now

implemented in 79
X make sure arc goes in the right direction that we want it to
X   (make sure that PGraphics3 goes the same direction)


0079 core
X no changes to core in this release


0078 core
X text fixes
X   lines were getting horizontally mashed together
X   lines also getting vertically smashed together
X   make a note of the change to font.width()
X backwards rects and backwards ellipses weren't properly drawn
X   code now compensates for negative widths or swapped x1/x2
X what to do about backwards images
X imageMode() wasn't being set properly
X fix noLoop() not properly running
X   If noLoop() is called in setup(), nothing is drawn to the screen.
X also fix redraw() to include interrupt() again
X loadPixels throwing NPEs
X fixes to SCREEN_SPACE text not being sized properly
X loadPixels()/updatePixels() on screen space text (ouch)
X get SCREEN_SPACE text working again
X patch in newer jogl.. too many BSODs
X saveFrame seems to be broken
X   fixed for PGraphics2
X   fixed for PGraphicsGL
X   also implemented loadPixels/updatePixels for gl
X fix tint() with color and alpha for PGraphics2
X alpha() colors are inverted (white is opaque.. doesn't make sense)
X   should we swap this around? no - this is how photoshop works
X fix arc
X get() is back
X set camera.modified so that it draws properly
X it's annoying not having a copy() function inside PImage
X   formerly get() with no params
o   clone throws an exception
o   PImage constructor that takes itself?
o   PImage copy = new PImage(another);
X got rid of CONCAVE_POLYGON and CONVEX_POLYGON
X hack for points to work in opengl, but still not working broadly
X work on filter() functions
X   POSTERIZE - find simple code that does it?
X     there must be a straightforward optimized version of it
o   EDGES - find edges in casey's example is differen than photoshop
o     which version do people want with their stuff
X     edges filter removed
X several fixes to Movie and Camera to work with the new gfx model
X PImage.get(x, y, w, h) had a bug when things went off the edge
X set defaults for strokeCap and strokeJoin
X get() and gl images were broken for screen sizes less than full size
X fix arcs, were badly broken between java2d and pgraphics
X look at curve functions more closely
X   should we switch to curveVertex(1,2,3) (ala curveto)
X   because some confusion with mixing types of curves
o   make sure we don't want curveVertices(1,2,3,u,v)
o   also make test cases so that java2d and java11 behave the same
X implement PGraphics2.curveVertex()
X updatePixels() not setting PApplet.pixels
X   make loadPixels in PGraphics ignored, and put it in PApplet
X made loadStrings() and openStream(File) static again
X test loadPixels()/updatePixels()/saveFrame() on the pc
X   better, just assume that they need the endian swap
X fixed draw mode apps for opengl
X   (gl was missing a beginFrame)
X pmouseX, pmouseY are not working in OpenGL mode
X   (as they are working in Processing mode)

o screenX/Y aren't properly working for 2D points against a 3D matrix
o   (ryan alexander rounding bug)
o   Just to clarify, it works completely correctly with rounding
o   screenX/Y and also using the 3 arg version of translate - 
o   ie translate(hw,hh,0) instead of just translate(hw,hh). 
X   no longer an issue because moving to 2D and 3D modes
o PImage: remove the static versions of manipulators?
o   probably not, because they're inherited by PApplet
o   i.e. mask(image, themask); 
X   no PImage needed b/c PGraphics is a PImage
o colorMode(GRAY) to avoid stroke(0) causing trouble? 
o   or maybe get rid of stroke(0)? hrm


0077 core
X bring back pmouseX/Y using a tricky method of storing separate
X   values for inside draw() versus inside the event handler versions
X   debug handling, and make firstMouse public
X explicitly state depth()/nodepth()
X   don't allocate zbuffer & stencil until depth() is called
X arc with stroke only draws the arc shape itself
X   may need a 'wedge' function to draw a stroke around the whole thing
X only allocate stencil and zbuffer on first call to depth()
X   this will require changes to PTriangle and PLine inside their loops
X try running javadoc
X die() may need to throw a RuntimeException
o call filter() to convert RGB/RGBA/ALPHA/GRAY
o   cuz the cache is gonna be bad going rgb to rgba
X   don't bother, people can re-create the image or set cache null
X fix font coloring in PGraphics2
X fix tint() for PGraphics2
X get text working again
X   partially the problem is with ALPHA images
X     how should they be stored internally
X   also colored text, requires tint() to work properly
X move textMode and textSpace back out of PFont
X   use die() to fail in font situations
X   can't, just use a RuntimeException

covered in previous
X before graphics engine change, attach jogl stuff
X   need to try jogl to make sure no further changes
X   and the illustrator stuff
o massive graphics engine changes
o   move to new graphics engine
o     test with rgb cube, shut off smoothing
o   make sure line artifacts are because of smoothing
o   implement 2x oversampling for anti-aliasing
o renderers can plug in:
o   at direct api level
o     taking over all color() functions and vertex collection
o   at endShape() level
o     where vertices are collected by core and blit on endShape()
o     (takes polygons and lines)
o   at post tesselation level
o     takes only line segments and triangles to blit (dxf writer)
o api for file-based renderers
o   need to work this out since it will affect other api changes
o   size(0, 0) and then ai.size(10000, 20000)
o     size 0 is code for internal to not show any window
o   saveFrame(PRenderer) or saveFrame("name", PRenderer)
o   saveFrame gets called at the beginning of loop()
o     or is just a message to save the next frame (problem for anim)
X vertices max out at 512.. make it grow
X add gzipInput and gzipOutput
X light(x, y, z, c1, c2, c3, TYPE)
X   also BLight with same constructor, and on() and off() fxn
X make sure applet is stopping in draw mode
X loadImage() is broken on some machines
X   hacked for a fix in 72, but need to better coordinate with openStream()

postscript
X pushing all intelligence down into class that implements PMethods
o keep hints about type of geometry used to reconstruct
o   no special class, just uses public vars from PGraphics
o how to hook into curve rendering so that curve segments are drawn
o   maybe lines are rendered and sorted, 
o   but they point to an original version of the curve geometry 
o   that can be re-rendered 
o   also integrate catmull-rom -> bezier inverse matrices
o   even with the general catmull-rom, to render via ai beziers

api changes
X removed circle.. it's dumb when ellipse() is in there
X   (it's not like we have square() in the api)
X arcMode is gone.. just uses ellipseMode()
X save tga and tif methods are static and public
X imageMode(CORNER) and CORNERS are the only usable versions
X alpha(PImage) is now called mask() instead
X   already have an alpha() function that gets alpha bits
X on start, mouseX is 0.. how to avoid?
X   use firstMouse variable.. figure out naming
X get frame recording working
X   not tested, but at least it's there

image stuff
o could also do PImage2, which would need a getPixels() before messing w/ it
o   bad idea, distinction not clear
o even in java 1.1, could use regular java.awt.Image and require getPixels()
o   -> 1.1 wouldn't help anything, because needs pixels to render, oops
X the updatePixels() in PGraphics has to be overridden (from PImage)
X   to make itself actually update on-screen
X   actually, should be no different than the check_image function
X PGraphics2 and PGraphicsGL will need loadPixels() to be called
X   in order to read pixels from the buffer
X loadPixels() and updatePixels() prolly should be shut off in opengl
X   make people use get() instead to grab sub-images
X   PGraphicsGL.copy() needs to be overridden.. use glDrawBitmap
o loadImage() needs to handle 1.1 vs 1.3 loading
o   set image.format to be BUFFERED? no.. just use RGBA always
o have a flag to always use the cache, i.e. with BufferedImage
o   turn that off when someone modifies it (nope, no need to)
X PImage.getPixels(), updatePixels(), updatePixels(x, y, w, h), 
o   PImage.setPixels(int another[]);
X imageMode(CENTER) is weird for copy() and updatePixels()
X   perhaps copy() and get() ignore imageMode and use xywh or x1y1x2y2?
X   or disallow imageMode(CENTER) altogether?
o in java 1.3, getPixels() can call getRGB() via reflection
o   cache.getClass().getName().equals("BufferedImage")
X readPixels/writePixels?
X   has to happen, since this is so fundamental to gl as well
X loadImage in 1.3 leaves pixels[] null (not in 1.1)
X   1.3 plus gl is a problem, since conflicting caches
X   gl has no need for a bufferedimage tho
X     so maybe checks to see if the cache is a BufferedImage
X     if it is, calls getPixels to set the int array
X     then replaces cache with glimageache
X     pappletgl loadimage could take care of this instead
X       calls super.loadImage(), if cache != null, proceed..
X       this is prolly a mess
X PImage.getPixels() and PImage.getPixels(x, y, w, h) ->
X   (the xywh version still allocates the entire array, but only updates those)
X   only needed for java2d
X   not (necessarily) needed when loading images,
X     but definitely needed when setting pixels on PGraphics
X PImage.updatePixels() and PImage.updatePixels(x, y, w, h)
X   (this is actually just setModified)
X   in opengl, marks all or some as modified
X     so next time it's drawn, the texture is updated PGraphicsGL.image()
X   in java2d, updates the BufferedImage on next draw
X can't use regular getPixels() on PGraphics, because its image isn't 'cache'
X   also, the cache may be used to draw the whole surface as a gl texture (?)
X   not a problem for the main PGraphics, but for any others created to draw on

opengl
X make light() functions actually do something in PGraphicsGL
X box() and sphere() working again
X make opengl work in draw mode
X   set initial size using --size=
X color channels seem to be swapped on windows in image example
X   check on the mac to see what it looks like

X default to single byte input from serial port
X   and add serial.setBuffer() for message length as alternative
X   or serial.setDelimiter() to fire message on delim
X     named it bufferUntil();


0076 core
X no changes, only launcher issues


0075
X textureMode(NORMAL_SPACE)  screws up the image() command
X   image() appears to require IMAGE_SPACE to function properly. 
X added focusGained() and focusLost()
X lots of changes to internal naming of vars
X screenX(x, y) and screenY(x, y) added for noDepth()
X add TRIANGLE_FAN
X eyeX, eyeY etc have been renamed cameraX/Y/Z, and cameraNear/Far
X modify targa and tiff writing routines to break into header writing
X   writeTIFF, writeHeaderTIFF, writeTGA, writeHeaderTGA
X MAJOR CHANGE: RGBA becomes ARGB for accuracy
o uv coords > 1 shouldn't clamp, they should just repeat ala opengl
o   actually i think opengl has a setting for it
o remove need to use depth() at the beginning
X   need only be set once
X pmouseX is broken again
X   remove pmouseX/Y altogether
X   maintain things a bit different
o   email the beta@ list to see how people are using pmouseX
X changed PMovie.length to PMovie.duration
X move around/simplify loadImage() inside PApplet 
X working to add more die() statements inside PApplet
o can ALPHA fonts work using the other replace modes?

fixed in previous releases
X text stuff
X   text() with alignment doesn't work for multiple lines
X   don't change the size of a font when in screen space mode
X   patch rotated text (from visualclusto) into bfont
X   what sort of api? textSpace(ROTATED) ?
X   rotated text has a bug for when it goes offscreen

opengl
X why is the thing hanging until 'stop' is hit?
X   what happens when stop is hit that sets it free?
X   (at what point does it start working properly?)
X cache needs to also make things a power of 2
X   if images are already a power of 2, then needn't re-alloc
X cacheIndex needs to be set to -1 when the image is modified
X   or maybe have a modified() function?
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
X make play button un-highlight with opengl
X   also make window move messages work properly
X   very necessary, since opens window at 100x100
X   problem was the threading issues
X bring back renderer menu
X   reading/saving pref for opengl renderer
X remove cameraMode(PERSPECTIVE) on each frame
X   why is the first one failing?
X still threading issues with running opengl 
X   threading really horks up dual processor machine.. 
X   first run hangs until quit 
X   though doesn't seem to replicate when p5 is restarted
X make sure background() gets called at least once with opengl
X   otherwise screen never actually updates
X beginFrame() around setup()
X   draw mode stuff happens inside setup.. 
o   or maybe need to get better at size() inside of draw() ? 
X   make this consistent with the regular PApplet
X     otherwise things are going to be weird/difficult for debugging


0074 core
X removed zbuffer precision hack in PLine to improve z ordering
X no longer set g.dimensions = 3 when using vertex(x, y, 0)


0073 core
X tweak to fonts to use TEXT_ANTIALIAS because of macosx @#$(*&
X loadImage() is broken on some machines
X   hacked for a fix in 72, but need to better coordinate with openStream()


0072 core
X make m00, m01 etc public
X hack to make loadImage() work 
X   cache settings are ignored, may be slow as hell
X make hints[] no longer static
X   they weren't properly resetting


0071 core
X properly swap alpha values when lines need to be rendered backwards
X make cursor() commands public
X ltext and rtext for screen space stuff
X ltext is broken when it goes y < 0 or y > height
X ltext & rtext completely working
X make sure font creator is making fonts properly fixed width
X   probably not using java charwidth for the char's width
X   probably wasn't using textFont() properly
X now that it's actually a key, should it be a char? (what's keyChar?)
X   that way println(c) would work a little better..
X libraryCalls() not properly working for pre, post, or draw()
o image(myg, x, y) doesn't work but image(myg, x, y, w, h) does
o   (image kind prolly not set right and so image() gets pissy)
o   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1091798655

text fixes
X make text rect use rectMode for placement
X if a word (no spaces) is too long to fit, insert a 'space'
X move left/center/right aligning into the font class
X   otherwise text with alignment has problems with returns
X could PFont2 be done entirely with reflection?
X   that way other font types can properly extend PFont
o font char widths from orator were not fixed width
o   may just need to regenerate. if not, widths may be set wrong.


0070 core
o check ordering of split() in java vs perl for regexp
X don't include empty chars in font builder
X   .vlw font files are enormous with full charset
X   check to see if the character exists before adding it to the font
X fixed (unreported) problem with char lookup code
o split() with multiple args (i think this is completed)
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1078985667
X trim() not chop().. whups
X random(5, 5) -> return 5, random(6, 4) return error
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1083275855;start=0
X use random.nextFloat() because it's faster
X make grayscale image in p5
X   could be used with alpha() to properly set alpha values
X   made into filter(GRAYSCALE) and filter(BLACK_WHITE) functions
X make g.depthTest settable as a hint
X   http://processing.org/discourse/yabb/YaBB.cgi?board=BugFixes;action=display;num=1096303102;start=0
X #ifdef to remove client and server code as well
X need to resolve issues between rendering screen/file
X   illustrator-based rendering needs to work for ars projects
X   screen may be 400x400 pixels, but file be 36x36"
X launcher.cpp broke serial.. see versions in processing.notcvs
X rewrite bagel code.. 
X   for this release, because it will break things along with the lib stuff
X   switch to PImage, PApplet, etc
o bug in BImage.smooth() when resizing an image
o   http://processing.org/discourse/yabb/YaBB.cgi?board=BugFixes;action=display;num=1096303158;start=0
X shut off the automatic gunzipping of streams, keep for fonts
X fix for duplicated points in polygons that foiled the tesselator
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1077819175
X cleaned up texture() code between NEW/OLD graphics
X   not quite so much duplicated in cases etc.
X lines: vertex coloring bug with my swap hack
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1085348942
X   last vertex on LINE_LOOP fades out
X   http://processing.org/discourse/yabb/YaBB.cgi?board=BugFixes;action=display;num=1096303406;start=0
X include values in PConstants for additional blend modes:
X   DIFFERENCE, MULTIPLY, SCREEN, OVERLAY, HARD_LIGHT, SOFT_LIGHT
X include a lerp()? is there one in flash?
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Programs;action=display;num=1083289030
X   should it be called lerp or mix?
X acos, asin, atan, log, exp, ceil/floor, pow, mag(x,y,z)
X color issues
X   doesn't work when outside a function:
X     color bg_color = color(255,0,0);
X   colorMode broken for red() green() etc
X     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1068664455
X   add color(gray) and color(gray, alpha)
X     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1089898189;start=0
X     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1090133107
o update() mode needs to be hacked in (?)
X make 'online' a boolean
X pass in args[] from main
X angleMode(DEGREES) and angleMode(RADIANS)
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1075507381;start=0
X fixes to line and curve code
X api to properly sense when applet has focus
X   add a 'focused' variable to the applet
X   code now in zipdecode, maybe just list this as a standard thing?
X do applets know when they're stopped? stop? dispose?
X   would be good to set a param in p5 so that the thread dies
X   if people have other threads they've spawned, impossible to stop

cleaning up
X make bagel more usable as standalone
X   breakout BGraphics (have its own BImage)
o   breakout BApplet into BComponent ? (fix out-of-bounds mouse - doesn't)
o opengl export / rendering mode
o   currently implemented, but somewhat broken
o   finish this once all the line code is done
o make possible to use buzz.pl to create versions w/ stuff removed
o build gl4java for java 1.4
o separating of BGraphics and BApplet
o change copyrights on the files again (to match ?)
X loadStrings has a problem with URLs and a code folder
o   turned out to be a problem with firewall/antivirus software
o   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1086551792
o when running as an applet, need to loadStream from documentBase too
o   problem is that BGraphics has the loadStream code, not BApplet
o new sphere code from toxi
o   already added a while back
o   http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1067005325
o sphere code needs only front face polygon 
o   all triangles must be counter-clockwise (front-facing)
X fix loadImage to be inside PApplet

040715
X saveFrame() to a folder horks things up if a mkdirs() is required
X   on macosx, this makes things hang; on windows it complains
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1081706752;start=0
X decide on whether to use PTools
X   decided against, since it doesn't help anything
X   and some functions need the applet object, so it's just annoying
o   i.e. move math functions into utility library
o   check what other functions require PGraphics to exist but shouldn't
o   look at BGraphics to see if setting an 'applet' could be used
o     then other than that, if no applet set, no connection to PApplet

040716
X change font api to not use leading() as a way to reset the leading
X   resetLeading and resetSize are the things
X embed all available chars from a font, so japanese, etc works
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1083598817;start=3
X fix a bunch of font bugs regarding charsets and lookup
X array operations: boolean, byte, char, int, float, String
X   expand/contract
X   append, shorten
o   shift/unshift
o   slice
X   splice
X   reverse
X   concat

040717
X make clone() into copy()
X add a method BApplet.setPath() or something like that
X   use it to repair saveBytes, saveStrings, etc
X   put screenshots into their sketch folder
o     http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1046185738;start=0
X full casting operations on primitives and arrays of them
X text(String text, x, y, width, height)  // based on rectMode
X   textMode() for align left, center, right (no justify.. har!)
X hex(), binary(), unhex(), unbinary()

040725 
X fix array functions not returning a value

040726 
X noiseSeed and randomSeed
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1090749784;start=0

040727
X incorporated NO_FLYING_POO line/poly hack developed for axel

040902
X sort() should return an array, rather than sort in place
X fix binary function, had wrong offset number
X   casey: i wan't able to get binary() to work at all:
o Typography: Helix won't compile 
o   works fine, just needs BFont -> PFont
X standalone 'alpha' function for PImage (static methods for alpha fxns)
X Image: Edge, Image: Blur: Alpha not set? The error is easier to see on Blur
X   turns out bounds checking wasn't working properly on colors

040903 
X fix mouse/key events, make properly public for the package stuff
X   The biggest problem was the key and mouse functions not working. 
X   Input: Mouse_Functions
X   Input: Keyboard_Functions
X processing.net -> PClient, PServer
X   write client/server implementations for new-style api
X   basic test with old net server has things working fine

040908
X inputFile, outputFile, reader, writer commands
X   also loadStrings(File file)

040913
X printarr instead of print/println for arrays
X   println(Object o) conflicts with println(int a[])
X   but println(Object o) is very needed

040919
X loop/noLoop setup

040920
X make loop/noLoop work properly
X fixes/changes to key and mousehandling
X   tab key not working? 
X     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1091853942;start=0
X   mousePressed, keyPressed, others.. queue them all
X     queue multiple times
X     http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1079555200;start=0
X   strangeness with key codes on keyPressed
X     http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1083406438;start=0
X   key codes not properly coming through for UP/DOWN/etc
X     had to bring back keyCode
X     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1075138932;start=0
X add redraw() function
X   call redraw() on the first time through (to force initial draw)
X   otherwise noLoop() in setup means no drawing happens at all

040920 evening
X defaults for PApplet and PGraphics are different
o   PGraphics has none.. PApplet has fill/stroke
X   actually not the case, only that wasn't calling decent superclass
X set PImage.format as RGB by default? 
X   this was problem with rendering an image from PGraphics on board
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1091798655;start=0
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1080671926;start=0

040921 morning
X bug in get() that was removing the high bits (rather than adding)

040921 evening
X lots of work on libraries, figuring out PLibrary api

040922 
X get library stuff debugged
X port arcball and finish up dxf writer
X beginCamera() no longer sets an identity matrix

040925
X make savePath() and createPath() accessible to the outside world
X   useful for libraries saving files etc.


0070p8
X sizing bug fix to fonts, they now match platform standards
X   however, *this will break people's code*
X text in a box not written
X   make sure to note in the docs that text/textrect position differently
o     for this reason, should it be called textrect()?
X font heights and leading are bad
X   get good values for ascent and descent
X   if ScreenFont subclasses PFont.. can that be used in textFont()?
X check to make sure the tops of fonts not getting chopped in font builder


0069 bagel
X text(x, y, z)
X fixed camera modes / replaced how isometric is handled
X whoa.. BGraphics.screenX() et al had the camera stuff shut off
X   and that's what shipped in 67. shite.
X   need to get things fixed up properly so camera is properly set
X   ISOMETRIC was completely broken.. need to implement properly
X     also, the default camera is perspective
X cameraMode(PERSPECTIVE) and cameraMode(ORTHOGRAPHIC) setup basic cameras
X   if the user wants a custom camera, call cameraMode(CUSTOM); before begin()
X printMatrix() and printCamera() to output the matrices for each
X more functions made static (loadStrings, loadBytes) that could be
X   print() commands in BApplet were among these
X die() command to exit an application or just stall out an applet
X   die(String error) and die(String error, Exception e) 
X more documentation in comments for functions
X chop() function that properly also handles nbsp
X join() was handled weird
X run nf() and nfs() on arrays
X nfp() to show plus sign
X toInt, toFloat, toDouble (nf is for toString.. inconsistent)
o split() function splits strings instead of splitStrings()
o   ints() converts an array of strings/doubles/floats to an int array
o split() should also use StringTokenizer
o   to do countTokens() and then stuff into an array
o shave() or chomp() or trim() method to remove whitespace on either side
o   including unicode nbsp
X min() and max() with three values were broken (now fixed)
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1076804172
X CONTROL wasn't properly set in BConstants
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1077058788
X macosx.. flickering several times on startup
X   fixed this, along with other sluggishness related threading issues
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1073111031
X bug with charset table on older fonts
X   index_hunt was look through the table, not what was in the font
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1077475307;start=0
X seems to be some difficult threading problems still present
X   fixed many threading issues across macosx and linux
X side-porting changes
X   new(er) line code is not in the main 'processing'
X   making perlin non-static not in the main bagel
X   polygon stroking hack code from the end of 68
X erikb found a bug inside split(), it would die on empty strings
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1077664736
X   fixed it, also modified behavior of split() with a delimeter
X   previously, it would remove the final delimeter and an empty entry
X   but that's now disabled, since the split cmd is very specific
X code from toxi to support .tga files in loadImage
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Programs;action=display;num=1078459847;start=0
X fix bug where single pixel points were ignoring their alpha values
X static loadStrings and loadBytes aren't being added to BApplet
X   (the versions that use an inputstream)
X   added support for handling static functions in make.pl
X threading is broken again on windows
X   windows needs a sleep(1) instead of the yield()
X random(3) should be non-inclusive of the 3
X   http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1079935258;start=5

api changes
X loadStream -> openStream for better consistency

jdf
X dynamic loading of code for setting cursor (removed JDK13 ifdef)
X why aren't cursors working on the mac?
X   fix from jdf to just set size to 0,0
