0171 core
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

_ open up the pdf library more (philho)
_   http://dev.processing.org/bugs/show_bug.cgi?id=1343
_ changing vertex alpha in P3D in a QUAD_STRIP is ignored
_   with smoothing, it works fine, but with PTriangle, it's not
_ smooth() not working with applets an createGraphics(JAVA2D)
_   but works fine with applications
_ get() with OPENGL is grabbing the wrong coords
_   http://dev.processing.org/bugs/show_bug.cgi?id=1349

_ No textures render with hint(ENABLE_ACCURATE_TEXTURES)
_   http://dev.processing.org/bugs/show_bug.cgi?id=985
_   need to remove the hint from the reference
_   need to throw an error when it's used
_ deal with issue of single pixel seam at the edge of textures
_   http://dev.processing.org/bugs/show_bug.cgi?id=602
_   should vertexTexture() divide by width/height or width-1/height-1?

_ key and mouse events delivered out of order
_   http://dev.processing.org/bugs/show_bug.cgi?id=638
_ key/mouse events have concurrency problems with noLoop()
_   http://dev.processing.org/bugs/show_bug.cgi?id=1323
_   need to say "no drawing inside mouse/key events w/ noLoop"

_ make the index lookup use numbers up to 256?

_ decide whether to keep:
_   public float textWidth(char[] chars, int start, int length)

_ textAlign(JUSTIFY) (with implementation)
_   http://dev.processing.org/bugs/show_bug.cgi?id=1309

_ create characters on the fly when createFont() is used

_ Semitransparent rect drawn over image not rendered correctly
_   http://dev.processing.org/bugs/show_bug.cgi?id=1280

_ should map() actually constrain to the low and high values?

_ file chooser fails with opengl on linux
_   http://dev.processing.org/bugs/show_bug.cgi?id=1221

_ resizing opengl destroys context and textures
_   http://dev.processing.org/bugs/show_bug.cgi?id=1176
_ what's the difference with ascent on loadFont vs. createFont?
_ noCursor() doesn't work in present mode
_   http://dev.processing.org/bugs/show_bug.cgi?id=1177
_ modelx/y/z broken when aiming a camera
_   http://dev.processing.org/bugs/show_bug.cgi?id=1074
_ in P2D, two vertex() line calls with fill() causes duplicate output
_   works fine in other renderers, has to do with tesselation
_   http://dev.processing.org/bugs/show_bug.cgi?id=1191
_ extra triangles being seen in P2D
_   http://dev.processing.org/bugs/show_bug.cgi?id=1192
_ noloop ref even says that redraw will be called on resize, make sure it is
_ public PImage(java.awt.Image) sets format to RGB (but could be ARGB)


[ features ] 

_ 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
_ look into replacing nanoxml
_   http://www.exampledepot.com/egs/javax.xml.parsers/pkg.html
_ if no draw() method, and renderer is not displayable, then exit
_   static mode PDFs shouldn't just hang


[ known problems ]

_ memory leak problem with fonts in JAVA2D
_   http://dev.processing.org/bugs/show_bug.cgi?id=1252
_ OPENGL sketches flicker w/ Vista when background() not used inside draw()
_   http://dev.processing.org/bugs/show_bug.cgi?id=930
_   Disabling Aero scheme sometimes prevents the problem
_   Updating graphics drivers may prevent the problem 

[ need problem sketch ] 

_ if too many errors come through during setup, app will terminate
_   printStackTrace() throttles on osx and poops out
_   seen especially on old mac laptops (slow ppc garbage) 
_   can this be confirmed properly?
_   * this may just be an OutOfMemoryError happening

[ needs verification ] 

_ Frame skipping with processor intensive applets using 1.6
_   http://dev.processing.org/bugs/show_bug.cgi?id=766
_   may be fixed, but not verified
_ focus not coming through, ESC no longer working(?)


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 


