Re: Some questions regarding transformations in SVG

Tab Atkins Jr. wrote:
> On Fri, Nov 14, 2014 at 3:55 AM, Juergen Roethig
> <roethig@dhbw-karlsruhe.de> wrote:
>> as I try to code some applications realized with SVG where I need
>> transformations, several questions arised:
>>
>> 1. Currently, only affine transformations are achievable in SVG. This seems
>> not to be changed for SVG2. Were there ever any discussions, or efforts, to
>> allow non-affine transformations in SVG?
> 
> Affine transforms are fast and easy to do on modern graphics hardware
> with simple matrix math.  Non-affine transforms don't have this
> property, unfortunately.

You really want to tell me that the SVG WG does not even want to 
consider non-affine transformations for SVG because it might take more 
computational power than "simple matrix math"? My question was whether 
such transformations were already discussed or taken into account 
(especially for SVG2)! I did not ask for the reason why transformations 
were restricted to affine transformations 10 or 15 years ago, when SVG1 
was developed!

>> 2. When scaling (parts of) a presentation, all the strokes, patterns,
>> markers, ... are also scaled. In SVG Tiny 1.2, a "non-scaling-stroke" value
>> for an attribute "vector-effect" was introduced, and I read happily that
>> this is intended to be part of SVG2, as well. But as far as I understand,
>> this refers only to the stroke property (this is what its name says) - is
>> something similar intended for fill patterns, markers, whatever? And even
>> further - may I have non-scaling annotations (textual or graphical) as part
>> of a scaled object? The usecase might be just the same as the one which is
>> described in SVG2 for the "non-scaling-stroke" - scalable maps with roads
>> realized via a non-scaling stroke, the roads keeping their size when scaling
>> the map, and I would additionally like to annotate those roads with their
>> names, I would like to mark them and fill them with special patterns (in
>> order to present them as highways, footpaths, railroads, ...).
> 
> Yes, at the last F2F a few weeks ago, we discussed non-scaling patterns as well.

Oh, really, thanks for answering that question! For those who might be 
interested, the discussion about that topic at that F2F might be followed at
  http://lists.w3.org/Archives/Public/www-svg/2014Oct/0033.html
But what was the outcome? I read "<trackbot> Created ACTION-3683 - Add 
non-scaling patterns to the spec [on Thomas Smailus - due 2014-11-07]." 
- perfect! And although the latest SVG2 WD (dating 10 October 2014 which 
is before that "due date") does not seem to reflect that, so far, I see 
that the "vector-effect" attribute already had other possible values, 
e.g. "non-scaling-size", which I was not aware of, so far, and which 
might help for some of my requirements.

>> 3. And last, but not least, when I have several transformation contexts, may
>> I have elements using coordinates from both contexts at the same time (e.g.
>> a line from a special coordinate in one context leading to another special
>> coordinate in the other context)? The usecase might be the same as before -
>> this time I would like to have a fixed-positioned map legend and a scaling
>> and moving sector of the map. Or I might have two sectors of the same map in
>> different scales, and references (lines, curves, ...) from coordinates
>> within the one sector to coordinates in the other sector. The "reference
>> points" (or "ports") discussed within the "connector proposals for SVG"
>> might help for that, but in all proposals discussed so far within the
>> working group, only a special "connector" element may use such reference
>> points, and this might not help if I would like to have graphical shapes
>> which are not part of the shapes available for a connector, e.g. a rectangle
>> with one corner point in one context, and the other corner point in the
>> other context. So, what should be the solution for that in SVG[2]? Or is it
>> and will it just be impossible, even in SVG2?
> 
> For the general case, you'll need script.  The line has to be all in
> one context, so you'll have to do at least one conversion, from a
> point in one context to the line's context.  Luckily this has been
> specified in <http://dev.w3.org/csswg/cssom-view/#the-geometryutils-interface>,
> currently implemented in Firefox, so it's pretty easy to use.

And this answer is, sorry to say that, not at all helpful: SVG even 
allows animations of objects and their properties without any additional 
scripting, but for a simple and totally static usecase, the line or path 
between two random points who accidentally are located in different 
contexts within the same SVG file, I must use JavaScript? And even a 
JavaScript interface from a CSS Draft (in an obviously very incomplete 
state) which is not at all "specified" as you try to give the impression 
by your statement? And you do not even create the impression that you 
might take such usecases and considerations into account in the SVG WG? 
"SVG is a widely-deployed royalty-free graphics format developed and 
maintained by the W3C SVG Working Group. This is a public group, which 
works on an open mailing list and which welcomes your feedback." - I 
really feel my feedback welcome!

Juergen Roethig

Received on Saturday, 15 November 2014 18:38:24 UTC