Difference between revisions of "User:Minooz/OSD600/processing"
< User:Minooz | OSD600
(→Release 0.3) |
(→Release 0.3) |
||
(63 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | ='''PROCESSING''' | + | ='''OSD600 - PROCESSING'''= |
− | |||
− | |||
:[http://processingjs.org/ processing.js] | :[http://processingjs.org/ processing.js] | ||
:Source Control: git | :Source Control: git | ||
:BugTracker: [https://processing-js.lighthouseapp.com/projects/41284-processingjs Lighthouse] | :BugTracker: [https://processing-js.lighthouseapp.com/projects/41284-processingjs Lighthouse] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | ------------------------ | ||
+ | == Release 0.1== | ||
+ | * '''Bugs''' | ||
+ | : Add ''parseBoolean'' function. Ticket @[https://processing-js.lighthouseapp.com/projects/41284/tickets/448-code-parseboolean lighthouse] | ||
+ | :: A missing feature from Processing (Java). Convert a char, a integer, a string, an array into a boolean. | ||
+ | *'''Blogs''' | ||
+ | : [http://minooz.wordpress.com/2011/01/31/still-working-on-make-on-msysgit/ 1] - [http://minooz.wordpress.com/2011/02/08/parseboolean-bug-from-processing-js/ 2] - [http://minooz.wordpress.com/2011/02/08/parseboolean-second-update-for-tonight/ 3] | ||
+ | * '''Related Tickets''' | ||
+ | : [https://processing-js.lighthouseapp.com/projects/41284/tickets/1058-rename-int-boolean-etc-to-parseint-parseboolean-etc 1058]- [https://processing-js.lighthouseapp.com/projects/41284/tickets/450-parsechar 450] | ||
+ | * '''How To make''' | ||
+ | : Introduction to how to run tests and make @ [https://processing-js.lighthouseapp.com/projects/41284/writing-automated-tests lighthouse] | ||
+ | : Brief info in my [http://minooz.wordpress.com/2011/02/01/make-worked/ blog] | ||
+ | : Run the terminal as you want to bill firefox: mozilla-build -> start-msvcxxx.bat | ||
+ | : Create a .profile file in the user account -> user/name | ||
+ | : Export the path to js -> export JSSHELL=/PATH/TO/mozilla-central/objdir-ff-release/dist/bin/js | ||
+ | ------------------- | ||
+ | == Release 0.3== | ||
+ | * '''Bugs''' | ||
+ | : Fix transparency in <TT>copy()</TT> function. Ticket @[https://processing-js.lighthouseapp.com/projects/41284/tickets/1055-copy-doesnt-handle-transparency-properly lighthouse]- When using copy() on an image with transparency, the transparency overwrites the background color. See the screenshots to compare against p5. The image is a red splatter with transparent background and the background is green. | ||
+ | *'''Blogs''' | ||
+ | : [http://minooz.wordpress.com/2011/03/22/working-on-copying-image-in-processing-js/ 1] - [http://minooz.wordpress.com/2011/03/31/continuing-with-copy-of-image-on-processing-js/ 2] - [http://minooz.wordpress.com/2011/04/06/once-upon-a-time-punch-cards/ 3] | ||
+ | * '''Related Tickets''' | ||
+ | : Ticket I filed for p5 while working on this ticket. [http://code.google.com/p/processing/issues/detail?id=594#makechanges #594] -[http://code.google.com/p/processing/issues/detail?id=601 #601] | ||
+ | : Other pjs tickets related to this one: [https://processing-js.lighthouseapp.com/projects/41284/tickets/1174-mandelbrot-and-histogram-ref-tests-are-failing #1174]- [https://processing-js.lighthouseapp.com/projects/41284/tickets/860-color-0-burns-through-non-transparent-background #860]-[https://processing-js.lighthouseapp.com/projects/41284/tickets/948-negative-opacity-values-give-incorrect-results #948] | ||
+ | * '''Issues''' | ||
+ | : On the way to fix this bug, I tried to compare it with how p5 handles this. | ||
+ | : To work with p5 code, I cloned it from [http://code.google.com/p/processing/source/browse/trunk/ here] with the latest instructions at the bottom of [http://code.google.com/p/processing/wiki/BuildInstructions this page]. | ||
+ | : Then I started to debug it on eclipse, with these [http://processing.org/learning/eclipse/ instructions]. | ||
+ | : The result that I'm getting for the pixels from both p5 and pjs are the same. [[User:Minooz/OSD600/processing/pixels | Here]] is a sample of these results. | ||
+ | : I thought it might be something with some charactersitics of pixels in p5 e.g. ''fillAlpha'', ''calcAlpha'',... for which I couldn't find any correspondent in pjs so far. | ||
+ | : Those characteristics where changed in ''pGraphics.java'': | ||
+ | :: several instances of: line 5302: <pre> calcAlpha = (calcAi != 255); // changed to check for equality to 255</pre> | ||
+ | : Since the pixels were the same, seems like p5 has some difference in setting that shows the first underneath layer which is the background pixels in case of transparency of image. But browsers react differently. They display the pixels of window. | ||
+ | : The other strange issue was that chrome displays actually the color of the window as is defined in ''bgcolor'' whereas firefox just fills the transparent pixels with black color. | ||
+ | [[Image: pjs_background.png|70px ]] - Chrome with green background for window <br/> | ||
+ | [[Image: pjs_background_ff.png|70px ]] - firefox with green background for window | ||
+ | *''' Final Solution''' | ||
+ | : So, we got nowhere in comparing these 2 together, so we decided to go around it and solve it with modifying REPLACE mode in blit_resize(): | ||
+ | <source lang="java"> | ||
+ | if (img.format !== PConstants.RGB && destPixels[(destOffset + x) * 4] !== 255) { | ||
+ | destColor = p.color.toArray(p.modes.blend(destColor, p.filter_bilinear())); | ||
+ | } else { | ||
+ | destColor = p.color.toArray(p.filter_bilinear()); | ||
+ | } | ||
+ | </source> | ||
+ | : The way it works, if the image format is RGB, that means, there is no transparency for any of pixels anyways, so it would continue as normal. If the format is ARGB, it'll check if there is any alpha that is 255, if yes, again the normal flow, if not, it will call the BLEND mode function, to blend the pixels with background. | ||
+ | [[Image: pjs-ff.png|70px ]] | ||
− | p5 [[ | + | * '''Helpful tips''' |
+ | : From [http://processingjs.org/reference/loadImage_ processingjs.org] DOM security will not allow you to load images file:/// URIs. This security can be overridden in Firefox in about:config, by changing security.fileuri.strict_origin_policy to false. Otherwise use | ||
+ | :<code>/* @pjs preload="img.jpg"; */</code> | ||
+ | :[http://en.wikipedia.org/wiki/Alpha_compositing alpha channel] | ||
+ | : p5 [http://code.google.com/p/processing/source/browse/trunk/ trunk] | ||
+ | : p5 [http://code.google.com/p/processing/source/browse/trunk/processing/core/src/processing/core/PImage.java java] PImage.java | ||
+ | : how to build the processing (java) [http://code.google.com/p/processing/wiki/BuildInstructions] | ||
+ | : processing on [http://www.processing.org/learning/eclipse/ Eclipse] | ||
+ | : processing [http://wiki.processing.org/w/Eclipse_Plug_In eclipse_plugin] | ||
+ | : reported a p5 bug [http://code.google.com/p/processing/issues/detail?id=594 594] | ||
+ | : [http://typewith.me/jQ6nHnVdHG type with me] | ||
+ | :[ http://code.google.com/p/processing/wiki/ToolTemplate tool-template processing] | ||
− | + | --------------------------------------------------------------- | |
− | |||
− | + | == Others == | |
− | : | + | Did couple of automated ref tests for processing |
+ | : info @ [http://typewith.me/4EOiLyY39f type with me] | ||
+ | : ref tests needed [https://processing-js.lighthouseapp.com/projects/41284/tickets/1150-cleanup-the-examples-folder#ticket-1150] | ||
+ | : Examples [http://scotland.proximity.on.ca/dxr/tmp/processing-js/examples/seneca/] | ||
+ | : Processing - helper [http://scotland.proximity.on.ca/dxr/tmp/processing-js/tools/processing-helper.html] |
Latest revision as of 10:40, 26 October 2011
OSD600 - PROCESSING
- processing.js
- Source Control: git
- BugTracker: Lighthouse
Release 0.1
- Bugs
- Add parseBoolean function. Ticket @lighthouse
- A missing feature from Processing (Java). Convert a char, a integer, a string, an array into a boolean.
- Blogs
- Related Tickets
- How To make
- Introduction to how to run tests and make @ lighthouse
- Brief info in my blog
- Run the terminal as you want to bill firefox: mozilla-build -> start-msvcxxx.bat
- Create a .profile file in the user account -> user/name
- Export the path to js -> export JSSHELL=/PATH/TO/mozilla-central/objdir-ff-release/dist/bin/js
Release 0.3
- Bugs
- Fix transparency in copy() function. Ticket @lighthouse- When using copy() on an image with transparency, the transparency overwrites the background color. See the screenshots to compare against p5. The image is a red splatter with transparent background and the background is green.
- Blogs
- Related Tickets
- Ticket I filed for p5 while working on this ticket. #594 -#601
- Other pjs tickets related to this one: #1174- #860-#948
- Issues
- On the way to fix this bug, I tried to compare it with how p5 handles this.
- To work with p5 code, I cloned it from here with the latest instructions at the bottom of this page.
- Then I started to debug it on eclipse, with these instructions.
- The result that I'm getting for the pixels from both p5 and pjs are the same. Here is a sample of these results.
- I thought it might be something with some charactersitics of pixels in p5 e.g. fillAlpha, calcAlpha,... for which I couldn't find any correspondent in pjs so far.
- Those characteristics where changed in pGraphics.java:
- several instances of: line 5302:
calcAlpha = (calcAi != 255); // changed to check for equality to 255
- several instances of: line 5302:
- Since the pixels were the same, seems like p5 has some difference in setting that shows the first underneath layer which is the background pixels in case of transparency of image. But browsers react differently. They display the pixels of window.
- The other strange issue was that chrome displays actually the color of the window as is defined in bgcolor whereas firefox just fills the transparent pixels with black color.
- Chrome with green background for window
- firefox with green background for window
- Final Solution
- So, we got nowhere in comparing these 2 together, so we decided to go around it and solve it with modifying REPLACE mode in blit_resize():
if (img.format !== PConstants.RGB && destPixels[(destOffset + x) * 4] !== 255) {
destColor = p.color.toArray(p.modes.blend(destColor, p.filter_bilinear()));
} else {
destColor = p.color.toArray(p.filter_bilinear());
}
- The way it works, if the image format is RGB, that means, there is no transparency for any of pixels anyways, so it would continue as normal. If the format is ARGB, it'll check if there is any alpha that is 255, if yes, again the normal flow, if not, it will call the BLEND mode function, to blend the pixels with background.
- Helpful tips
- From processingjs.org DOM security will not allow you to load images file:/// URIs. This security can be overridden in Firefox in about:config, by changing security.fileuri.strict_origin_policy to false. Otherwise use
/* @pjs preload="img.jpg"; */
- alpha channel
- p5 trunk
- p5 java PImage.java
- how to build the processing (java) [1]
- processing on Eclipse
- processing eclipse_plugin
- reported a p5 bug 594
- type with me
- [ http://code.google.com/p/processing/wiki/ToolTemplate tool-template processing]
Others
Did couple of automated ref tests for processing
- info @ type with me
- ref tests needed [2]
- Examples [3]
- Processing - helper [4]