On Jul 26, 2016 11:47 AM, "Harbs" <harbs.li...@gmail.com> wrote:
>
> I agree there should be a Group object.
>
> The problem is that the way the classes are currently constructed is that
100 pixel “Rect" positioned at 100,100 actually contains the following
markup: <svg x=“100” y=“100"><rect x=“0” y=“0” width=“100”
height=“100”/></svg>
>
> I think the reason it was done this way was to make it possible to add
Rects (and similar) directly to HTML elements.

Yes,  that is correct.   This was the intention.   The idea comes from the
paradigm in Flex where you can simply add a Line or Rect in any component
and expect it to work correctly, especially with the layout restrictions of
the parent component.  You dont add a GraphicContainer or some such
container to add a graphic element.  This is how Spark skins are possible.

>
> I suppose we could change the way the classes are setup (and drawn) so
that <rect> <circle> and the like could only be added to elements which
legally can contain them (such as <svg> and <g>).

I did toy around with this idea.  How would this square when you want to
draw a circle with Canvas?  Might get complicated to the user.

I am all for adding an SVGContainer component that expects children to be
relatively positioned inside it.  Maybe we could call the primitives
SVGLine, SVGRect etc?  And a similar setup for Canvas?

Thanks,
Om

>
> On Jul 26, 2016, at 8:38 PM, Alex Harui <aha...@adobe.com> wrote:
>
> >
> >
> > On 7/26/16, 8:19 AM, "Harbs" <harbs.li...@gmail.com> wrote:
> >
> >> Both.
> >>
> >> In SVG we're actually struggling with the same (or rather similar)
issue.
> >>
> >> There’s a big difference between:
> >> <div><svg><rect/></svg><svg><circle/></svg></div>
> >>
> >> and
> >> <div><svg><g><rect/><circle/></g></svg></div>
> >>
> >> Each svg has its own coordinate space, and svg elements cannot have
> >> transform properties. This is proving to be quite difficult in terms of
> >> transformations.
> >>
> >> Ideally, it should be easy to pick whether you want to wrap each shape
in
> >> its own SVG element or have them all in the same svg element (or g
> >> element). Currently GraphicShape draws each shape with its own svg
> >> wrapper. CompoundShape, on the other hand, draws separate objects
within
> >> a single svg element. GraphicContainer takes svg-type elements as
> >> children, but does not care exactly which type.
> >>
> >> I think there should also be a GraphicGroup object which would be a g
> >> element and take children.
> >>
> >> I’m struggling with how to specify whether svg element have the svg
> >> wrapper and not. (Ideas welcome!)
> >
> > IMO, I suspect there exist SVG snippets in the world that folks might
want
> > to repurpose into their FlexJS apps.  Having a simple 1:1 mapping
between
> > tags is probably the best strategy.  Are folks worried about the
overhead
> > of that verbosity?  IMO, it is always possible to provide aggregations,
> > but aggregations make assumptions and often someone will come back and
ask
> > for the low-level.
> >
> > For example, in Flex Spark (and FlexJS) specifying a layout for a
> > container takes 3 lines:
> >
> > <Container>
> >  <layout>
> >    <VerticalLayout />
> >  </layout>
> > </Container>
> >
> > In Flex MX, it is one line:
> >
> > <Container layout="Vertical" />
> >
> > The problem is that you can't specify other properties on the
> > VerticalLayout in MX, and Horizontal and Absolute layout are baked into
> > the MX container and are linked into your code, and you can't add new
> > layouts.
> >
> > So for graphics, if I understand the issue, why not add a <g> or <Group>
> > tag and make folks use it where they need it?
> >
> > My 2 cents,
> > -Alex
>

Reply via email to