Hi Lucas,

I'm glad someone else has some interest in pushing piccolo2d in that
direction.

You may want to take a look at the source code in the repo there's an
entire branch dedicated to doing pretty much what you're talking
about: http://code.google.com/p/piccolo2d/source/browse#svn/piccolo2d.js/trunk

You may also want to see it in action at http://www.machete.ca/piccolo2d.js/

I'd love to collaborate on pushing it forward.

Let me know,

Allain Lalonde

On May 4, 3:32 pm, lucasjordan <lucasjor...@gmail.com> wrote:
> I seem to have started down a possibly foolish path and I wanted to
> get some feedback. I have started porting Piccolo to the new HTML5
> Canvas API. Mind you I am only a few hours into this, but here are my
> thoughts up to this point.
>
> After reviewing the Canvas API I noticed that it is rather similar to
> Graphics2D, which makes sense since it is solving a similar problem;
> writing raster graphics. I have not had the chance to do a feature by
> feature comparison, so there is probably something missing which will
> bit me down the road.
>
> After looking at the implementation of a number of the PNode
> subclasses, it looked to me like a number of them could use Canvas to
> accomplish at least a similar visual effect. Things like PImage and
> PPath looks like they should work and hopefully PText will work as
> well. I suspect PHtmlView will never work, but maybe that's ok.
>
> Basically I am using GWT to take as much of the Java Code from
> Piccolo2D  and use the project gwt-canvas to provide the Graphics2D
> type functionality. Since Piccolo depends so heavily on java.awt and
> java.awt.geom and the awt packages are not supported in GWT I am
> including a copy of those source files in the GWT project. For
> example, Piccolo depends on java.awt.Rectangle, so I copy the existing
> Rectangle class to a java.gwt.Rectangle and simply change the import
> statement in the Piccolo code.
>
> Copying the awt classes looks like it is going to work in general but
> there are few problems which have shown themselves. First, most of the
> geometry type classes (Rectangle2D, Point2D, etc) only depend on them
> selves and java.lang.Math, so this makes them viable classes to be
> used with GWT, but some of them depends on internal sun.java.bla.bla.*
> classes, which I don't currently have the source code for. The second
> problem as I have not had a chance to review the legal issue in
> reusing Oracle's code in this way. I has occurred to me I might have
> better luck taking the code from Apache's project harmony, but again I
> have not gotten that far. For that matter I am not sure about altering
> the Piccolo2D code either.
>
> It is my intention to make all of the work I am going here as free as
> possible, so if someone has some experience with this, helping me make
> sure that everyone's licenses are being properly honored, please let
> me know.
>
> Another concern of mine is that Piccolo does a lot more than just draw
> a scene, it also provides node picking and other input events, I am
> not sure how well that is going to work. A HTML5 Canvas element is
> able to receive mouse and keyboard events, I just don't know if those
> will be descriptive enough work with the existing Piccolo APIs.
>
> Another issue is that JavaScript (which GWT code ultimately becomes)
> does not support a double precision floating point values. GWT allows
> you to use Java doubles in your code, but behind the scene they are
> actually using two single precision float values to store the data and
> they do some magic to manage those values for you. It is stated in the
> GWT docs that this includes some overhead. So, since I am basically
> copying all of the awt classes, I could just turn every double into a
> float and then do the same to the piccolo code.... I have not started
> doing this, but this is another topic I would like some feedback on.
>
> So those are basically my technical concerns up to this point. But you
> might be asking, "why are you doing this?" and basically it comes down
> creating a cross platform scene graph API. I have worked with Piccolo
> in the past and know that it is a solid scene graph API. I have also
> worked a lot with JavaFX and know that that brings an excellent scene
> graph API as well, plus it has properties and value binding, it is a
> real pleasure to work with. But both of these APIs are dependent on
> the presence of a modern JVM and frankly I don't see a real JVM
> showing up on the devices I want to develop for. But on all of the
> devices I want to developer for there is HTML5 compliant browser, this
> includes, all desktop computers, Apple's i products, set top boxes,
> Android and any other future google device, and many more.
>
> I considered SVG, which also has pretty good cross platform support,
> but there are limitations, especially coming from the Microsoft side
> of things which claim they will not be including the animation
> features.
>
> Anyway, thanks for reading all this, I would love to get a reality
> check here :)
>
> -Lucas
>
> Resources:http://www.piccolo2d.org/http://code.google.com/webtoolkit/http://code.google.com/p/gwt-canvas/http://harmony.apache.org/
>
> --
> Piccolo2D Developers Group:http://groups.google.com/group/piccolo2d-dev?hl=en

-- 
Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en

Reply via email to