createGraphics() and load/updatePixels() mess [1.0]
_ text characters showing up as opaque rectangles in tga files
_   http://dev.processing.org/bugs/show_bug.cgi?id=641
_   solution is to implement alpha compositing across all of P3D 
_   http://en.wikipedia.org/wiki/Alpha_compositing
_ text() not setting zbuffer in P3D because not fully opaque
_   http://dev.processing.org/bugs/show_bug.cgi?id=696
_ alpha not set on saveFrame, so can't be used in photoshop as a layer
_   http://processing.org/discourse/yabb/YaBB.cgi?board=general;action=display;num=1078441623
_ when drawing into a JAVA2D surface, have to call loadPixels()
_   to draw it later with P3D (or OPENGL prolly)
_   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Syntax;action=display;num=1171574044
_ an offscreen JAVA2D graphics needs loadPixels() before being drawn
_   i.e. offscreen JAVA2D, then image() with OPENGL renderer as main
_   needs to be marked as its cache needs an update, but not its pixels
X begin/endPixels.. change has been made
_   on PImage, sets a flag that marks it to be updated on next render
_   for PImage, begin after an end is ignored, no pixels are re-loaded
_     the "changed" bit gets turned off when the PImage is rendered
_   for subclasses of PGraphics, the reload bit needs to be set on endFrame
_   filter() checks to see if inside begin/endPixels, if so doesn't call
o   if line() is called inside beginpixels, call updatepixels?
_   when NPE on line with pixels[], suggest user includes beginPixels
_ need to test/straighten out load/update pixels
_   loadPixels() and updatePixels() only need to be used when 
_   touching pixels[]. All other functions including get(), set(),
_   filter(), etc shouldn't need them. 
_ image memory use.. how to handle lots of images
_   need to figure out exactly how they should/can unload
_ don't do a loadPixels unless an updatePixels has completed
_   tho this won't affect anything, since either it's an image buffer
_   or it's the PGraphics object, which does an updatePixels() immediately
_ if (modified) don't loadPixels again, just ignore it
_   make a note that updatePixels() only sets a flag in PImage
_     (but not PGraphics, which does it immediately)
o filter() doesn't need a loadPixels
o   but if you want to filter *and* mess w/ pixels (avoid double load)
o   then do loadPixels() /before/ filter, and updatePixels after messing
o   same will go for blend()
_   make sure that filter, blend, copy, etc say that no loadPixels necessary


rework some text/font code [1.0]
_ PFont not working well with lots of characters
_   only create bitmap chars on the fly when needed (in createFont)
_ text placement is ugly, seems like fractional metrics problem
_   http://dev.processing.org/bugs/show_bug.cgi?id=866
_ text(char c) with char 0 and undefined should print nothing
_   perhaps also DEL or other nonprintables?
_   book example 25-03
_ when using createFont("xxxx.ttf"), should use textMode(SHAPE) with PDF
_   because ttf files will not be installed on the system when opening pdf
_   maybe just add this to the reference so that people know
_ text position is quantized in JAVA2D
_   http://dev.processing.org/bugs/show_bug.cgi?id=806
_ accessors inside PFont need a lot of work
_ osx 10.5 (not 10.4) performing text width calculation differently
_   http://dev.processing.org/bugs/show_bug.cgi?id=972
_ Automatically use textMode(SCREEN) with text() when possible
_   http://dev.processing.org/bugs/show_bug.cgi?id=1020
_ Implement better caching mechanism when creating large fonts
_   http://dev.processing.org/bugs/show_bug.cgi?id=1111


P2D, P3D, PPolygon [1.0]
_ smoothing
_   how to handle smoothing images in P3D even though it has no smoothing?
_   noSmooth() in opengl should switch to nearest neighbor on textures/images
_   same for P3D
_ P3D smooshes the top row of pixels when drawing text (or images)
_   http://dev.processing.org/bugs/show_bug.cgi?id=466
_ textAlign(CENTER) with P3D and OPENGL produces messy result
_   probably rounding error with the images
_   http://dev.processing.org/bugs/show_bug.cgi?id=475
X textures truly did get worse in P3D
_   problem is that bilinear is turned on by default starting in 0124(?)
X   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Programs;action=display;num=1205171649
_ when turning smoothing on, internal lines of shapes are visible
_   add an edge flag when tesselating 
_   mind the opengl tesselation flags
_   need to turn off smoothing for the interior of shapes
_   http://dev.processing.org/bugs/show_bug.cgi?id=200
_ Implement support for complex shapes when using P2D and P3D
_   http://dev.processing.org/bugs/show_bug.cgi?id=1053
_ Implement support for complex shapes when using the OpenGL renderer 
_   http://dev.processing.org/bugs/show_bug.cgi?id=947
_   in opengl mode, use its tesselator
_   because the vertex calls can just come right back to regular vertex calls
_   this way we can also implement breakShape() for opengl
_ smooth in P3D has zbuffer glitches
_   http://dev.processing.org/bugs/show_bug.cgi?id=1000
_ smoothing is slow
_   http://dev.processing.org/bugs/show_bug.cgi?id=1001
_ textured sphere example needs to set normals
_   also needs fix for last edge and the seam


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 


