0238 (3.0a11)
X add note about headless exceptions that points to Github
X resize children[] so that getChildren() returns a correctly-sized array
X   https://github.com/processing/processing/issues/3347
X show warning when display spanning is turned off with fullScreen(SPAN)
X   defaults read com.apple.spaces spans-displays
X   https://github.com/processing/processing/issues/3381
X add javaPlatform variable (i.e. 7 or 8)
X clear() seems to be broken (maybe related to 3317)
X   https://github.com/processing/processing/issues/3378
X PGraphic ignores PNG transparency (regression from 3.0a5)
X   https://github.com/processing/processing/issues/3317
X   (same issue as 3378)
X move error messages out of PConstants (into PApplet? PGraphics?) 
o replace sketchXxxx() methods with another mechanism?
o   and an internal dictionary that stores them all?
o   intParam(), stringParam() and setParam()? 
o   or sketchInt() or settingsInt()?
o   surface.size(), surface.noSmooth()... just like PGraphics methods?
o   make final to move folks away from these?
o   or is this a bad move until we've sorted out Android?
X   HashMap sucks b/c we'd have to cast everything
X   doesn't help to have intParam() etc, too many types (5ish? OutputStream)
X   just stick with the current setup
X remove launch(String) since it was calling itself, and anachronistic
X sketches with new fullScreen() method should grab focus by default
X   https://github.com/processing/processing/issues/3380
X sketches not getting focus with Java2D
X   https://github.com/processing/processing/issues/3389
X draw() executes twice when noLoop() called in setup()
X   https://github.com/processing/processing/issues/3310
X   broken since 3.0a7, but not in 3.0a5
o pixelDensity(BEST)? (messes with pixels, but for most sketches, helpful)
X   nixed by Casey for now
X displayDensity() not functioning properly
X   https://github.com/processing/processing/issues/3436
X surface.setXxx() handling
X   https://github.com/processing/processing/issues/3388
X   setResizable, setVisible, setTitle
X   setIconImage(java.awt.Image) -> take a PImage instead?
o   removeNotify(), addNotify()
X   setUndecorated(boolean)
X   setting menubar will be surface-specific
X   setLocation(int, int) and setSize(int, int)
X add the "don't use this" warning to the JFrame in PSurfaceAWT
X ArithmeticException: / by zero when using fonts opened with loadFont()
X   https://github.com/processing/processing/issues/3413
X SVG briefly broken for Java2D
X   https://github.com/processing/processing/issues/3417
X change how font metrics are pulled to fix text width issues
X check alpha when image extension is "unknown"
X   https://github.com/processing/processing/issues/3442
X add support for more Image types (BGR) with PImage(java.awt.Image) constructor
X move Java2D and JavaFX classes to their own packages

threading headaches
X sketch not always showing with empty draw()
X   https://github.com/processing/processing/issues/3363
X static mode broken with Java2D on Windows and Linux
X   https://github.com/processing/processing/issues/3315
X sketch sometimes doesn't show with noLoop() on Linux
X   https://github.com/processing/processing/issues/3316
X Window never shows with exported application on 64-bit Linux
X   https://github.com/processing/processing/issues/3303
X present mode is now broken
o still some spinning when sketches break
X   fixed because we're back off the EDT
o settings() is probably not showing exceptions since we're back to the EDT
o   can't call handleSettings() on the anim thread since it sets the surface
o   so maybe the first part is on the EDT, but other threads run this stuff
X remove the init() method

cleaning
o possible addition for 'implementation' variable
X   http://code.google.com/p/processing/issues/detail?id=281
X   https://github.com/processing/processing/issues/320
X   closing as wontfix

retina fixes
X make g.pixelDensity public inside PApplet (so accessible by sketches)
o   or is it akin to g.fill and the rest?
X   it's in PApplet, but not public.. will be the same as g.pixelDensity
X add pixelWidth/Height to PApplet
X   add setSize() method for surfaces
X   tricky cuz we'll need a getter/setter when surface messes w/ things

text/fonts
X Text looks blurry in GL Retina
X   https://github.com/processing/processing/issues/2739
X text not getting the correct font in Retina2D
X   https://github.com/processing/processing/issues/2617
X Text is half size in PGraphicsRetina2D
X   https://github.com/processing/processing/issues/2738

andres/opengl
X ortho function is broken
X   https://github.com/processing/processing/issues/1278
X errors with loading SVGs in P3D/P2D
X   https://github.com/processing/processing/issues/3379
X sketch window briefly appears on top left corner when using OpenGL
X   https://github.com/processing/processing/issues/3308
X add attrib() method
X   https://github.com/processing/processing/issues/2963
X   andres needs input on how the api works
o   assign this to DXF as well?
X beginShape(POINTS) don't show up in P2D
X   https://github.com/processing/processing/issues/3029

contribs
X Fix NullPointerException in DepthSorter
X   https://github.com/processing/processing/pull/3410

fixed earlier
X sketch window is not placed at correct location when running a second time
X   https://github.com/processing/processing/issues/3125
X full screen needs to ignore prev location setting for frame?
X   https://github.com/processing/processing/issues/3305
X save() and saveFrame() with 2X renderers fails
X   https://github.com/processing/processing/issues/3255
X NPE when using image() created with createGraphics(PGraphicsRetina2D)
X   https://github.com/processing/processing/issues/2510
X Closing OpenGL sketch from the PDE doesn't stop java.exe process
X   https://github.com/processing/processing/issues/2335

