User:Minooz/OSD600/processing

From CDOT Wiki
< User:Minooz‎ | OSD600
Revision as of 16:41, 20 April 2011 by Minooz (talk | contribs) (Release 0.3)
Jump to: navigation, search

OSD600 - PROCESSING

processing.js
Source Control: git
BugTracker: Lighthouse
Blog: @ wordpress

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.
  • Related Tickets
1058- 450
  • 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.
  • 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
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.

Pjs background.png - Chrome with green background for window
Pjs background ff.png - 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.

Pjs-ff.png

  • 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

Others

Did couple of automated ref tests for processing

info @ type with me
ref tests needed [2]
Examples [3]
Processing - helper [4]