- From: Cyril Concolato <cyril.concolato@telecom-paristech.fr>
- Date: Fri, 30 Nov 2012 10:23:15 +0100
- To: www-svg@w3.org
- Message-ID: <50B87B03.1010106@telecom-paristech.fr>
Hi Doug, I think your proposal is interesting. It clearly needs discussion. I don't have a strong position, just some thoughts. From a renderer implementation point of view (just first thoughts), if you don't require the <rect> to constrain the rendering of the <circle> and if you just use it for grouping, relative positioning and property inheritance (basically as a <g>), I don't think it would be a big deal. It's just a matter of adding a RenderChildren call. If you add more features like clipping or viewbox with preserveAspectRatio, or resizing. This would mean making every graphical element similar to <svg>. This would probably require more work for an implementation. But this could be a good way to mix HTML/SVG together like: <p>...<circle></circle> ... </p> without an <svg> element. When I teach SVG to my students, I explain that the way to group things in SVG is to use <g> (or <defs> for other purposes): for positioning, for animating, for interacting with the children together. Even if they have some HTML knowledge and practice, in general they understand it very well. I think the use of <g> brings some useful structuring to SVG content, also semantically. So, I'm a bit worried that this proposal makes people use SVG in a less structured manner. - I think people looking a <circle><rect/></circle> will expect rightfully that the <circle> does something on the <rect> (clip, resize), because otherwise you'd use a <g>. The clipping case can already be done differently, and Brian had suggested another way too (IIRC (not sure) having a <clipPath> as a direct child). I don't think it would be good to introduce a third way. The resizing is maybe a good use case, as Cameron pointed out for a <rect> fitting a <text>. But maybe we just want to allow text in graphical elements. - regarding the reference to the spec you were looking for, I found in SVG Tiny 1.2 (http://www.w3.org/TR/SVGTiny12/single-page.html#implnote-UnsupportedProps) "Within anSVG document fragment <http://www.w3.org/TR/SVGTiny12/single-page.html#intro-TermSVGDocumentFragment>, any subtree that is rooted by an unknown element [...] or a known element that occurs in unexpected location, is not rendered. The nodes in the subtree are not processed beyond including the relevant DOM objects in the document tree. Those DOM objects will still implement the DOM interfaces appropriate for the element type, however." The key is "a known element" <rect> "in an unexpected location" inside a circle. I think that was the intent of 1.1 too (as Ken pointed out). Regards, Cyril Le 30/11/2012 08:30, Dirk Schulze a écrit : > Have serious problems with mails today. Looks like my previous mail got lost. > > Hi Doug, > > On Nov 29, 2012, at 7:54 PM, Doug Schepers <schepers@w3.org> wrote: >>> This proposal makes it harder to understand an SVG file if you have >>> nested elements: >>> >>> <rect width="200" height="200"> >>> <circle> >>> <rect> >>> <circle/> >>> </rect> >>> </circle> >>> </rect> >>> >>> This is reasonable for HTML, but not for SVG. >> This doesn't seem hard to understand to me at all... How is that any >> more confusing than >> >> <g transform="translate(x,y)"> >> <rect width="200" height="200"/> >> <circle/> >> <g transform="translate(x,y)"> >> <rect> >> <circle/> >> </g> >> </g> >> >> (or whatever the equivalent would be)? Why is nesting more reasonable >> for HTML than SVG? > You forget some very important points. It is not only about positioning, but also about dimensions. If I understand you discussion on IRC about it correctly, child elements should also be sized dependent on the parent element. > > <rect width="200" height="200"> > <rect width="100%" height="100%"/> > </rect> > > In this case the inner rect element would have a size of 200x200 pixel, because percentage values are resolved to the parent, which is fine here. > > But what about this example: > > <rect width="200" height="200"> > <rect width="120%" height="120%"/> > </rect> > > The bounding box of the parent is 200x200. The child element would get the size of 240x240. This means the bounding box of the parent must change to 240x240 as well. An infinite loop, or just not possible to solve. > > But even if it is not relative to the parent size: > > <rect width="200" height="200"> > <rect x="40" y="40" width="200" height="200"/> > </rect> > > The dimension of the inner child element is 240x240 which affects the bounding box of the paren which used to be 200x200. We are opening the Pandora's box with it. It doesn't stop here. It has affects on masking, filters and clipping as well, which will be relative to the painting bounding box or define the painting bounding box can can collude here. > > This is just one reason why you can't size a <g> element. > > Greetings, > Dirk > > > >> >>> It needs a lot of specification work either. >> Agreed, and I'm willing to do that work. >> >> >>> I spoke to designers as well. When I mean designers, I mean one, and >>> one in my team. Suggesting this his answer was just "Reasonable, but >>> what for?". Of course it is just one opinion, but at least I give a >>> number and at least I give the source. >> This is kind of a strange assertion... I made no claim that I had done >> an exhaustive survey of designers, but I'm happy to list my sources as >> well. I spoke to several local designers with only a passing >> familiarity with SVG, and asked them questions that I thought were >> pretty objected (i.e., not leading, but just recording their immediate >> impressions). I also spoke with Lea Verou, and Tab Atkins. And through >> the years, I have seen and heard questions from several people asking >> why you can't nest shapes (mostly newbies), which I never thought much >> about until just recently. >> >> But this is a relatively big change, so I'm happy to take it slow, >> develop the proposal to anticipate all the issues that might arise and >> how to specify things to the level of detail necessary, and to make a >> survey of designers and developers to see if they find it useful. >> >> >>> This proposal makes SVG more complex, less likely to get implemented >>> in an interoperable way and harder to understand. I don't support >>> this proposal at all. >> I think you may be reading more into my proposal than I meant... I need >> to articulate it more clearly. I don't see this being any more complex >> than the existing model... and not really that different. >> >> Regards- >> -Doug > -- Cyril Concolato Maître de Conférences/Associate Professor Groupe Multimedia/Multimedia Group Telecom ParisTech 46 rue Barrault 75 013 Paris, France http://concolato.wp.mines-telecom.fr/
Received on Friday, 30 November 2012 09:23:23 UTC