API Review RT:17407 Canvas Node
Pedro Duque Vieira
pedro.duquevieira at gmail.com
Fri Apr 27 05:56:36 PDT 2012
The details are: you can have the stroboscopy of any arbitrary object
drawn. These objects are nodes on the scene graph.
You make these objects move and a stroboscopy trail is drawn every x
seconds. There could be thousands of these images drawn that make up the
trail.
I was thinking that the most performant way of doing this was to capture an
image of the node than use the canvas to draw the stroboscopy by calling
gc.drawImage(...). But what you are saying is that it is equally as good to
have thousands of image nodes representing the stroboscopy, is that it?
On Fri, Apr 27, 2012 at 2:39 AM, Joe Andresen <joseph.andresen at oracle.com>wrote:
> I do not know the details of what you are trying to do,
>
> (How I would do it)
> With the canvas or scenegraph version of a stroboscope of a basketball you
> would have a timeline with keyframes modify an x,y coordinate and
> You could also have it add to a list of coordinates (where to draw a
> basketball).
>
> With canvas you would iterate through these locations and call
> gc.drawImage(...)
>
> With the scenegraph you would create an imageview for each location, set
> its location, and add it to the scene.
>
> You could measure performance of both but really there won't be a huge
> difference, just very different ways of doing the same thing, and some
> developers
> prefer one over the other.
>
> -J
>
>
> ----- Original Message -----
> From: pedro.duquevieira at gmail.com
> To: james.graham at oracle.com
> Cc: openjfx-dev at openjdk.java.net
> Sent: Thursday, April 26, 2012 5:49:19 PM GMT -08:00 US/Canada Pacific
> Subject: Re: API Review RT:17407 Canvas Node
>
> I still haven't gotten answers to my questions/assumptions (below), though
> it seems (according to the latest mailing list posts) that for my question
> of drawing a line chart a canvas node would be better. So could you comment
> please?
>
> *"Ok, that was an example.. Not easy to come up with one in a small email
> message. I'll do another one: suppose you want to draw the stroboscopy of a
> moving object (look at the bouncing ball picture at
> https://mail.google.com/mail/?shva=1#inbox/136e5072504853e0) - this is not
> a far fetched example I actually will need this in an app I'm doing.
> Currently you may have to create thousands of nodes, but with the canvas
> node you could simply copy and paste an image of the node various times.*
>
> *Correct me if I'm wrong but my basic premise is that whenever you have to
> have several equal representations of a node on the scene graph, you would
> do better by using immediate mode rendering and copy pasting the image
> several times.*
>
> *I have a doubt though, that relates to my grid example, if I want to draw
> a line chart with thousands of lines which is better: using immediate mode
> through the canvas node, or a path node?*
>
> *Thanks for the correction, cheers,"*
>
> *
> *
> Also are you (javafx team) considering adding a callback to the canvas node
> whenever there is repainting to be done because of areas that have become
> "dirty"?
>
> Thanks in advance, best regards,
>
> On Thu, Apr 26, 2012 at 1:21 AM, Pedro Duque Vieira <
> pedro.duquevieira at gmail.com> wrote:
>
> > Funny thing you said "infinite in dimension with panning" cause that was
> > what I really had in mind, and is the real use case I have for an app.
> >
> >
> > On Thu, Apr 26, 2012 at 1:05 AM, Jim Graham <james.graham at oracle.com
> >wrote:
> >
> >> If, potentially, the grid was "infinite in dimension with panning", then
> >> you'd have to keep recreating the Path every time they panned around.
> Some
> >> might find it easier to just use direct rendering in that case, but
> using a
> >> Path node and recreating it's segments would not be significantly
> different
> >> in terms of amount of work.
> >>
> >> ...jim
> >>
> >>
> >> On 4/25/12 1:01 PM, Richard Bair wrote:
> >>
> >>> Nah, the way to do this is with a single Path node. Just do a series of
> >>> line-to and move-to. No need to use either canvas or rectangles.
> >>>
> >>> Richard
> >>>
> >>> On Apr 24, 2012, at 8:45 AM, Pedro Duque Vieira wrote:
> >>>
> >>>
> >>>>> Regardless of how the implementation discussion ends up, the driving
> >>>>> question should be what do developers expect a 2D Canvas to do? I
> >>>>> think of
> >>>>> things like photoshop, Illustrator, 8 bit arcade games, animations,
> 2D
> >>>>> CAD
> >>>>> apps, Flow chart designers and the like.
> >>>>>
> >>>>
> >>>>
> >>>> Actually there is another scenario which might be common to several
> >>>> types
> >>>> of apps.
> >>>> An example: imagine your app has a background like a grid and the grid
> >>>> spacing might change dynamically. If you create this grid right now
> you
> >>>> might have to instantiate thousands of rectangle nodes (each rectangle
> >>>> being a grid square) which will degrade performance severely and also
> >>>> memory consumption.
> >>>> But if you use something like a Canvas node as the background grid,
> >>>> everything will be much better.
> >>>>
> >>>> Cheers,
> >>>>
> >>>> --
> >>>> Pedro Duque Vieira
> >>>>
> >>>
> >>>
> >
> >
> > --
> > Pedro Duque Vieira
> >
>
>
>
> --
> Pedro Duque Vieira
>
--
Pedro Duque Vieira
More information about the openjfx-dev
mailing list