mirror of
https://github.com/processing/processing4.git
synced 2026-02-04 14:19:19 +01:00
803 lines
37 KiB
Plaintext
803 lines
37 KiB
Plaintext
1280 (4.0b5)
|
|
X replace japplemenubar with something that's more likely to work in the future
|
|
X https://github.com/processing/processing4/issues/221
|
|
o seems to be working fine; not sure, but have to roll with it for now
|
|
X breaks on aarch64
|
|
X https://github.com/processing/processing4/issues/372
|
|
_ rename jAppleMenuBar, make part of build process
|
|
|
|
|
|
macos-aarch64
|
|
_ jogl build for m1
|
|
_ https://github.com/processing/processing4/issues/128
|
|
_ https://forum.jogamp.org/JOGL-for-Mac-ARM-Silicon-td4040887.html
|
|
_ https://github.com/jzy3d/jogl/blob/feature/macosx-arm64/HOW-TO-ADD-ARM64-TO-2.4.md
|
|
|
|
_ concurrent StringDict et al
|
|
_ why no concurrent TreemMap? https://stackoverflow.com/a/17656453
|
|
_ https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentSkipListMap.html
|
|
|
|
_ how to handle fallback fonts
|
|
_ could implement this for the default, but also, SansSerif sucks
|
|
_ https://stackoverflow.com/a/9482676
|
|
_ in addition, it would need to be implemented for textWidth()
|
|
|
|
_ Better solution for frame/surface methods
|
|
_ should it be requestSize() because the change is not immediate?
|
|
_ do we need a windowResized() event?
|
|
_ https://github.com/processing/processing4/issues/53
|
|
_ windowTitle(), windowLocation(), windowSize()
|
|
_ windowResizable(), windowRatio()
|
|
_ setting surface size needs to happen outside draw()
|
|
_ surface.setSize() sadness etc
|
|
_ https://github.com/processing/processing4/issues/162
|
|
_ https://github.com/processing/processing4/issues/186
|
|
_ https://github.com/processing/processing/issues/4129
|
|
_ same goes for window resize events: queue them for when it's safe
|
|
_ also probably need to be extending the display with the background color
|
|
_ so that it's not neither stretching the viewport temporarily
|
|
_ or leaving a gap at the edge of the window
|
|
_ why does GL flash red when resizing?
|
|
_ this may be because of gaps between EDT and updates
|
|
_ fixing the surface.setSize() issue may fix it
|
|
|
|
_ fullScreen() not working on a second display with P2D or P3D
|
|
_ https://github.com/processing/processing4/issues/352
|
|
|
|
_ update P2D reference to make clear about drawing order and quality
|
|
_ https://github.com/processing/processing/issues/5880
|
|
|
|
|
|
load/save image
|
|
_ https://github.com/processing/processing4/wiki/Exorcising-AWT
|
|
_ moving loadImage() into Surface
|
|
_ https://github.com/processing/processing4/issues/56
|
|
_ other PImage save implementations
|
|
_ https://github.com/processing/processing4/pull/97
|
|
_ https://github.com/processing/processing4/pull/98
|
|
|
|
|
|
noted by Casey
|
|
_ Sketches on Windows/Linux don't take UI sizing into account
|
|
_ https://github.com/processing/processing/issues/4894
|
|
_ https://github.com/processing/processing/issues/4895
|
|
_ https://github.com/processing/processing/issues/4897
|
|
|
|
|
|
api changes
|
|
_ add callbacks to requestImage() and others
|
|
_ new FloatList(float...)
|
|
|
|
|
|
api todo
|
|
_ Surface not available inside handleSettings()
|
|
_ therefore impossible to get displays, displayWidth/Height, and pixelDensity
|
|
_ should surface be set on command line?
|
|
_ or can we just require that size() goes first, and inits surface *type* w/o sizes
|
|
_ or even that it inits a surface-specific class for getting that info
|
|
_ implement selectInput/Output/Folder methods in PSurfaceJOGL
|
|
_ implement openLink() in PSurfaceJOGL
|
|
|
|
|
|
before final release
|
|
_ Warn users or provide auto-fix when `frame` is used in a sketch
|
|
_ https://github.com/processing/processing4/issues/59
|
|
_ ThinkDifferent unavailable with --disable-awt, needs workaround
|
|
_ https://github.com/processing/processing4/issues/52
|
|
_ Remove frame from PApplet
|
|
_ https://github.com/processing/processing4/issues/54
|
|
_ Remove all usage of AWT from PApplet
|
|
X https://github.com/processing/processing4/issues/55
|
|
_ https://github.com/codeanticode/processing-lwjgl/wiki#making-awt-optional-in-papplet
|
|
_ https://github.com/processing/processing4/issues/57
|
|
_ move loadImage() into surface
|
|
_ move AWT code out of PImage, and into its own PImageJava2D class
|
|
_ https://github.com/processing/processing4/issues/56
|
|
|
|
|
|
high-ish
|
|
_ add separator option to loadTable()
|
|
_ https://github.com/processing/processing/issues/5068
|
|
_ make setting the window icon automatic, based on files in local dirs
|
|
X https://github.com/processing/processing/issues/5123
|
|
X https://github.com/processing/processing/pull/5202
|
|
_ need to make this work behind the scenes instead
|
|
_ create icon.png or have an 'icons' folder with multiple sizes
|
|
_ don't override the window icon w/ p5 logo if already set
|
|
_ NullPointerException at java.awt.Window.init(Window.java:497) when using Airplay
|
|
_ https://github.com/processing/processing/issues/5620
|
|
_ try to catch the NPE and warn the user about what's happening
|
|
_ requestSize() and xxxxTitle() (to diminish use of 'surface')
|
|
_ mostly held up by cross-renderer inconsistency with these
|
|
_ textAlign(CENTER) and pixelDensity(2) aligning incorrectly with Java2D
|
|
_ https://github.com/processing/processing/issues/4020
|
|
_ calling textSize() fixes it, only hpapens with the default font
|
|
_ incorrect textWidth() with pixelDensity(2) when textFont() not used
|
|
_ https://github.com/processing/processing/issues/5768
|
|
_ use exit event to set mouseY to 0 on macOS
|
|
_ https://github.com/processing/processing/pull/5796/files
|
|
_ y coords on macOS seem to be one pixel off
|
|
|
|
|
|
retina/hi-dpi/sizing
|
|
_ notes from jetbrains
|
|
_ https://intellij-support.jetbrains.com/hc/en-us/articles/360007994999-HiDPI-configuration
|
|
_ implement sketch scaling into PApplet
|
|
_ https://github.com/processing/processing/issues/4897
|
|
_ Sketches on Windows don't take UI sizing into account
|
|
_ https://github.com/processing/processing/issues/4894
|
|
_ Sketches on Linux don't take UI scaling into account
|
|
_ https://github.com/processing/processing/issues/4895
|
|
_ gohai says "xrdb -query" or "xdpyinfo" might work
|
|
_ should fullScreen() set width and height to displayWidth/Height
|
|
_ or is that being set/unset used for any state info?
|
|
_ 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
|
|
|
|
|
|
possible additions for 4.x?
|
|
_ Add support for floating point textures to OpenGL (using a hint?)
|
|
_ https://github.com/processing/processing/issues/3321
|
|
_ Friendly Names for new Sketches (includes UI for switching it back)
|
|
_ https://github.com/processing/processing/pull/6048
|
|
|
|
|
|
misc
|
|
_ should we drop the 'default' prefix from the ex handler so it's not static?
|
|
_ http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.html
|
|
_ Switch to getModifiersEx() and fix the AWT modifiers used in PSurfaceAWT
|
|
_ this is an easy fix, but need to check impact elsewhere
|
|
_ does anything else rely on these modifiers?
|
|
_ 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
|
|
_ sketch placement (window insets) not properly set on Linux
|
|
_ https://github.com/processing/processing/issues/2063
|
|
_ note in docs that full screen and present are now different
|
|
_ on Export to Application, this has an impact
|
|
_ SVG only exports last frame
|
|
_ possibly because Java2D is disposing the Graphics2D in between?
|
|
_ https://github.com/processing/processing/issues/3753
|
|
_ when calling exit(), if sketch has halted w/ exception, force the quit
|
|
_ otherwise have to double-quit with cmd-q on OS X
|
|
_ simple test case: using size() inside setup() from Eclipse
|
|
|
|
|
|
data
|
|
_ implement strip(), lstrip(), rstrip?
|
|
_ 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
|
|
|
|
|
|
additions
|
|
_ async calls for selectInput/Output/Folder
|
|
_ now that we have saner syntax with new preproc, we can do Runnable
|
|
_ 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
|
|
_ how to handle the touch api
|
|
_ 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()?
|
|
_ touch event doesn't make sense for mouseMove on desktop, hover on Android
|
|
_ probably go with pointer: more universal for touch/mouse
|
|
_ size() function that scales to screen, keeps aspect, re-scales mouse coords
|
|
|
|
|
|
discussion/decisions
|
|
_ add screen(PVector), model(PVector) and world(PVector)?
|
|
_ maybe screenVec()? or screenXYZ()?
|
|
_ drawThread()
|
|
_ 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.
|
|
_ though it might be useful for tacking the result of thread() on at the end of draw()
|
|
_ 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
|
|
_ 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
|
|
_ 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)
|
|
_ 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
|
|
_ 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
|
|
_ https://github.com/processing/processing/issues/222
|
|
_ 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?
|
|
_ add notes about the new shader setup
|
|
_ add reference/docs for urlEncode() and urlDecode()
|
|
_ 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 requestFocus() method to PApplet (or surface?)
|
|
_ 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
|
|
_ discussion from Jakub in the report
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
_ https://github.com/processing/processing/issues/675
|
|
_ noticed that dispose() is getting called. stop() isn't.
|
|
_ http://java.sun.com/docs/books/tutorial/deployment/applet/lifeCycle.html
|
|
_ 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?
|
|
_ when closing a sketch via the close box, make sure stop() getting called
|
|
_ 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?
|
|
_ noloop ref even says that redraw will be called on resize, make sure it is
|
|
_ focus not coming through, ESC no longer working(?)
|
|
_ 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?
|
|
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
|
|
|
|
|
|
CORE / PFont and text()
|
|
|
|
_ 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
|
|
_ when doing createFont, can we add it to the os fonts available?
|
|
_ font rotation (native font problem?) with natives?
|
|
_ https://github.com/processing/processing/issues/731
|
|
_ Text rotation, placement and font metrics incorrect when scaled
|
|
_ https://github.com/processing/processing/issues/2167
|
|
_ 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...
|
|
_ https://github.com/processing/processing/issues/787
|
|
_ text position is quantized in JAVA2D
|
|
_ text placement is ugly, seems like fractional metrics problem
|
|
_ https://github.com/processing/processing/issues/138
|
|
_ 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
|
|
_ 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?
|
|
_ deprecate the blend() function
|
|
_ move blending calculations from PImage into PGraphics
|
|
_ tricky because that means moving blend_resize() as well
|
|
_ and should that live in PGraphics or be its own class or ??
|
|
_ implement unified means to specify smoothing level for image scaling
|
|
_ https://github.com/processing/processing/issues/204
|
|
|
|
|
|
CORE / PGraphics
|
|
|
|
_ 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)
|
|
|
|
|
|
CORE / PShape
|
|
|
|
_ TRIANGLE_STRIP not working correctly with createShape() and default renderer
|
|
_ https://github.com/processing/processing/issues/4678
|
|
_ 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);
|
|
_ 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
|
|
_ 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)
|
|
_ https://github.com/processing/processing/issues/174
|
|
_ 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
|
|
_ https://github.com/processing/processing/issues/1180
|
|
_ 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
|
|
_ 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
|
|
_ https://github.com/processing/processing/issues/1596
|
|
|
|
|
|
|
|
OPENGL / Known Issues
|
|
|
|
_ window must close when using file dialogs with OpenGL on Windows
|
|
_ https://github.com/processing/processing/issues/3831
|
|
_ window loses focus after maximizing
|
|
_ https://github.com/processing/processing/issues/3339
|
|
|
|
|
|
OPENGL / Questions
|
|
|
|
_ option to disable OpenGL ES on Linux?
|
|
_ https://github.com/processing/processing/issues/4584
|
|
_ 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()
|
|
|
|
|
|
OPENGL / Andres
|
|
|
|
_ textureWrap(CLAMP / REPEAT)
|
|
_ 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?)
|
|
_ remove matrixMode(), add a projection() method
|
|
_ 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
|
|
|
|
|
|
LIBRARIES / PDF
|
|
|
|
_ tint() not working in PDF (regression between 2.0.3 and 2.1)
|
|
_ https://github.com/processing/processing/issues/2428
|
|
_ Implement blendMode() for PDF
|
|
_ https://github.com/processing/processing/issues/5438
|
|
_ 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)
|
|
|
|
_ 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
|
|
_ 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?
|