0218 core (2.0b10 or 2.0) before 2.0 _ PImage.loadPixels() shouldn't be calling out to the renderer _ setting image.parent = null for it makes it work again for get().save() case _ PShape should be cached as well _ add options for image.save() (or saveImage?) _ add quality=[0,1] for jpeg images _ add dpi=[0,n] for for png images high _ draw() called again before finishing on OS X (retina issue) _ https://github.com/processing/processing/issues/1709 _ Linux sometimes not responding correctly w/ the size() command _ https://github.com/processing/processing/issues/1672 _ 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 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? data _ 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?) andres _ P2D/P3D sketches don't get focus until clicked _ also problem for Java2D when canvas is used? _ need to standardize canvas handling _ https://github.com/processing/processing/issues/1700 _ warning message present _ Deleted 1 texture objects, 0 remaining _ shader syntax (Andres request) _ might also need a define inside the shader to control what type it is shape _ 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 stop() mess _ 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? api to be fixed/removed _ remove PImage.delete() and friends from PImage, Movie, etc. _ delete()/dispose() being used in the movie _ buffer sink methods in movie _ 'newFrame' is 'available', and ready() is part of that _ splice() throws ClassCastException when used with objects like PVector _ http://code.google.com/p/processing/issues/detail?id=1407 _ deprecate the older splice() etc API inside PApplet? _ 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) docs (2.0) _ add notes about the new shader setup _ online is there but deprecated _ doesn't test net connection to see if 'online' _ only tests whether running inside an applet viewer (not relevant) _ remove 'online' from the docs _ createGraphics() with no renderer param to point to JAVA2D _ docs: P2D and P3D are now OpenGL variations _ shader support - make decisions, Andres email, etc _ setAntiAlias() should instead just use parent.smooth _ antialias -> smoothMode(), smoothQuality(), quality() _ NEAREST, BILINEAR, BICUBIC, or 0, 2, 4? (need 8x too, so maybe numbers) _ final decision on pg.setQuality(sketchQuality()) _ should probably be setQuality(parent.sketchQuality()) _ 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) _ fix regex documentation (assigned to Shiffman) _ http://code.google.com/p/processing/issues/detail?id=169 _ OpenGL offscreen requires primary surface to be OpenGL _ explain the new PGL interface _ can't really change the smoothing/options on offscreen _ is this still true? 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 _ move requestFocusInWindow() to safter EDT place _ 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) _ 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? _ finish adding loadStrings(BufferedReader) _ decide if we want to keep this (and/or others?) _ port to android _ 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 2.0 _ 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. _ PVector chaining -> Dan looking into this _ PNode.getChildren() shouldn't make a new array.. toArray() can do that _ toArray(), toArray(float[]), toVectorArray(), toVectorArray(PVector[]) _ toColorArray(), toColorArray(float[])... _ load/save methods.. is it save("blah.svg") or saveSVG("blah.svg") X also works that way with tables X decision: useExtension() or something like that _ require people to put things in the data folder _ 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? _ PShape API to handle internal vertex stuff _ add deconstruct() method for paths _ toArray() and toVector() _ setVertex(0, x, y), setVertex(0, x, y, z) _ how much of com.benfry.* should go in? _ Table? StringIntPairs? JSON? MD5? Integrator? ColorIntegrator? _ decision: depends on if we can think of a good name _ if PShape3D, then is it PShape2D? or do you handle both the same? _ svg fonts _ would be nifty if we could convert on the fly to ttf for speed... _ http://code.google.com/p/processing/issues/detail?id=748 _ check on DXFWriter, since it used to subclass P3D _ at least implement is3D? _ sleep time needs to be set *much* higher for dormant applets _ 10s should be fine--no need to keep spinning (bad for android too) _ just call interrupt() when it's time to get back to work _ add methods to PShape to apply all transformations in the tree _ need to clean up the hints in the reference/source vector _ PVector discussion with Dan _ jer and dan will look at their code, plus toxiclibs _ modify PVector to include better methods for chaining operations _ http://code.google.com/p/processing/issues/detail?id=218 _ add screen(PVector), model(PVector) and world(PVector)? _ maybe screenVec()? or screenXYZ()? decisions to make _ possible addition for 'implementation' variable _ http://code.google.com/p/processing/issues/detail?id=281 _ should map() actually constrain to the low and high values? _ or have an alternate version that does that? (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 _ add shuffle methods for arrays _ http://code.google.com/p/processing/issues/detail?id=229 _ 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 _ new PGraphics(... OutputStream) _ http://code.google.com/p/processing/issues/detail?id=246 _ 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 //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// 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 font support seems nice.. add PFontSVG _ font rotation (native font problem?) with natives? _ http://code.google.com/p/processing/issues/detail?id=692 _ 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 _ 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 _ 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 A and a (elliptical arcs) _ http://code.google.com/p/processing/issues/detail?id=130 _ implement support for SVG gradients from Inkscape _ http://code.google.com/p/processing/issues/detail?id=1142 _ need to handle _ -Xdock:icon= CORE / Events _ 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 / PGraphicsPDF _ pdf not rendering unicode with beginRecord() _ http://code.google.com/p/processing/issues/detail?id=90 _ 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 //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// 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 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? _ async requests _ 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() _ http://code.google.com/p/processing/issues/detail?id=641 _ remove/update requestImage example