W3C home > Mailing lists > Public > www-svg@w3.org > February 2015

Re: PathSeg interface

From: Paul LeBeau <paul.lebeau@gmail.com>
Date: Tue, 17 Feb 2015 07:49:26 +1300
Message-ID: <CACfsppDyLPEAdZnEQGBJ+TFkE53xR2_oy4egrY8YxfGHBYzxHQ@mail.gmail.com>
To: Erik Dahlström <ed@opera.com>
Cc: www-svg <www-svg@w3.org>
I'm okay with removing if it gets replaced with something simpler.  Your
proposal looks good.

> * is there a need for having a canvas-like pathbuilding API,

I don't have a strong opinion either way on this.  Although I guess it
would be nice if there was a parallel API.

> * is there a need for the full name of each pathseg type?

I think just the letter would be fine.  It's a concept people are very
familiar with.

> * which important use-cases does the draft API not address?

I'm not very familiar with how WebIDL constructs map to JS.  Does a
sequence<T> map to an array, or something similar to an HTMLCollection?  I
imagine people would like to be able to concat(), splice(), push() etc.


On 17 February 2015 at 03:53, Erik Dahlström <ed@opera.com> wrote:

> Hello lovers of PathSegList :)
> I'm sympathetic to the arguments put forward in this thread, but I would
> like to understand the actual use-cases better.
> Also, there seems to be some confusion over what a UseCounter is, so let's
> see if I can clarify that bit first:
> A UseCounter measures the usage of a given feature on pages loaded in
> Chrome where the user has opted in to sharing the UseCounter data. Nothing
> says that just because it shows zero usage there aren't pages out there
> that use the given feature.
> Now, on to the main reasons for wanting to remove these interfaces:
> * the animatedNormalizedPathSegList and normalizedPathSegList accessors
> lack implementations
> * the combined measured actual usage is very low according to Chrome's
> UseCounter data
> * they force "live" synchronization (which is expensive and complex)
> * they're verbose (due to the many interfaces) and cumbersome to use in
> script
> Assuming we want to have a new API, here's a draft for an API that could
> replace the existing one:
> [NoInterfaceObject]
> interface SVGPathSegment {
>   DOMString type; // this would be e.g 'M', 'c', 'L' and so on
>   sequence<float> values;
> };
> dictionary SVGPathDataSettings {
>   boolean normalize = false;
> }
> [NoInterfaceObject]
> interface SVGPathData {
>   sequence<SVGPathSegment> getPathData(optional SVGPathDataSettings
> settings);
>   void setPathData(sequence<SVGPathSegment> pathData);
> };
> SVGPathElement implements SVGPathData;
> Some benefits of the draft API:
> * simpler interface which provides easier data manipulation/inspection due
> to not having differences in the various pathseg interfaces
> * it removes the "live" synchronization between the various lists
> * offers a way to implement a rudimentary polyfill for the old interfaces
> using the new API (I've intentionally excluded the animation aspect)
> Questions:
> * if there is a need for the animated state, would it be sufficient to
> have a path "blending" method instead, that takes two SVGPathData objects
> and a blend-value between 0 and 1 for getting a new SVGPathData object at
> the given point (where 0 means return path A and 1 means return path B, and
> anything in between is an interpolated path C)?
> * is there a need for having a canvas-like pathbuilding API, or would the
> draft interface presented above be sufficient?
> * is there a need for the full name of each pathseg type? most scripts
> I've seen only switch on the type, so what is there doesn't really matter.
> Scripts could easily provide this if needed.
> * which important use-cases does the draft API not address?
> On Fri, 13 Feb 2015 17:20:49 +0100, Jelle Mulder <
> jelle.mulder2@outlook.com> wrote:
>  I think this is a definite keeper. Please do not remove. So much has been
>> removed already in order to follow browser implementations rather than
>> setting a spec that might be the next best thing to cheese. This is more an
>> example of unknown makes unloved. Had I known it existed it would have made
>> life quite a bit easier, but before this discussion and the examples of
>> Paul, I'd never seen it used before. It just proves to me that just spec
>> documents are not enough to make lesser gods like me understand what they
>> are all about. In all the books I read about the topic, I've never come
>> across this before whereas it certainly opens up interesting possibilities.
>> Reading specs is often similar to reading law books. Unless you're a lawyer
>> or extremely interested, you don't get it. At first glance it draws a
>> blank. Only when reading a case implementing these laws it becomes
>> understandable for the lay men. If we would apply the same reasoning on
>> applying knowledge of SVG Specs, you'd probably end up near to zero too.
>> How about deprecating the whole spec?  Or all specs for that matter?
>>> From: phrogz@me.com
>>> Date: Thu, 12 Feb 2015 19:23:44 -0700
>>> CC: www-svg@w3.org
>>> To: paul.lebeau@gmail.com
>>> Subject: Re: PathSeg interface
>>> On Feb 12, 2015, at 3:14 AM, Paul LeBeau <paul.lebeau@gmail.com> wrote:
>>> > > RESOLUTION: Drop the SVGPathSeg* interfaces if Erik verifies
>>> >    the use counter values are correct
>>> >
>>> > I'm surprised it is zero - even though the API interface is a bit
>>> unwieldy and has only very basic support from the browsers.
>>> I…whaaa? It’s certainly not exactly zero. Here are some of my own pages
>>> that use SVGPathSeg:
>>> http://phrogz.net/svg/animation_on_a_curve.html
>>> http://phrogz.net/svg/constant-length-bezier.xhtml
>>> http://phrogz.net/svg/convert_path_to_absolute_commands.svg
>>> http://phrogz.net/svg/convert_path_to_polygon.xhtml
>>> http://phrogz.net/svg/convert_polys_to_paths.svg
>>> http://phrogz.net/svg/draggable-bezier.xhtml
>>> http://phrogz.net/svg/progressively-cloning-svg-path.html
>>> http://phrogz.net/svg/transforming_paths.xhtml
>>> http://phrogz.net/svg/transformations.js
>>> http://phrogz.net/svg/libraries/SVGPathToPoly.js
>>> And here are two answers I’ve posted that use it to good effect:
>>> http://stackoverflow.com/questions/8053487/scripting-
>>> path-data-in-svg-reading-and-modifying
>>> http://stackoverflow.com/questions/9677885/convert-svg-
>>> path-to-absolute-commands
>>> I know, no one likely was suggesting that it was exactly zero. However,
>>> this is a useful feature that I have used in the past. I’m quite surprised
>>> and skeptical that this is not used.
>>> I would like to hear a detailed proposal for exactly what would be
>>> removed, and what scripters are expected to use in its place. Right now
>>> this seems a drastic action that I would personally advocate against.
> --
> Erik Dahlstrom, Web Technology Developer, Opera Software
> Co-Chair, W3C SVG Working Group
Received on Monday, 16 February 2015 18:50:15 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 8 March 2017 09:47:39 UTC