- From: Philip Rogers <pdr@google.com>
- Date: Tue, 7 Aug 2012 15:46:09 -0700
- To: Dirk Schulze <dschulze@adobe.com>
- Cc: Rick <graham.rick@gmail.com>, Robert Longson <longsonr@gmail.com>, "www-svg@w3.org" <www-svg@w3.org>, "jackalmage@gmail.com" <jackalmage@gmail.com>
- Message-ID: <CAJgFLLuZK6RxBfuvygK4i09-iyaJZT5-DKM3T2Dj_Tug4zEEwA@mail.gmail.com>
On the topic of how this is implemented at the moment... getBBox() on a one-dimensional rect: <rect height="100" width="0"/> Chrome: (0,0) Firefox: (0,0) IE: (0,100) Opera: (0,100) getBBox() on a display:none rect: <rect height="100" width="100" style="display:none"/> Chrome: (0,0) Firefox: Throws NS_ERROR_FAILURE (see https://bugzilla.mozilla.org/show_bug.cgi?id=612118) IE: (100,200) (the lacuna value?) Opera: (100,100) getBBox() on a "one-dimensional" line: <line x1="100" y1="100" x2="100" y2="200" /> Chrome: (0,100) Firefox: (0,100) IE: (0,100) Opera: (0,100) I think everyone is getting something wrong, except maybe Opera. As an implementer, returning the correct values for width=0 in WebKit will not be too hard and will be easiest to understand for users. The display:none case will require working around a well-known optimization in SVG in IE/Firefox/Chrome where a render tree is not created for display:none nodes, so I would like to argue we should return a rect of size (0,0) in that case. This attribute is already not animatable so I do not think it will be surprising. Philip On Tue, Aug 7, 2012 at 1:58 PM, Dirk Schulze <dschulze@adobe.com> wrote: > > On Aug 7, 2012, at 1:55 PM, Philip Rogers <pdr@google.com> wrote: > > > Dirk, > > > > You've said this a few times but it is not true: " A shape with one > dimension does not get rendered and is in error." > > The spec says it does not get rendered, but it is not in error. > Yes, just noticed it. Thanks for the clarification. > > Dirk > > > > > For getBBox() you can calculate the size of rects, ellipses, and circles > analytically from just the width/height/radii without creating any > renderers. This is simple because getBBox() is exclusive of "complicated' > things like strokes, markers, etc, so you can rely on the attributes alone. > > > > Philip > > > > > > On Tue, Aug 7, 2012 at 1:47 PM, Dirk Schulze <dschulze@adobe.com> wrote: > > > > On Aug 7, 2012, at 12:23 PM, Rick <graham.rick@gmail.com> wrote: > > > > > > > > On Tue, Aug 7, 2012 at 2:51 PM, Robert Longson <longsonr@gmail.com> > wrote: > > > In most cases nobody wants this so why clutter up UA code with it. In > the extremely rare cases you need it I don't see why the svg file shouldn't > have an "ugly hack" rather than having dozens of lines of mostly unused > ugly hack UA code handle it. > > > > > > > > > As a content developer, I expect the geometry of SVG elements to be > correct. > > > > > > Let me suggest this another way then. > > > > > > I don't think introducing illogical hacks into the SVG spec to solve > coding problems for specific UA's sets a good precedent. > > > > > > As a former UA implementer, I ask, what impact does this have on other > UA's? Should they adopt your hack because you don't want to check for a > zero in your rendering pipeline? > > > > It is not necessarily a hack. It is an inconsistency in the spec. A lot > of engines create renderers for rendering content. A shape with one > dimension does not get rendered and is in error. That is the spec text. So > if it is in error, why do you expect reasonable results from it? It is not > just Firefox that behaves like that, but also WebKit and all WebKit based > browsers/applications. > > > > Greetings, > > Dirk > > > > > > > > > > > Robert > > > > > > > > > On 7 August 2012 19:47, Rick <graham.rick@gmail.com> wrote: > > > > > > > > > On Tue, Aug 7, 2012 at 2:03 PM, Robert Longson <longsonr@gmail.com> > wrote: > > > >> If you want the shape included then give it a small non-zero > width/height hidden visibility. > > > > > > Making a rectangle of zero width not render is logical, but it is > still a legal rectangle object and can be interacted with, so it should > have geometry semantics. > > > > > > Giving zero widths/heights a small value is an ugly hack. There must > be a better way. > > > > > > Is there no bottleneck in Cairo where you could discard ineligible > shapes? > > > > > > -- > > > "A child is a person who can't understand why someone would give away > a perfectly good kitten." > > > -- Doug Larson > > > > > > > > > > > > > > > -- > > > "A child is a person who can't understand why someone would give away > a perfectly good kitten." > > > -- Doug Larson > > > > > >
Received on Tuesday, 7 August 2012 22:46:57 UTC