threading and exiting
_ pdf sketches exiting before writing has finished
_ writing image file (missing a flush() call?) on exit() fails
_   lots of zero length files
_ saveFrame() at the end of a draw mode program is problematic
_   app might exit before the file has finished writing to disk
_   need to block other activity inside screenGrab until finished
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1081706752
_ 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

_ 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

_ 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

_ STROKE_WEIGHT field in PGraphics3 is a disaster, because it's an int
_   use the SW from vertex instead.. why set stroke in triangle vars at all?
_   currently truncating to an int inside add_line_no_clip
_   need to clean all this crap up

_ stop() not getting called
_   http://dev.processing.org/bugs/show_bug.cgi?id=183
_   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

_ method of threading but queue an event to be run when safe
_   e.g. queueing items like mouse/keybd, but generic fxns


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


CORE / PApplet

_ PApplet.main(new String[] { "classname" }) won't pass in args
_   this means that no args are after passed to the class
_   the fix would be to use the following as the call to main()
_   PApplet.main(append(new String[] { "classname }, args));
_ 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?
_ detect when using full screen
_   and if so, remove decoration and don't bother with bg present frame
_   frame.setUndecorated(true);
_   frame.setLocation(0,0);
_   size(screen.width,screen,height); 
_   this will help for exported applets that don't need 'present'
_ 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)
o size() inside draw is missing a new call to cameraMode, etc
_ fix param() to use a sketch.properties file when run as an app
_   make this also be used in generating the html file
_ test winding polygons in different directions
_ test P3D lighting to see how it compares with native OpenGL
_ ed's thread re: fullscreen strategies
_   could add a new BApplet that uses BufferStrategy?
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Programs;action=display;num=1081335361;start=15
_ size() has memory limitations (pitaru)
_   catch OutOfMemoryError inside size() and let the user know
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1038847001
_ loadBytes() needs optimization
_   don't bother using a buffering stream, just handle internally. gah!
_ remove some of the bloat, how can we make things more compact?
_   i.e. if not using 3D, can leave out PGraphics3, PTriangle, PLine
_   http://dev.processing.org/bugs/show_bug.cgi?id=127


CORE / PApplet - main()

_ refactor PApplet.main() and Runner.startInternal() to remove duplication
_   http://dev.processing.org/bugs/show_bug.cgi?id=245
_ implement full screen mode.. this takes over the screen as best it can
_   size(screen.width, screen.height, OPENGL);
_   if size is screen.width and screen.height, does its best
_   needs to get the size of the main screen
_   this probably works but just needs to be tested
_   exceptions in full screen mode will quit the app completely
_     can't keep window open because things are hosed
_   default is that full screen app doesn't cover multiple displays
_     this is fine since opengl can't usually go across both
_     but include an example for how to use full in gl 
_ ability to select monitor via preferences panel
_   this applies to any applet that's run externally currently (verify)
_   make it also work with anything that's run inside of p5 itself
_     this means changing the frame creation code inside Runner
_   check current present code with multiple monitors
_ 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? 
_ --display not working on osx
_   http://dev.processing.org/bugs/show_bug.cgi?id=531


CORE / PFont and text()

_ 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...
_ optimize textMode(MODEL) with textMode(SCREEN)
_   in PGraphics and PGraphics3, check to see if matrix is within epsilon
_   of one of the rotation matrices (many fewer steps) 
_   if identity, or just translate, or a rotate, make OBJECT into SCREEN
_ 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


CORE / PGraphics

_ stroke showing above fill when used with P3D
_   http://dev.processing.org/bugs/show_bug.cgi?id=1032
_ strokeCap() and strokeJoin() for use with P2D, P3D and OPENGL
_   http://dev.processing.org/bugs/show_bug.cgi?id=955
_ 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
_ beginShape() 
_   better lockout inside beginShape() to keep other things from happening
_   http://dev.processing.org/bugs/show_bug.cgi?id=1022
_   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)
_ lines
_   z value hack for lines is causing trouble for 2D
_     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1089737928;start=0
_   rewrite line and stroke code, it's a buggy mess
_     lines become 2 pixels thick after a 3D transform 
_     better handling of single-pixel special case
_       flat_line_retribution is a hack, can go away
_ fix-up the curve_init() and the rest to use matrices
_   and not have ugly names (i.e. just g.curveDetail is good)
_ ellipse scaling method isn't great
_   toxi ellipses don't adapt properly with transformations
_   http://dev.processing.org/bugs/show_bug.cgi?id=695
_   weird ellipse bug with an alpha line in same image
_     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1083221401;start=0
_   scaled ellipse showing up as a hexagon
_     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1083674213
_     http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1084652597;start=0
_   problem with the fill
_     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1077834735
_   z values not set properly on ellipses?
_     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1068752615
_   ellipses are just plain ugly
_     http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1073409011;start=0


CORE / PGraphics2D

_ should noSmooth() disable image smoothing consistently (does for Java2D)
_   may need to bring back a hint, or use smoothMode() or smooth(IMAGES)
_ lines are conflicting with type in 2D
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1094174791;start=0
_ mgorbet stroke transparency problem
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1076383048;start=0
_ make sure line() commands don't try to have a fill


CORE / PGraphicsJava2D

_ some optimizations from zach
_   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=os_core_pde;action=display;num=1121670787
_ textMode(SCREEN) needs to be faster
_   need flat image implementation that takes no transforms
_   along with 90, 180 and 270 versions of it as well
_   tie to glDrawPixels.. how to clear matrix properly for that?
_   maybe just disable this for JAVA2D cuz it's silly?
_ catch sun.dc.pr.PRException?
_   http://dev.processing.org/bugs/show_bug.cgi?id=104


CORE / PGraphics3D

_ make thick lines draw perpendicular to the screen with P3D
_   http://dev.processing.org/bugs/show_bug.cgi?id=956
_   ewjordan suggests building the quad in screen coords after perspective
_ ortho() behaving differently in P3D vs OPENGL
_   http://dev.processing.org/bugs/show_bug.cgi?id=100
_   shows a blank canvas
_   (was only happening once b/c was drawing first in perspective)
_   seems to be mapping to 0, 0 - width/2, height/2
_   fix 3D > OrthoVsPerspective example once ortho works properly
_     there's a depth problem in addition to the ortho weirdness
_ improve hint(ENABLE_DEPTH_SORT) to use proper painter's algo
_   http://dev.processing.org/bugs/show_bug.cgi?id=176
_   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
_ images are losing pixels at the edges
_   http://dev.processing.org/bugs/show_bug.cgi?id=102
_ odd error with some pixels from images not drawing properly
_   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1115681453
_ clipping not yet completely implemented
_   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1114184516
_ Stroking a rect() leaves off the upper right pixel
_   http://dev.processing.org/bugs/show_bug.cgi?id=501
_ clipping planes
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1058491568;start=0
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1052313604;start=0
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1095170607;start=0
_   things are flying into the camera and halting apps
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1042699742
_   NullPointerException apparently when things way offscreen
_     i.e. glyphrot with scale set to 4
_     or at least that things get ridiculously slow
_     clipping issues here.. but also something in scan converter
_     not clipping areas from offscreen
_       huge geometry slows things way down
_ box is not opaque
_   problem is that lines are drawn second
_   one pixel lines have no z value.. argh
_   bug re: 3d depth sorting on lines
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1043894019;start=0
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1042004618
_   translate(58, 48, 0); 
_   rotateY(0.5);
_   box(40);


CORE / PImage

_ improve blend() accuracy when using ADD
_   http://dev.processing.org/bugs/show_bug.cgi?id=1008
_   includes code for a slow but more accurate mode
_ for a PGraphics2D, should its image cache object be the memoryimagesource?
_ loading lots of images is a problem, describe how to unload
_   is it possible? necessary to call delay(5) or something?
_ 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://dev.processing.org/bugs/show_bug.cgi?id=356
_ add ability to control jpeg compression level with save() and saveFrame()
_   or just write a better example for this one?
_   http://dev.processing.org/bugs/show_bug.cgi?id=342
_ when drawing an image, sense whether drawn rotated
_   specifically, if drawn rotated 90 in either direction, or 180
_   if just rotate/translate, then can use SCREEN_SPACE for fonts
_ updatePixels() is slow to create a BufferedImage
_   therefore the incomplete rendering
_   could this be an issue fixed by a MediaTracker?


CORE / PShape

_ 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

_ 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
_ get entity tags working in xml library
_ try enabling blending modes
_ 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
_ implement A and a (elliptical arcs)
_   http://dev.processing.org/bugs/show_bug.cgi?id=996
_ 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


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>
_ first line of applets is missing on java 1.4+ on the mac
_   http://dev.processing.org/bugs/show_bug.cgi?id=283
_ cursor() broken in applets on macosx?
_   or is it a java 1.4 versus java 1.3 problem?
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1081645955



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



LIBRARIES / PGraphicsOpenGL

_ switch to glWindowPos() instead of glRasterPos() silliness
_ implement setImpl() instead of set() inside PGraphicsOpenGL
_   http://dev.processing.org/bugs/show_bug.cgi?id=943
_ use glCopyPixels() or glReadPixels() instead of copy() method
_   http://dev.processing.org/bugs/show_bug.cgi?id=941
_ implement a more efficient version of blend()
_   http://dev.processing.org/bugs/show_bug.cgi?id=942
_ copy() does not update the screen with OpenGL
_   http://dev.processing.org/bugs/show_bug.cgi?id=933
_ set() requires updatePixels() with OpenGL
_   http://dev.processing.org/bugs/show_bug.cgi?id=705
_ first few frames of OpenGL sketches on Windows run slowly
_   http://dev.processing.org/bugs/show_bug.cgi?id=874
_ updatePixels wth OpenGL requires a lot of memory, need better texture update
_   http://dev.processing.org/bugs/show_bug.cgi?id=610
_ with opengl optimizations via call lists..
_   watch out to make sure raw recording still works
_   (optimizations will have to be disabled to some extent)
_ look into using glu quadrics to handle shape geometries quickly
_ optimizations to opengl
_   disabling error reporting (what's taking it so long?)
_     maybe use a hint() to enable it? or a getError() function?
_   make cached display list of filled/non-filled ellipse.. rect.. etc
_     these don't work when the vertex colors change, but..
_   http://dev.processing.org/bugs/show_bug.cgi?id=657
_   or maybe should be using vertex arrays?
_ maybe break out a separate timage object in textures?
_   needs tindex and tbuffer, both gl specific
_     and for tpixels and twidth/theight, could use another PImage
_   under assumption that most will just need an extra image object
_   this could also be used by people eventually to control tex themselves
_   or maybe call the object "texture"?
_   in opengl lib, need beginTexture(PImage) and endTexture()
_   this will be helpful to have access to the raw texture data
_   that way it can be re-bound by itself, and ppl can write directly to it
_ make textMode(SHAPE) faster in opengl
_   cache for type should be per-renderer
_   make the opengl textmode shape stuff get better and use PShape
_   because opengl needs vectors, but also the image cache for textures
_ opengl needs to shut itself down properly when closing applet
_   otherwise can crash the whole browser
_ get rid of some of the sillier IntBuffer stuff where it's not needed
_   use the version of the prototypes that use an offset into the array
_   need to test performance either way
_ make a note about the anti-aliasing types in the faq
_   polygon vs line etc.. may want to enable lines but disable polys
_ invocationtargetexception in gl with aioobe:
_   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1115185737
_ resolve ARGB versus RGBA versus just A issues for fonts
_   make sure that current scenario works identically on mac
_   if so, just switch the image code to expect alpha in the high bits
_   fonts probably need to be RGBA, not ALPHA style images
_   there's nothing really ALPHA about them?
_ bit shifting in opengl, get down to 2 ops by using other image modes
_   i.e. ABGR_EXT might allow for just two shifts instead of 4
_ allow access to native pixel buffer in opengl and power of 2
_   so that no need to copy/update everything
_ how to handle gluTessVertex calls
_   need to re-map through the regular "vertex" command, 
_   but that makes things messy because the glu calls make calls to vertex()
_   and i don't want an additional "pathVertex()" function


LIBRARIES / PGraphicsPDF

_ pdf not rendering unicode with beginRecord()
_   http://dev.processing.org/bugs/show_bug.cgi?id=727



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


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
_ 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()
_ too much object creation in java2d
_   causes inconsistency/hiccups as the gc runs?
_ work through loadPixels in PImage, how consistent do we need to be?
_   with get() and set() methods, this gets really tricky (too slow)
_   could optimize by keeping a java image around, but table for later
_     it's too significant a change, and not enough time to test


LATER (post 1.0)

_ add getSketchSize() and getSketchRenderer()
_   these could simply have the defaults at the outset
_ opengl.jar with eclipse
_   auto-extract native libs from opengl.jar 
_   to remove java.library.path problems (!)
_ 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
_ implement method for lightweight components with processing applets
_   http://dev.processing.org/bugs/show_bug.cgi?id=686
_ Use getContextClassLoader() instead of Class.forName()
_   http://dev.processing.org/bugs/show_bug.cgi?id=514
_ 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)
X   look into javascript timers to see how they work
_   also add interval("functionname", 40)
_   and thread("functionname");
_   problem is that this will 
_ cmyk version of tiff encoder code?
_ because 'color' isn't a real data type
_   color(0, 0, 0, 0) produces black
_     because color(0, 0, 0, 0) creates an int that is simply '0'
_     although fill(0, 0, 0, 0) does the right thing
_     also, rgb255 not getting set
_     http://dev.processing.org/bugs/show_bug.cgi?id=382
_   should fill(c) instead be fillColor(c)?
_   should color(123, 4, 99) instead be createColor()?
_   gray that's greater than the colorMode() can produce strange colors
_     http://dev.processing.org/bugs/show_bug.cgi?id=432
_   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
_ illustrator export / rendering mode
_   also postscript or pdf export?
_   update illustrator code to use core api
_     even if not actually working properly.. just in naming of things
_   sorting of polygons/lines on simple painters algorithm
_   better lighting model to show darkness at various depths
_     maybe just ultra-high res bitmaps from gl
_ bspline or nurbs (later, want to do the 3D/arch stuff correctly)
_ cairo tesselation used: 
_   John Hobby, Practical Segment Intersection with Finite Precision Output. 
_   Computational Geometry Theory and Application, 13(4), 1999.
_   http://citeseer.ist.psu.edu/hobby93practical.html
_ color
_   rounding errors on color conversion
_   colorMode(RGB, 1.0); colorMode(255); println(red(color(0.5,1,1)));
_   will return 127, instead of 128.
_ curves
_   non-homogenous coloring for curve vertices
_ textMode(SHAPE) and textMode(IMAGE)?
_   textMode(SCREEN) is out of its league?
_ textMode(SHAPE) and hint(SMOOTHING) calls are really awkward
_   maybe need to add properties to the size() command?
_   or use a getXxxx() method?
_ should beginRecord inherit settings from its parent renderer?
_   textFont() is null on beginRecord
_   same would be the case for strokeWeight, background, etc.
_   http://dev.processing.org/bugs/show_bug.cgi?id=346
_ repeating texture support
_ exactly how should pixel filling work with single pixel strokes?
_   http://dev.processing.org/bugs/show_bug.cgi?id=1025
_ Writing XML files (clean up the API)
_   http://dev.processing.org/bugs/show_bug.cgi?id=964
