Education/Projects/ProcessingForTheWeb/Tasks: Difference between revisions
< Education | Projects | ProcessingForTheWeb
Jump to navigation
Jump to search
Line 135: | Line 135: | ||
| Difficult | | Difficult | ||
|- | |- | ||
| | | ambientLight() | ||
| | | colspan="4" | [http://processing-js.lighthouseapp.com/projects/41284/tickets/65-ambientlight See lighthouse ticket] | ||
| [http:// | |||
|- | |- | ||
| directionalLight() | | directionalLight() |
Revision as of 03:08, 30 November 2009
Summary
This page lists tasks to be done as part of the Processing For The Web project, in order to fully implement all of Processing in processing.js. The work is being led by David Humphrey and Al MacDonald, and done by students at Seneca College. You are welcome to join this work.
Task List
The following lists of Bugs, Features, and Functions was compiled by Al MacDonald.
Bugs
Bug | Description | Attachment/link | Difficulty |
---|---|---|---|
variable + space + semicolon | Defining a variable such as "float y ;" with a space between the number and the semicolon can cause regex parsing errors. | Difficult | |
// Comment | Using double slashed comments // at the end of any script will cause REGEX to loop on parsing, subsequently crashing browser. Quick solution is to add a blank line at the end of every script. | Difficult | |
mouseX & mouseY | mouseX and mouseY are returned as incorrect values when the canvas is a child of a relative element. | Medium | |
nf() | Using nf() on some numbers crashes FireFox. EG: String sf = nf(9.012, 3, 5); from http://processing.org/reference/color_datatype.html will not work. | dhodgin will look into this one, has an idea. also needs support for 3 args | Difficult |
keyCode, CODED, etc | Keyboard functions need fleshing out and cross-browser/cross-platform testing. | Medium | |
The Angel Bug | When the regex parse encounters strings with a comma in, it parses the word before the comma as a variable. Work around is to escape strings... String myString = “this \, is a string”; But that is in no way ideal. More info: http://hyper-metrix.com/processing-js/docs/?page=Angels%20Weep | Difficult | |
Table bug | Processing.js demos will not render if they are in a table. However any canvas demo does. | Table test | Undetermined |
Boolean array bug | Processing.js fails if an array of booleans is created with a variable defined before array. | Boolean array test | Undetermined |
Overloading function bug | Undetermined | ||
Drop frame system | A method to drop frames that are not drawn in time. This would be great for media-syncing if you want your app to stay in-time with audio and video. Not sure how plain-old JS timers will handle this... but it's worth testing | Medium | |
array.clone | looks like it only does a shallow copy and will cause issues with objects in an arrayList | dhodgin will look into this one and test | Unconfirmed |
Missing Features
This is a list of all the out-standing functions in the Processing.js implementation. A more detailed description of the unfinished functions can be found at: http://processingjs.org/reference. (Click “toggle all” to see the list.)
3D Features
Name | Description | Who's working on it. | STATUS | Difficulty |
---|---|---|---|---|
initialization | All the required code to get a 3D context ready for rendering. | asalga | Difficult | |
curve() | Need the 3rd dimension here. | asob,dliu53(2D)] | Difficult | |
box() | And here. | asob | Difficult | |
sphere() | And here... | asob | Difficult | |
sphereDetail() | Yep... lots of 3D needed. | Difficult | ||
rotateX() | Done the math. Not implemented in in Processing.js. See: http://hascanvas.com/Disco for example. | asob | Difficult | |
rotateY() | Done the math. Not implemented in in PJS. Superior code welcome. | asob | Difficult | |
rotateZ() | Done the math. Not implemented in in PJS. Superior code welcome. | asob | Difficult | |
ambientLight() | See lighthouse ticket | |||
directionalLight() | See lighthouse ticket | |||
lightFalloff() | See Lighthouse ticket | |||
lightSpecular() | See Lighthouse ticket | |||
lights() | See lighthouse ticket | |||
noLights() | See lighthouse ticket | |||
normal() | See lighthouse ticket | |||
pointLight() | See lighthouse ticket | |||
spotLight() | See lighthouse ticket | |||
beginCamera() | See lighthouse ticket | |||
camera() | See lighthouse ticket | |||
endCamera() | See lighthouse ticket | |||
frustrum() | See lighthouse ticket | |||
ortho() | see lighthouse ticket | |||
perspective() | See lighthouse ticket | |||
printCamera() | See lighthouse ticket | |||
printProjection() | See lighthouse ticket | |||
modelX() | See lighthouse ticket | |||
modelY() | See lighthouse ticket | |||
modelZ() | See lighthouse ticket | |||
screenX() | See lighthouse ticket | |||
screenY() | See lighthouse ticket | |||
screenZ() | See lighthouse ticket | |||
ambient() | See lighthouse ticket | |||
emissive() | See lighthouse ticket | |||
shininess() | See lighthouse ticket | |||
specular() | See lighthouse ticket | |||
scale() | See lighthouse ticket | |||
rotate() | See lighthouse ticket | |||
translate() | See lighthouse ticket | |||
hint() | See lighthouse ticket | |||
PVector | See lighthouse ticket |
Misc. Features
Name | Description | Who's working on it. | STATUS | Difficulty |
---|---|---|---|---|
delay() | Some exploration done... a couple of work-arounds found. A deeper look into this needed as the work-arounds did not function as expected in all situations due to the non-blocking nature of Javascript animation techniques. | Difficult | ||
popStyle() | Requested by Google Group. | mlam | Awaiting code review, | Difficult |
private | Worth the effort in Javascript? Maybe. | |||
pushStyle() | Requested by Google Group. | mlam | Awaiting code review, | Difficult |
cursor() | Some work finished and pushed to master. | asob | Medium | |
focused | andor | Easy | ||
noCursor() | asob | Easy | ||
online | Relevant in a Javascript environment? Perhaps. | MinyXO | finished | Easy |
screen | Could be useful to get window.innerHeight etc? | dhodgin | Easy | |
long | dhodgin | Medium | ||
Hashmap | MinyXO | Medium | ||
XMLElement | Renaud, Raph (COMETE) | Medium | ||
binary() | andor | Medium | ||
boolean() | mlam | Awaiting code review, | Easy | |
hex() | Tyrant911 | Easy | ||
unbinary() | Tyrant911 | Medium | ||
unhex() | dhodgin | finished, checked-in | Easy | |
join() | Tyrant911 | Easy | ||
match() | MinyXO | finished | Medium | |
matchAll() | Medium | |||
nfc() | dhodgin | finished | Easy | |
nfp() | Tyrant911 | Easy | ||
nfs() | dhodgin | finished, checked-in | Easy | |
trim() | MinyXO | finished | Easy | |
split() | MinyXO | finished | Easy | |
splitTokens() | MinyXO | finished | Easy | |
append() | MinyXO | finished | Easy | |
arrayCopy() | MinyXO | finished | Easy | |
concat() | Tyrant911 | Easy | ||
expand() | dhodgin | finished, checked-in | Easy | |
reverse() | Tyrant911 | Easy | ||
shorten() | andor | Easy | ||
sort() | andor | Easy | ||
splice() | andor | Easy | ||
subset() | andor | Easy | ||
PShape() | Started working on this myself (outside of PJS). Can parse most SVGs. A whole ton of quircks/bugs cross-browser that stop this in it's tracks in terms of a pure-implementation. Have been adding these to Apple, Opera, BugZilla as I go. More details if needed. | Difficult | ||
bezierDetail() | andor | Difficult (While the math may be easy enough, it would be nice to have the browser handle this at the machine code level. Help from Fx dev team, new functionality please)? | ||
bezierPoint() | andor | Difficult (While the math may be easy enough, it would be nice to have the browser handle this at the machine code level. Help from Fx dev team, new functionality please)? | ||
bezierTangent() | andor | Difficult (While the math may be easy enough, it would be nice to have the browser handle this at the machine code level. Help from Fx dev team, new functionality please)? | ||
curveDetail() | Difficult (While the math may be easy enough, it would be nice to have the browser handle this at the machine code level. Help from Fx dev team, new functionality please)? | |||
curvePoint() | Difficult (While the math may be easy enough, it would be nice to have the browser handle this at the machine code level. Help from Fx dev team, new functionality please)? | |||
curveTangent() | Difficult (While the math may be easy enough, it would be nice to have the browser handle this at the machine code level. Help from Fx dev team, new functionality please)? | |||
curveTightness() | Difficult (ALREADY IN PJS, BUT.... it would be nice to have the browser handle this at the machine code level. Help from Fx dev team, new functionality please)? | |||
noSmooth() | Possible/worth the processing with Canvas? Probably not. Feedback welcome. | Difficult (Another thing that would be nice if the Fx dev. team could provide this functionality) | ||
strokeCap() | mlam | Medium | ||
strokeJoin() | Medium | |||
texture() | Difficult | |||
textureMode() | Difficult | |||
loadShape() | SVG function. | Difficult | ||
shape() | SVG function. | Difficult | ||
shapeMode() | SVG function. | Difficult | ||
createInput() | Difficult | |||
loadBytes() | Started working on this. Can read binary from file with JS using someone else's open-source. Not added into Processing.js yet. | Medium | ||
open() | Impossible? | |||
selectFolder() | Impossible? | |||
selectInput() | Impossible? | |||
param() | Needed in JS? | Medium | ||
status() | Don't think Firefox will let you change status bar with JS re: security. NOTE: we can do this, but the user must set the dom.disable_window_status_change preference to false for it to show-up. | Medium? | ||
save() | Some work done by Google group. Could be combined with binary functions ot HTML5 functions to write directly to server? One idea would be to use the canvas.toDataUrl() (you can specify a graphic mime type) in order to get a string that could then be written to localStorage, keyed on the filename. | Difficult | ||
saveFrame() | As above in save(). Probably don't want to start saving TIFs in a web environment. Canvas exports png, gif, jpg natively already. Spec deviation from Processing proper may be wise. One idea would be to use the canvas.toDataUrl() (you can specify a graphic mime type) in order to get a string that could then be written to localStorage, keyed on the filename. | Difficult | ||
PrintWriter | Saves text to file. | Difficult | ||
beginRaw() | Difficult | |||
beginRecord() | Difficult | |||
createOutput() | Difficult | |||
createReader() | Difficult | |||
createWriter() | Difficult | |||
endRaw() | Difficult | |||
endRecord() | Difficult | |||
saveBytes() | A saveBytess does not exists in processing.js. It should be similar to saveStrings() | Tyrant911 | Difficult | |
saveStream() | Difficult | |||
saveStrings() | A saveStrings does not exists in processing.js. It will emulate saving to a file with localStorage *html5* stuff. (I added this to this list.) | Tyrant911 | Medium | |
loadStrings() | A loadStrings already exists in processing.js but it only accepts URL's so i'm going to add functionality so I can work with localStorage | Tyrant911 | Medium | |
loadBytes() | A loadBytess does not exists in processing.js. It should be similar to loadStrings() (I added this to this list.) | Tyrant911 | Medium | |
selectOutput() | Difficult | |||
applyMatrix() | Difficult ( could return glMultMatrix()? ) | |||
printMatrix() | Medium | |||
resetMatrix() | andor | Medium | ||
blendColor() | dhodgin | Medium | ||
brightness() | dliu53 | Medium | ||
hue() | dliu53 | Medium | ||
saturation() | dliu53 | Medium | ||
PImage() | Pimage is in the library but it would be great to get PJS loading the images into the DOM dynamically. This is also a fairly common request on the Google group. | annasob | Medium | |
imageMode() | MinyXO | Medium | ||
noTint() | MinyXO | Medium | ||
requestImage() | No sure if this is actually needed in JS as DOM image would load async anyway. Probably worth looking into a little more. | Medium | ||
blend() | dhodgin | Medium | ||
copy() | dhodgin | Medium | ||
filter() | dhodgin | Medium | ||
PGraphics | Could be worth-while to get PGraphics to use a separate canvas and getPixels() from it. Great for say... animating the mouth moving on one canvas before applying the result to a UV map for a 3D object. | Medium-Difficult | ||
Would this offer any performance/feature reward over using a reagular Javascript 1 dimensional array containing pixels? | ||||
PFont | Already working. The existing routines will likely get either a) merged with PShape's SVG functions or b) dropped in favor of something faster re: real browser fonts if we can borrow a little time from Mozilla developers. (We are currently using SVGs.) | Difficult (Fx dev. & talk to Bespin guys) | ||
PVector | 2D...3D vector should be returned. | medel | Implemented but still needs work. | Difficult |
exp() | dhodgin | finished | Easy | |
log() | dhodgin | finished | Easy | |
mag() | andor | Easy | ||
map() | dhodgin | Easy | ||
acos() | dhodgin | finished | Easy | |
asin() | dhodgin | finished | Easy | |
atan() | dhodgin | finished | Easy |