cleaning
o keep Danger2D? 
o   can't do version that draws to BufferStrategy directly
o   pixel operations (get/set/loadPixels/saveFrame) might be fixable
o   but can't re-run draw() to re-blit the screen
o     because we don't split calc() and draw()
o   even with the split, handleDraw() might need to live in PSurface
o   add calc() option? this could ease transition
X   decided to put efforts into JavaFX


docs
_ note that full screen and present are now different
_   on Export to Application, this has an impact
_ update wiki/docs to say "don't override sketchXxxx() methods"


beta
_ make notes about Java2D and JavaFX packages in the README
_ move AWT image loading into PImageAWT
_   look into how GL and FX will handle from there
_ run only the necessary pieces on the EDT
_   in part because FX doesn't even use the EDT
_   re-check the Linux frame visibility stuff
_ try using Frame instead of JFrame
_   default sketch location using insets incorrectly
_   use the BufferStrategy directly from the Frame object?
_     might fix performance issues w/ Presentation mode


javafx
_ Error on size() when using FX2D due to stage inset issues
_   https://github.com/processing/processing/issues/3412
_ static mode sketches (draw once and halt w/o closing window)
_ fix display handling, line up the device order with AWT
_   https://docs.oracle.com/javafx/2/api/javafx/stage/Screen.html
_ noLoop()
_ keyChar and keyCode are super wonky and unlike AWT
_   https://github.com/processing/processing/issues/3290
_   what's the way to do this after the deprecation?
_   if this is going to be the default renderer, has to be ironed out
_ displayWidth, displayHeight, full screen, display number
_ present mode not working at all
_   stage in the center, clear the rest of the screen
_ createGraphics() should probably create PGraphicsJava2D
_   or is Canvas specific to the PGraphics, and we get another Context2D?
_   http://docs.oracle.com/javafx/2/api/javafx/scene/canvas/Canvas.html
_ loadPixels() (also 2x)
_ text and fonts?
_ updatePixels()
_ save() and saveFrame()
_ get() and set()
_ clip/noClip
_   https://github.com/processing/processing/issues/3274
_ getNative() in PImage problematic because it gives back a BufferedImage
_   move loadImage() into PGraphics, with AWT version the default?
_   or pass createImage() through to renderer?
_ implement frameRate()
_ implement external messages (moving the window)
_ implement PSurfaceFX.setIcon()
_ javafx not supported with ARM (so we're screwed on raspberry pi)
_   https://www.linkedin.com/pulse/oracle-just-removed-javafx-support-arm-jan-snelders


opengl
_ hard crash at 1920x1080, mirrored, Casey's GT 650M 1GB
_ window loses focus after maximizing
_   https://github.com/processing/processing/issues/3339


opengl questions
_ issues with how JOGL handles window layout/sizing
_   https://github.com/processing/processing/issues/3401
_ exitCalled() and exitActual made public by Andres, breaks Python
_   also not API we want to expose, so sort this out
_   or maybe we're fine b/c now FX2D needs it as well
_ when did setPath() sneak into PShape? API is nothing like anything else
_   probably from the material stuff, but we need to fix that
_ why is createShape() implemented 4x (for P2D, P3D, and 2x versions)? 
_   shouldn't be static, run it from the renderer, that's point of createXxx()
_ public createShape() method that takes another shape as param?
_   should just be the constructor doing this, or copy()


full screen
_ present window draws in stages (OS X)
_ crash on startup when "Mirror Displays" selected (cantfix?)
_   suspect that this is a specific chipset since Oracle didn't reproduce
_   AMD Radeon HD 6770M was in the Oracle bug report
_   https://github.com/processing/processing/issues/2186
_   https://bugs.openjdk.java.net/browse/JDK-8027391
_   test with JG's 13" retina laptop
_ Ubuntu Unity prevents full screen from working properly
_   https://github.com/processing/processing/issues/3158
_ fullScreen(SPAN) reported not working (cannot reproduce)
X   probably need to re-query for displays each time opening prefs
X   what happens when a screen is added after p5 has started?
_   https://github.com/processing/processing/issues/3381


graphics
_ need to be able to call pixelDensity(2) before beginDraw()
_   add pixelDensity() method to PImage/PGraphics
_   pixelDensity(2) does: pixelWidth = width; width /= 2; pixelDensity = 2;
_   this works for both PGraphics and images (though they're a little backwards)
_   for PGraphics it comes early enough
_ should the re-alloc of the drawing surface happen in beginDraw()
_   that way it won't blit to the screen until we have a fresh redraw?
_   otherwise it'll also be resizing on another thread.. badness
_   how to allocation image object w/ createGraphics() (since no surface)
_ createGraphics() currently broken in Java2D
_ size() command not working to do a resize
_   need a programmatic way to set size
_ deal with applySettings() change (maybe not a problem?)
_ check on performance of the new EDT setup
_ present mode is 30-40% slower than windowed
_   w/ this example: https://github.com/processing/processing/issues/2423


data
_ handling of 'missing' values in Table needs serious work
_   if missing int is zero, can't just remove those values from saving a table
_   but for NaN values, it's a necessity
_ get() methods in List/Dict shouldn't allow you to get bad values
_   but set() methods can automatically resize the arrays
_   though that means insert() should allow you to insert past the end
_   and should add/div/mult let you work on non-existent elements?
_ addRow() is not efficient, probably need to do the doubling
o   or have a setIncrement() function?
_   it would default to 1 on tables loaded from a file
_   and default to doubling when created with "new Table"
_   row count and array size are combined.. need to break apart
_ match and iterators
_   add match version that returns table that's only a pointer to original
_   save the constructor for the version that actually copies data
_   the table pointer version will be speedy and allow chaining 


high
_ dataPath() not working when app is not run from app dir on Linux
_   https://github.com/processing/processing/issues/2195
_ point() rendering differently in 2.0.3 and 2.1
_   https://github.com/processing/processing/issues/2278
_   internally, we probably have to call set() if it's a 1 pixel point
_     but that's going to be a mess.. need to first check the CTM
_ tint() not working in PDF (regression between 2.0.3 and 2.1)
_   https://github.com/processing/processing/issues/2428
_ finish PFont.getShape() implementation
_   needs to have a way to set width/height properly
_   draw(s) doesn't work on the returned PShape
_ y-location of frame might be negative, but that might be ok 
_   right now, on Windows it moves it on-screen (b/c of previous bug reports)
_   may be cause of some of the display placement issues w/ multiple displays
_   seem to recall one of the bugs mentioning stacked displays
_   need to change to iterate through display rectangles
_   may be related to full-screen bug filed recently
_ closing a sketch window manually (not hitting Stop) not killing sketch
_   at least with the Java2D renderer
_ don't override the window icon w/ p5 logo if already set


retina/hidpi
_ How do images behave when pixelDensity(2) is set?
_   https://github.com/processing/processing/issues/3364
_ no high-dpi support for core on Windows
_   https://github.com/processing/processing/issues/2411
_ retina sketches slow to start
_   https://github.com/processing/processing/issues/2357
_ zero alpha values still a problem with retina renderer
_   https://github.com/processing/processing/issues/2030


decisions/misc
_ Separately, if we wanted, we could add a method that can safely do drawing calls, but that won't be any faster or make use of more processors the way that `thread()` does. 
_ need reference update for createShape()
_   though we need to verify the behavior here
_   createShape(RECT) uses x/y/w/h, and optionally adds a mode param
_     and optionally the corner radii
_   createShape(ELLIPSE) is x/y/w/h, and optionally adds a mode param
_ async requests
_   https://github.com/processing/processing/issues/3165
_   Request r = createRequest("http://p5.org/feed/13134.jpg");
_   Request r = createRequest("http://p5.org/feed/13134.jpg", "callbackName");
_   Request r = createRequest("http://p5.org/feed/13134, "callbackName", "jpg");
_   implement callbacks for images and other loadXxxx() functions
_     remove requestImage() and friends
_   callback for requestImage()
_     https://github.com/processing/processing/issues/680
_   remove/update requestImage example
_   check into promise api
_     http://www.html5rocks.com/en/tutorials/es6/promises/
_     https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
_ fix the registered methods doc, stop/dispose working
_   Casey needs to nudge people about libraries, so we need to fix this
_ pause(), resume(), start(), stop() clarifications
_ dispose/stop not great w/ libraries yet
_ PShape complete refactoring
_ proper touch events
_   touch event doesn't make sense for mouseMove on desktop, hover on Android
_   probably go with pointer: more universal for touch/mouse
_ high-level touch events (swipe, et al)
_   if Andres is done, they go in, if not then 3.0
_ move away from loadPixels
_ add options for image.save() (or saveImage?)
_   add quality=[0,1] for jpeg images
_   add dpi=[0,n] for for png images
_   implemented internally, just needs the wrapper for the args
_ should map() actually constrain to the low and high values?
_   or have an alternate version that does that? (or boolean param at end?)
_ decide whether to keep:
_   public float textWidth(char[] chars, int start, int length)
_ add version of math functions that use doubles?
_   what other methods should work with doubles? all math functions?
_   seems like internal (mostly static) things, but not graphics api
_ new PGraphics(... OutputStream) 
X   http://code.google.com/p/processing/issues/detail?id=246
_   https://github.com/processing/processing/issues/285
_   already added for PDF, just need to work out the API
_ if save() returns boolean, does saveFrame()?
_   also need to copy this over to android
_ "translate, or this variation of it" when using text(s, x, y, z) accidentally
_   change to be the text command
_ size() and resize() and whatever? 
_   should be setSize(), but that's odd for image files
_   -> resize() is fine with PImage and PGraphics... 
_   we may be inheriting the resize() from Java -> make it final?
_   add resize().. make it call setSize().
_     also needs to do a redraw if noLoop() has been called
_   the registered method for size() also needs to be called
_ get() or copy()? for vectors, image, etc.
_ toArray(), toArray(float[]), toVectorArray(), toVectorArray(PVector[])
_   toColorArray(), toColorArray(float[])...
_ make sure that loadXxxx() methods are used after init()
_   nasty errors when loadImage/Font/createFont/etc used outside
_   decision: add error messages where possible
_   idea: set frameCount to -1 when setup not run yet?
_     then set frameCount to 0 when setup() starts?
_ need to clean up the hints in the reference/source
_ sort out edge + 1 issue on stroke/fill for rectangles
_   http://code.google.com/p/processing/issues/detail?id=509
_ exactly how should pixel filling work with single pixel strokes?
_   http://dev.processing.org/bugs/show_bug.cgi?id=1025 (no gcode)
_ y2 position of rectangles not same as y2 position of lines
_   happens when the rectangle is flipped on the x or y axis
_   probably a hack that draws the "last" point differently
_ add inputPath() and outputPath() -> sketch folder or sd card
_   or should this just be a change to sketchPath() on Android?
_   also because input/output won't be different (since not data folder)
_   or should this be storagePath() etc?
_ PUtil -> move match(), lots of other non-gui functions into own class
_   and merge it in statically via the methods code
_ check for what else inside PApplet should be static
_   maybe catch RuntimeExceptions in the called sub-functions
_   that way more stuff can be static w/o losing useful error handling
_   (emitting errors when closest to source.. i.e. w/ the filename)
_ change how beginRecord() works.. passing around PApplet vs PGraphics is gross
_   have to pass PApplet just to make the rendering work to both renderers
_   should instead be a renderer that splits things out
_ wrap exceptions with die() and warn() methods
_   this way, people can make use of exceptions if they would rather
_   or shut them off if they don't want to 
_   also need to explain exception handling in general
_   http://code.google.com/p/processing/issues/detail?id=183
_ bring PConstants back in line w/ previous 1.5 (can't renumber)
_ finish adding loadStrings(BufferedReader)
_   decide if we want to keep this (and/or others?)
_   port to android
_ deprecate the older splice() etc API inside PApplet?
_ splice() throws ClassCastException when used with objects like PVector 
_   http://code.google.com/p/processing/issues/detail?id=1407
_ add notes about the new shader setup
_ add reference/docs for urlEncode() and urlDecode()
_ verify (and document) public access members of PApplet
_   http://code.google.com/p/processing/issues/detail?id=83
_ add explanation to the reference about using beginRecord() with fonts
_   pdf.textMode(SHAPE)
_   also set the font *after* the record has started
_   maybe should instead make textMode(SHAPE) the norm? 
_   and people can change it to textMode(MODEL) if they want?
_   http://dev.processing.org/bugs/show_bug.cgi?id=1535 (no gcode)
_ explain the new PGL interface
_ decide how disconnectEvent should actually be handled (and name?)
_   was disconnect always there? 
_   will need documentation
_ negative indices so that we can work relative to the end in data classes?
_ add Double and Long versions of the data classes?
_ add requestFocus() method to PApplet (or surface?)
o destroy() removed, but bring back? is that better than dispose()?
_   destroy() only called dispose(), so no difference
_   Python Mode has a hook for when it's called
_ probably should also check to make sure PApplet running JVM 8
_   or compile against 1.8 and force it?



////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////



CORE / rendering/performance/threading

_ hint(DISABLE_LOAD_PIXELS) -> faster rendering in Java2D
_ problems with 2D rendering speed
_   volatile images
_   http://www.javalobby.org/forums/thread.jspa?threadID=16840&tstart=0
_   http://www.javalobby.org/forums/thread.jspa?threadID=16867&tstart=0
_   http://www.gamedev.net/page/resources/_/technical/general-programming/java-games-active-rendering-r2418
_ look into using BufferStrategy again to improve performance
_   there are more improvements to be made ala issue #729
_ make sure rendering is happening on the EDT
_   (hopefully fixes flicker issues)
_   change PApplet.java javadoc to reflect the change
_   Update http://wiki.processing.org/w/Troubleshooting#Flicker
_   http://code.google.com/p/processing/issues/detail?id=775
_ thread() causes weird flickering
_   http://code.google.com/p/processing/issues/detail?id=742


CORE / stop() 

_ in PApplet.main(), windowClosing() should probably be calling 'exit()'
_   or rather, we should never call System.exit(0), ja?
_ dispose() method in PApplet should be empty so ppl can override
_   move that stuff to destroy()
_ pause()/resume() need to work on the desktop side as well
_   notify ddf when pause/resume implemented
_ stop() not called in 1.5
_   http://code.google.com/p/processing/issues/detail?id=636
_   In reply to c#1, I noticed that dispose() is getting called. stop() isn't.
_ static mode sketches seem to break ESC... noLoop() problem?
_   need to find another way to get ESC on static mode
_   b/c static mode sketches *do* finish because they have no draw()
_ sort out destroy(), stop(), pause() et al
_   ColorSelector should stop/pause when not visible
_     right now it's doing a low-level looping
_   start()/stop() perform like onPause()/onResume()
_     all of which call pause() and resume()
_   destroy() (from Applet) calls (our) dispose()
_ destroy() shouldn't call exit()... change from lonnen
_   calls ((PApplet)this).exit() instead of stop() (since stop is pause)
_ notes
_   exit() should do the actual exit
_   if inside draw, let it finish the loop
_   if not looping, need to do it immediately
_   does stop() unwind the thread, or does the thread unwind call stop?
_   browser will call start() and stop() methods
_ need to figure out start/stop signals coming from the browser
_   is it dispose/destroy? 
_ stop() not getting called
_   http://code.google.com/p/processing/issues/detail?id=43
_   major problem for libraries
_   and start() is supposedly called by the applet viewer
_   http://java.sun.com/j2se/1.4.2/docs/api/java/applet/Applet.html#start()
_   need to track this stuff down a bit
_ when closing a sketch via the close box, make sure stop() getting called
X   found a problem for release 0133
_   test to see if it's working
_ what's up with stop() vs exit()?
_   need to get this straightened for p5 (i.e. bc has this problem)
_   make sure the main() doesn't exit until the applet has finished
_   i.e. problem with main calling itself multiple times in Alpheus
_   if exit() (or stop) is called, then System.exit() gets called,
_   even though the main() wants to keep going
_ hitting ESC in a running noLoop()ed sketch won't close the sketch?
o   work through serial examples
_ noloop ref even says that redraw will be called on resize, make sure it is
_ focus not coming through, ESC no longer working(?)
_ stop() not called in 1.5 when closing the sketch window
_   http://code.google.com/p/processing/issues/detail?id=636
_ hitting cmd-q when an applet is running quits p5 (on macosx)
_   but cmd-q when running externally is ok because it just quits
_   is there a way to catch cmd-q when running a sketch? 
_     so that it could avoid quitting if the sketch hasn't been stopped
_     or if the sketch window is foremost
_     maybe a hack where a new menubar is added? 


CORE / PFont and text()

_ text() wraps words differently depending on whether space seen or not
_   http://code.google.com/p/processing/issues/detail?id=439
_ remove subsetting stuff from PFont?
_   or use hint(ENABLE_FONT_SUBSETTING)? 
_ what's the difference with ascent on loadFont vs. createFont?
_ svg fonts
_   would be nifty if we could convert on the fly to ttf for speed...
X   http://code.google.com/p/processing/issues/detail?id=748
_   https://github.com/processing/processing/issues/787
_ font rotation (native font problem?) with natives?
X   http://code.google.com/p/processing/issues/detail?id=692
_   https://github.com/processing/processing/issues/731
_ text position is quantized in JAVA2D
_   text placement is ugly, seems like fractional metrics problem
_   http://code.google.com/p/processing/issues/detail?id=99
_ text(char c) with char 0 and undefined should print nothing
_   perhaps also DEL or other nonprintables?
_   book example 25-03
_ accessors inside PFont need a lot of work
_ improve font metrics
_   http://java.sun.com/products/java-media/2D/reference/faqs/index.html#Q_How_do_I_obtain_font_metrics
_ font encoding issues 
_   java seems to force straight windows encoding.. (problem for pi fonts)
_   opentype/cff fonts don't work with live loading from the app
_   many (all?) opentype fonts won't show up or aren't supported
_     this may be only cff fonts that have trouble
_   when encoding is not the standard encoding, problematic
_     so sonata otf and sonata don't seem to have any chars at all
_ text() with a z coordinate is now using translate, very slow
X   also puts up a weird error message about translate() in 2D mode
_ make screen space fonts use get/set as well?
_   too much to debug on their own
_   unfortunately tint not set with setImpl, but...
_ not having kerning really blows
_   could this be pulled from the OpenType font stuff? 
_   it could be placed at the end of the file
_ not having fractional widths on small fonts really blows
_   screen space text looks crappy
_ working with vector fonts? 
_   need to be able to handle shapes within shapes (reverse winding)
_   ftgl: main code is in FTVectoriser
_   uses gluTessBeginContour and gluTessEndContour
_   and then does 5 step sizes for each curveto
_ show an error when using a font character that isn't available
_   maybe fall back on other characters instead?
_ some font weights cannot be specified/selected on OS X
_   https://github.com/processing/processing/issues/1727


CORE / PImage

_ TGA files writing strangely
_   https://github.com/processing/processing/issues/2096

_ don't grab pixels of java2d images unless asked
_   this is the difference between a lot of loadPixels() and not
_   so important to have it in before beta if that's the change
_   http://code.google.com/p/processing/issues/detail?id=60
_ loadPixels() implementation needs to be in PApplet, not PGraphics
_ this is a tricky thing to implement because of how OpenGL is handled

_ loadImage() should use the faster loading methods
_   hint(DISABLE_IMAGE_CACHING)
_   add a note to the loadImage() reference page
_ figure out why 1024x768 image takes 3.5 seconds to load
_   would using a BufferedImage work better?
_   is the image actually a BufferedImage so PixelGrabber is a waste?

_ fix blue-channel bias on blend()
_   http://code.google.com/p/processing/issues/detail?id=475
_ improve blend() accuracy when using ADD
_   http://code.google.com/p/processing/issues/detail?id=133
_   includes code for a slow but more accurate mode
_ deprecate the blend() function

_ implement unified means to specify smoothing level for image scaling
_   http://code.google.com/p/processing/issues/detail?id=165
_ blend() and copy() are not pixel accurate for copy/scale
_   http://code.google.com/p/processing/issues/detail?id=285
_ accuracy problems make alpha channel go to FE with image.copy()
_   http://code.google.com/p/processing/issues/detail?id=219

_ Semitransparent rect drawn over image not rendered correctly
_   http://code.google.com/p/processing/issues/detail?id=182


CORE / PShape

_ major refactoring for PShape/PShapeOpenGL
_   https://github.com/processing/processing/issues/1623
_ PShape should be cached as well
_ major surgery to put loadShape() back into PApplet/PGraphics
_   then have the OpenGL or Java2D versions as cached objects
_ PShape s = createShape(); / s.beginShape(QUADS);
_ createShape() not yet implemented for Java2D
_   http://code.google.com/p/processing/issues/detail?id=1400
_ keeping these public for now
_   get/setNormal
_   get/setTextureUV
_   get/setFill
_   get/setStroke
_   -> perhaps these go into their own section?
_   -> or have their own accessor that returns all params?
_ trying to remember why primitive was changed to kind? (better name?)
_ these aren't per-vertex:
_   get/setStrokeWeight
_   get/setAmbient
_   get/setEmissive 
_   get/setShininess
_ boolean isGL() -> now removed
_ unapproved (made protected)
_   static shape copying methods
_   getTop, getBottom, etc
_   void solid(boolean)
_   void setParams()
_   void setPath()
_ colorCalc() methods added to PShape.. should just be used from PGraphics
_ loadShape() needs to live in PApplet
_ make PShapeOpenGL a cache object
_ don't allow things inside begin/endShape() that aren't possible
_   better lockout inside beginShape() to keep other things from happening
_   don't allow you to draw stroked items unless stroke() is called
_   don't allow beginShape() if shape is already set
_     (otherwise will cause some very strange errors)
_   http://code.google.com/p/processing/issues/detail?id=135
_ make determination on shape(x,y,z,w,h,d) or no
_ PShape API to handle internal vertex stuff
_   add deconstruct() method for paths
_   toArray() and toVector()
_   setVertex(0, x, y), setVertex(0, x, y, z)
_ if PShape3D, then is it PShape2D? or do you handle both the same?
_ add methods to PShape to apply all transformations in the tree
_ we can do hit testing (at least in 2D) now that we rely on java2d
_ for subclasses, make it easy to grab the structure of vertices
_   actually, just use PShape internally and this will be easier
_ for PShape, need to be able to set the origin (flash people)


CORE / PShapeSVG

_ implement support for SVG gradients from Inkscape
_   http://code.google.com/p/processing/issues/detail?id=1142
_ need to handle <!ENTITY tags in XML for SVG documents
_   get entity tags working in xml library for SVG
_ cover the svg changes in a future release
_ load PShape from a string object
_   http://code.google.com/p/processing/issues/detail?id=277
_ breaking up classes / figure out how to handle fonts subclass
_ when using get(), reset the bounds for the objects
_   otherwise it's always relative to the original document
_ support for text (shouldn't be too bad, use createFont)
_   implement text spans for svg output
_ add better support for attributes buried in styles (support ai9/10/11)
_ test what happens when transparency is used with gradient fill
_ look into transformation issues... guessing this is probably wrong
_   this may be what's throwing off the radial radius transform
_ check for any other pieces of missing path api
_   multiple sets of coordinates after a command not supported
_   i.e. M with several coords means moveto followed by many linetos
_   also curveto with multiple sets of points is ignored
_ document somehow.. svg viewer will be discontinued
_   http://www.adobe.com/svg/eol.html
_ PShape getVertex() not implemented properly for SVG files
X   https://code.google.com/p/processing/issues/detail?id=1558
_   https://github.com/processing/processing/issues/1596


CORE / PVector

_ add screen(PVector), model(PVector) and world(PVector)?
_   maybe screenVec()? or screenXYZ()?


CORE / OpenGL (Andres)

_ ortho() issues
_   http://code.google.com/p/processing/issues/detail?id=1240
_ hint(DISABLE_PERSPECTIVE_CORRECTED_STROKE)
_ textureWrap(CLAMP / REPEAT)
_ implement setImpl() instead of set() inside PGraphicsOpenGL
_   http://code.google.com/p/processing/issues/detail?id=121
_ first few frames of OpenGL sketches on Windows run slowly
_   http://code.google.com/p/processing/issues/detail?id=107
_ implement textMode(SHAPE) with OPENGL
_   https://github.com/processing/processing/issues/777
X   http://code.google.com/p/processing/issues/detail?id=738
_ Signature issue on contributed libraries affects unrelated opengl sketches
_   http://code.google.com/p/processing/issues/detail?id=261
_ simple NPE in OpenGL causes really large, not useful, stack trace
_ why is initPrimarySurface() public?
_ why is setFramerate() public? (also should be setFrameRate or just frameRate)
_ where did hintEnabled() come from?
_ remove 'params' from createImage (is it on loadImage too?)
_ OpenGL noSmooth() problems
_   http://code.google.com/p/processing/issues/detail?id=328
_ OS X slow with FSEM enabled
_   http://code.google.com/p/processing/issues/detail?id=737
_ get() with OPENGL is grabbing the wrong coords
_   http://code.google.com/p/processing/issues/detail?id=191
_ deal with issue of single pixel seam at the edge of textures
_   should vertexTexture() divide by width/height or width-1/height-1?
_   http://code.google.com/p/processing/issues/detail?id=76
_ lousy graphics cards cause background to flicker if background() not used
_   http://code.google.com/p/processing/issues/detail?id=146
_   OPENGL sketches flicker w/ Vista when background() not used inside draw()
_   Disabling Aero scheme sometimes prevents the problem
_   Updating graphics drivers may prevent the problem 
_ ellipse scaling method isn't great
_   http://code.google.com/p/processing/issues/detail?id=87
_ improve hint(ENABLE_DEPTH_SORT) to use proper painter's algo
_   https://github.com/processing/processing/issues/90
_   for begin/endRaw: https://github.com/processing/processing/issues/2235
_   http://code.google.com/p/processing/issues/detail?id=51
_   polygon z-order depth sorting with alpha in opengl
_   complete the implementation of hint() with proper implementation
_   gl alpha on images when flipped around backwards
_     will sorting based on depth help this? also ask simon for ideas
_   need to merge sorting/drawing of lines and triangles
_     lines will occlude tris and vice versa
_     will need to split each based on the other
_     sort issues will affect both
_ Stroking a rect() leaves off the upper right pixel
_   http://code.google.com/p/processing/issues/detail?id=67
_ Signature issue on contributed libraries affects unrelated opengl sketches
_   http://code.google.com/p/processing/issues/detail?id=261
_ remove matrixMode(), add a projection() method
_ opengl applet problems with tabs - needs to handle stop() and start() 
_   http://code.google.com/p/processing/issues/detail?id=196
_   stop() called between tabs/pages, start() may be called again
_   http://java.sun.com/docs/books/tutorial/deployment/applet/lifeCycle.html
_   really, stop() should just call noLoop() (and start re-enable if done)
_     and on android, start/stop can be used to save state information
_   need to fix opengl applets so that we can safely kill P3D
_ shared intf for 3D view data across PGraphicsOpenGL and PGraphicsAndroid3D
_   libraries have to do a lot of casting
_ opengl isn't drawing rectangles out to raw properly with fonts
_   when not in textMode(SHAPE) should have rects
_ InvScreenX, Y, Z to convert screen (mouse) coordinates to model coordinates
_   https://github.com/processing/processing/issues/1609
X   https://code.google.com/p/processing/issues/detail?id=1571

CORE / Mac OS X

_ set the application name to sketch name (not processing.core.PApplet)
_   System.setProperty("com.apple.mrj.application.apple.menu.about.name", ...)
_   -Xdock:name=<application name>
_   -Xdock:icon=<path to icon file>


CORE / Events

_ Implement a way to disable automatic key repeat
_   https://github.com/processing/processing/issues/1622
X   https://code.google.com/p/processing/issues/detail?id=1584
_ touch events.. can't do MouseEvent et al with Android
_   http://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html
_   http://www.html5rocks.com/en/mobile/touch.html
_   decision: go with what looks like javascript/ios
_   touchEvent(), gestureEvent()?


LIBRARIES / PDF

_ beginRecord() doesn't use current settings of the sketch
_   sometimes reported as a bug, but probably not a good way to 
_   consistently carry these over
_ pdf sketches exiting before writing has finished
_   people have to call exit() (so that dispose() is called in particular)
_ when using noLoop() and the PDF renderer, sketch should exit gracefully
_   because isDisplayable() returns false, there's no coming back from noLoop


LIBRARIES / Video 

_ remove dispose() being used in the Movie and Capture
_   added warning notes, but shouldn't be necessary
_ buffer sink methods in Movie and Capture
_   added warning to JavaDoc, but need proper API for it
_ 'newFrame' is 'available', and ready() is part of that



////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////


DATA / Misc

_ add indent= as option for XML save
_ add indent= as option for JSON save
_ not doing print() methods, since alternatives are more descriptive
_   println(obj) and obj.write(System.out) are both better
_ can we use String... for options? or does it screw up the method signature?
_   and would we have to always concatenate arrays to prepend extensions, etc
_ include Instant and Interval? (or just Time and TimeSpan)
_ it's going to be File or Reader (mostly BufferedReader) everywhere
_   though TableODS needs an InputStream... 
_   and XML could use InputStream if we hope to be able to reflect doc encoding
_   ok, so File, Reader, and InputStream (where needed)
_ setMissingXxxx() -> should this live in PApplet? be static?
_   cons: static stinks, diff tables might use diff values
_ will also need an iterator for the Dict class ala Map.Entry
_ using Iterable for rows(), keys(), etc
_   generally more efficient for Table, but slower for FloatHash and IntHash
_   could use an int array instead, but a bit hokey in places
_ Iterable, Iterator, or [] returned for keys(), rows(), etc.
_   list, dict, json, table are each more efficient at different things
_   keys(), rows(), etc. should return something Iterable
_     whether that means an array or an actual Iterator or even a Set
_     that way we can do what's most efficient
_   then we add keyIterator() and others to handle the other case (deletion)
_   blogs.oracle.com/CoreJavaTechTips/entry/using_enhanced_for_loops_with
_ means that JSON.keys() -> JSON.keyIterator(), JSON.keySet() -> JSON.keys()
_ what should they all return? 
_   remove -> true/false based on whether it found something?
_   remove all -> the number removed?
_ List: remove(), append(), index(), etc all use values
_   removeIndex(index) is the other
_   otherwise remove() would be the only one that dealt with indices
_   Dict will use remove(key), so using remove(index) as default
_     and removeValue(value) is probably used less
_ introduce remap() instead of map() (if not deprecate?)
_ key/valueIterator to get a version that can be removed in a loop
_   in Table, added an Iterator function
_ should keys() returns cropped internal array after all?
_   right now it's making a copy (which is safer, so folks don't modify)
_   but this means that we don't have a fast method for access
_ methods for max, min, index of max/min entries? valueIndex?


DATA / Table

_ function that will convert awful CSV to TSV.. or something else?
_   maybe to write binary instead? then read the binary file once it's ok?
_ if loading from a File object
_   (or PApplet is passed in and we can check online)
_   then check the (probable) size of the file before loading
_ no column max/min functions since it needs to be per-datatype
_   better to use float mx = max(float(getColumn(3)));
_   but what to do with null entries?
_ need a method to reset the row/column indices after add/remove
_   or just make sure that it's covered for all cases
_ prefixes like # as comments? easy to remove?
_ naming for these (or whether to include hash)
_   Table createSubset() -> leave out?
_   String[] getUnique(col) (SQL DISTINCT, sort --unique)
_   HashMap<String,Integer> getUniqueCount(col)
_ really need to get an option to grab matches based on a col
_   i.e. get unique tables based on a particular column
_   or, get uniques, then grab rows that match a name in a particular col
_ create table from TableRow iterator...allows for subset and find
_   downside is types are not included
_ getMaxFloat() (whole table) or getMaxFloat(col) 
_   that's max(getFloatColumn(n))
_   also important b/c can leave out missing values
_ dictionary support
_ join tables together (static is kinda gross)
_   table.append(anotherTable)?
_   table.join(anotherTable)
_ getInt() on categorial to return index?
_   getCategories() and getCategory() methods to query names?


////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////


LATER / Optimize

_ put a wrapper around InputStream returned by createInput
_   that actually has some notion of the length of its input
_   that way, methods could use the information when reading
_ loadBytes() needs optimization
_   don't bother using a buffering stream, just handle internally. gah!
_ can loadBytes() be improved by querying file size first?
_   background 
_     this would require a new version of createInput(), which would query
_     the URL (or file) for an actual file size. the size is not always
_     available, so it can't be relied upon, but would help in some cases.
_   loadBytes() is used for images.. ouch
_   might be worth doing a test to see if it actually would help at all 
_     before rewriting all of createInput()


LATER (post 2.0)

_ handle repeat key events 
_   and/or holding keys down and discerning repeats
_   https://github.com/processing/processing/issues/1622
_ fillMode(NONZERO) and fillMode(ODD) to replace solid(boolean)?
_ create PVec2D and PVec3D as separate classes
_ gui priorities
_   + Label
_   + Button
_   + Scrollbar/Slider
_   - Checkbox
_   - Radio
_   . List
_   . Textblock
_   \ Knob
_   \ Progress bar
_   \ Toggle
_ implement JSON class
_   http://www.xml.com/lpt/a/1658
_   http://www.json.org/java/
_ add shader support
_ createColor() instead of color()?
_ route all exceptions through PException and catch method
_   advanced users can override the method if they want
_   or you can set an option to have PExceptions be raised
_   decision: just copy & paste the serial/net code.. 
_     until we can find a more compelling example
_ actual shape api for things like rectangles and whatnot?
_ should we kill import xxxx syntax for libraries? 
_   just give up and use a gui for it
_   cons: copy & paste breaks
_   pro: there's no guaranteed 1:1 between packages and single libraries
_ method of threading but queue an event to be run when safe
_   e.g. queueing items like mouse/keybd, but generic fxns
_ for begin/endRecord, use a piggyback mechanism
_   that way won't have to pass a PApplet around
_   this has a big impact on the SVG library
_   in fact, this maybe should be a library that does it
_     so that the file size can be much smaller
_ add setOutput() method across other renderers?
_ introduce calc()
_   semantics of this are just too tricky, especially when it's not clear
_   what's actually gained by the split--would have to do weird hacks
_   to get the accum buffer, etc. to work anyway
_ add some sort of unprojectX/Y/Z method (based on glu fxn)
_   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=OpenGL;action=display;num=1176483247
_ add a timer(obj, "functionname", 45) method
_   this can be used to schedule something to happen at a specific time
_   or import the swing timer (for actionPerformed)
_   also add interval("functionname", 40)
_ should fill(c) instead be fillColor(c)?
_ should color(123, 4, 99) instead be createColor()?
_ rounding errors on color conversion
_   colorMode(RGB, 1.0); colorMode(255); println(red(color(0.5,1,1)));
_   will return 127, instead of 128.
_ gray that's greater than the colorMode() can produce strange colors
_   http://dev.processing.org/bugs/show_bug.cgi?id=432 (no gcode)
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1083650609
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1082481891
_ add stroke() to type
_   more for doing outlines-only and that sort of business
_ gradients
_   use gradients in a class for the svg lib for now
_   don't add api to main p5 stuff (though maybe setPaint/noPaint api?)
_   gradient-painted lines and fills
_     java2d will do both line and fill, illusfarter only does fills
_   gradients not supported in java2d
_     http://dev.processing.org/bugs/show_bug.cgi?id=371 (no gcode)
_ bspline or nurbs (later, want to do the 3D/arch stuff correctly)
_ non-homogenous coloring for curve vertices
_ consider bringing back text/image using cache/names
_ exactly how pixel-filling works for strokes
_   http://processing.org/bugs/bugzilla/1025.html
_ deprecate loadPixels for 2.0? need to move away from it
_   mostly just change the examples to not use loadPixels() anymore
_ put a Hash<Something> class in there
_   will this work to sort by the values?
_   there was another concern as well..
_ save() should probably come out of image, ja?
