- From: Thomas E Deweese <thomas.deweese@kodak.com>
- Date: Thu, 6 Feb 2003 17:42:31 -0500
- To: Sigurd Lerstad <sigler@bredband.no>
- Cc: www-svg@w3.org
Hello Sigurd,
Sorry for the delay.
>>>>> "SL" == Sigurd Lerstad <sigler@bredband.no> writes:
> > When calling getScreenCTM on an svg element, will it take into
> > account any transformation done on the children of that svg element
> > due to viewBox?
> >
> > I'm asking, because a viewBox attribute doesn't transform the svg
> > element itself (i.e the x,y,width/height of the svg element) only the
> > children.
The 'getScreenCTM' function on an svg element should take into
account the effects of viewBox and preserveAspectRatio. This is taken
from the fact that 'getScreenCTM' (Section 4.3 - SVGLocatable) says:
Returns the transformation matrix from current user units
(i.e., after application of the transform attribute, if any)
to the parent user agent's notice of a "pixel".
and the definition of 'The viewBox attribute' (Section 7.7):
The value of the viewBox attribute is a list of four numbers
<min-x>, <min-y>, <width> and <height>, separated by
whitespace and/or a comma, which specify a rectangle in user
space which should be mapped to the bounds of the viewport
established by the given element,
Additionally the last paragraph in Section 7.7:
Unlike the transform attribute (see effect of the transform
on sibling attributes), the automatic transformation that is
created due to a viewBox does not affect the x, y, width and
height attributes (or in the case of the 'marker' element,
the markerWidth and markerHeight attributes) on the element
with the viewBox attribute. Thus, in the example above which
shows an 'svg' element which has attributes width, height and
viewBox, the width and height attributes represent values in
the coordinate system that exists before the viewBox
transformation is applied. On the other hand, like the
transform attribute, it does establish a new coordinate
system for all other attributes and for descendant elements.
Together these make it clear that the user space for the SVG element
is the coordinate system after accounting for 'viewBox'. While you
are correct that x,y,width,height are not defined in this coordinate
system the last paragraph in 7.7 makes it clear that these are the odd
attributes. Thus 'getScreenCTM' on an SVG element should include any
effects on the coordinate system from the 'viewBox' and
'preserveAspectRatio' attributes
SL> Wouldn't it be more useful if getBBox returned the bounding box
SL> BEFORE any transform, since you can always apply that afterwards
SL> to the BBox, but you can't unapply it. (or am I missing
SL> something?)
You can generally apply the inverse of the transform.
Received on Thursday, 6 February 2003 17:42:46 UTC