- From: Cameron McCormack <cam@mcc.id.au>
- Date: Wed, 19 Sep 2012 17:34:45 +0200
- To: SVG WG <public-svg-wg@w3.org>
http://www.w3.org/2012/09/19-svg-minutes.html [1]W3C [1] http://www.w3.org/ - DRAFT - SVG Working Group Teleconference 19 Sep 2012 [2]Agenda [2] http://www.w3.org/Graphics/SVG/WG/wiki/F2F/SVGOpen_2012/Agenda See also: [3]IRC log [3] http://www.w3.org/2012/09/19-svg-irc Attendees Present Erik, Cameron, Nikos, Doug, Tab, Rik, Cyril, Takagi-san, Tav, Konno-san, Brian Regrets Chair Cameron Scribe nikos, Cyril, cabanier, TabAtkins, heycam Contents * [4]Topics 1. [5]radialGradient @fr 2. [6]Mesh Gradients 3. [7]GetSVGDocument deprecation/removal 4. [8]SVGDocument interface (alias to Document?) 5. [9]XLink deprecation 6. [10]Cameron's stuff 7. [11]Hatchings 8. [12]extrapolated line join 9. [13]GetSVGDocument interface 10. [14]spaces/commas in SVG view specification 11. [15]HTML integration 12. [16]SVG DOM improvements 13. [17]rendering-mode: animate 14. [18]SVG documentation 15. [19]CSS Variables and Params 16. [20]rounded corners 17. [21]JSON serialization 18. [22]JSON serialization of SVG * [23]Summary of Action Items __________________________________________________________ <heycam> trackbot, start telcon <trackbot> Date: 19 September 2012 <nikos> scribenick: nikos radialGradient @fr ed: I have a couple of questions about the spec ... 1: is fr allowed to be negative? ... I think the thread decided no 2: should the focal point be constrained to be in the circle? ... do we want to be fully compatible with canvas or not? TabAtkins: I think Canvas behaviour is bad ... whatever we do here I'd like to do it there too cabanier: in Canvas you get a cone if drawing outside TabAtkins: that behaviour doesn't make sense - there's a discontinuity in the behaviour for no good reason heycam: would you ever want that effect? TabAtkins: I don't think so cabanier: all implementations come from PDF ... I think you should match what most people do ... you should do it in CSS as well TabAtkins: it' ... s not good behaviour cabanier: so how would you define radial gradients? TabAtkins: I think the last colour should extend outside the plane ... or restrict them to clamp cabanier: I think SVG should match Canvas heycam: we do clamp right? ed: yes TabAtkins: mesh gradients are too complex for CSS ... so what is ill defined about the clamping right now? ... I don't think authors want it to extend, so I think it's better that we clamp ed: a secondary issue - what happens if the focal circle radius cuts through the other circle TabAtkins: project out where the focal point would be. The definition should be in terms of the focal point and the fill shape ... which behaviour do we want? turn it into a cone or clamp? cabanier: I think it should match what everybody else is doing ed: even if we wanted to have canvas behaviour we have to keep old behaviour when it's exactly on the circle ... so we don't break old content <heycam> [24]http://jaspervdg.wordpress.com/2012/09/03/specifying-radial -gradients/ [24] http://jaspervdg.wordpress.com/2012/09/03/specifying-radial-gradients/ heycam: I'm leaning towards allowing it outside the circle TabAtkins: I'm not a fan of the cone effect cabanier: I agree, but I think consistency is important heycam: what happens when you put the focal point on the edge in Canvas? cabanier: they don't have repeat so it's not a problem ed: I think I agree that consistency with Canvas is important Resolution: SVG radial gradients will align with Canvas for behaviour where the focal point is outside the circle ed: for the case where it's exactly on the circle we are going to keep the old clamping behaviour for backwards compatibility? ... when the focal point is exactly on the circle Tav: what colour space do you do the averaging in ? TabAtkins: CSS takes the easy answer and converts to sRGBA Tav: optically you would want to use linear cabanier: the gradient doesn't interpolate linearly TabAtkins: the averaging should be in the same colour space as the rest ... I think to get correct colours you average in the same colour space as you interpolate <TabAtkins__> [25]http://dev.w3.org/csswg/css3-images/#find-the-average-color -of-a-gradient [25] http://dev.w3.org/csswg/css3-images/#find-the-average-color-of-a-gradient <scribe> ACTION: Tav to specify radial gradient behaviour when the focal point is outside the circle [recorded in [26]http://www.w3.org/2012/09/19-svg-minutes.html#action01] <trackbot> Created ACTION-3374 - Specify radial gradient behaviour when the focal point is outside the circle [on Tavmjong Bah - due 2012-09-26]. Mesh Gradients <Tav> [27]http://tavmjong.free.fr/SVG/SVGOpen2012/ARTISTS/svg_2012_ar tists.svg#36_0 [27] http://tavmjong.free.fr/SVG/SVGOpen2012/ARTISTS/svg_2012_artists.svg#36_0 Tav: The basic issue with the gradients right now is how to handle non-smooth transitions between boundaries ... they cause banding ... that point of the transition looks brighter ... Adobe and Corel draw handle this by doing smoothing that's hidden from the user ... it gets exported as 8x8 patches in the PDF ... we could do what they do, but that would end with lots of patches ... or we try some kind of smoothing ... either automatic smoothing or we allow a more complex syntax that allows colours to be set at points on the handles or tensor points heycam: is it like specifying easing? Cyril: if you have two patches next to each other and you specify the colour derivatives at the shared points, then you have a continuous derivative and no banding Tav drawing on board Tav: If you have two patches, you want to smooth the join ... what I did is use auto smoothing by looking at the slope and use that to construct a curve Cyril: the problem with that is the rendering of patches is not isolated Tav: You could define colours at the control points and add tensor points Cyril: generally that's not what people do, the colour is separate from the geometry shepazu: If you're trying to do patches you are probably trying to match them to a geometric shape - in most uses Cyril drawing on board Cyril: typically a coon's patch is something where you start with a unit square, with parameters u and v. You have a colour aspect where you have 4 colours on the corners, you have a bilinear interpolation inside ... then you have a transformation, from u &v you get x & y on one side and a colour value on the other side ... what you are proposing is the difference between coon's patches and tensor patches ... there is also a ferguson patch ... from simplest to more complex - coons, tensor and then ferguson ... what you are proposing is something like what PDF does with tensor patches but in the colour dimension and not the geometric dimensions Tav: in 1 dimension, you interpolate the colours using a bezier Cyril: I don't think that is a simple transition to 2 dimensions ... I would need to think about it Tav: I am always proposing to have the extra points at 1/3rd and 2/3rd TabAtkins__: I'm ok as long as there's an automatic way to do the interpolation heycam: Are you describing extra things the author has to specify? Tav: yes. Or if it's not specified you get the linear interpolation heycam: I would like a boolean that enables a way for us to specify the method of smoothing shepazu: I'd like to see this proposal in terms of a syntax Tav: for auto smoothing it would simply be a flag ... I have a proposal syntax ... I think we really need the tensor points as they allow you to draw how the colours spread inside and helps to remove some of the banding effects ... <mesh><meshrow><meshpatch><stops> ... when defining tensor points, you could replace that with an array of rows by columns with a colour array as well ... one mesh consists of 16 points. These points could be described in an array of points. shepazu: I don't know if that's simpler Tav: The points and handles defining the patch map into the array ... if you are going to add the tensor points inside the patch, you cannot define them using the path syntax ... slide 33 has an example syntax shepazu: I'd like to see real world examples of how this is used and how many patches are needed Cyril: it's heavily used ... requires many many patches to make an image shepazu: is this a good use for SVG? TabAtkins__: it's a very good use for an SVG viewer shepazu: is this something you could see being added CSS? TabAtkins__: no. shepazu: what we want is browser output that is consistent with the author's view in illustrator and inkscape heycam: I'd like to avoid having the subdivision in the SVG shepazu: This seems like something that 1) can't be done elsewhere in the web platform 2) couldn't be done in CSS (needs markup) and 3) will meet the real-world needs of authors, which are good criteria for inclusion in SVG 2 TabAtkins: is this a paint server or just geometry? Tav: we decided if it's in the defs section it's a paint server, if it's not then it's geometry ... you need to be able to clip if it's a paint server Resolution: SVG mesh gradients should have a method for enabling smoothing and smoothing should be default behaviour <scribe> ACTION: Rik to find out what method Adobe uses for smoothing mesh gradients and report to group [recorded in [28]http://www.w3.org/2012/09/19-svg-minutes.html#action02] <trackbot> Created ACTION-3375 - Find out what method Adobe uses for smoothing mesh gradients and report to group [on Rik Cabanier - due 2012-09-26]. cabanier: if the patches are not hand editable then why not just make them really compact shepazu: even if they're not hand editable they still need to be animatable ed: One of my main concerns is a lot of details are missing from the spec at the moment Tav: they will be added ed: I'd like references to the algorithms used - they should be in the spec Cyril: I'm not sure all the algorithms are royalty free ... at least one has a patent ... I think we won't be mandating a specific algorithm TabAtkins: that's right, you require a certain output ... it just has to be black box compatible ed: My other point is about hand authoring - it doesn't seem to be really possible ... if we were to have a simplified syntax that (perhaps) wouldn't provide the same accuracy but gives something that could be manipulated would be useful shepazu: so it's common for people to use multiple meshes to create an object ... what's the bounding box? TabAtkins: if it's geometry then the bounding box is the edges cabanier: they fold over themselves TabAtkins: that would be as if any path folds over itself shepazu: this is different to SVG in some ways - normally in SVG you have a shape which is the geometry and it might be affected by properties ... then you fill it with some other thing that doesn't have geometery/size cabanier: well we resolved that now radial gradients will have a boundary shepazu: but you can't use getBBox on it heycam: I think doug is saying it can be a mesh object as well as a paint server shepazu: under what circumstances would you use it as a paint server? ... I don't think it is the primary purpose ... we have talked several times about integrating canvas and svg and having a similar path model ... now we are introducing a new element where you can't do that path stuff ... for the pepper, I might want to just get the outline Cyril: you can cabanier: what about when it folds over itself? ... the outline may not be the outermost path heycam: if we had this method on circles, etc then it should work on the patch geometry as well Cyril: if a patch overlaps itself the path would also, that's fine shepazu: if I had line art and I want to colour it using mesh gradients how would I do that? TabAtkins: you would use a paint server to contain the colour, the patches wouldn't match the geometry ... effectively, you would need to trace over the line art shepazu: I think this has path like characteristics so it should have path like powers Tav: I talked to the NVidia guy about HW acceleration and he said no problem. Cyril: it's very simple ... When we selected Coon's patches, we also considered triangle patches. ... the more I read about vectorisation, the more I see this being used ... I am suggesting we add the triangular representation for meshes to SVG heycam: is it wasteful to do the triangles using bezier paths? Cyril: I would have to investigate but I suspect so shepazu: Cyril, could you come up with a concrete proposal that shows syntax and outputs <scribe> ACTION: Cyril to write up a proposal for a triangular representation for gradient meshes [recorded in [29]http://www.w3.org/2012/09/19-svg-minutes.html#action03] <trackbot> Created ACTION-3376 - Write up a proposal for a triangular representation for gradient meshes [on Cyril Concolato - due 2012-09-26]. GetSVGDocument deprecation/removal SVGDocument interface (alias to Document?) ed: this is a bout merging all the interfaces of SVGDocument onto document ... this is the direction HTML is going ... we would want a minimal representation for backwards compatibility shepazu: what is the syntax in HTML5 <ed> [30]http://www.whatwg.org/specs/web-apps/current-work/multipage /dom.html#document [30] http://www.whatwg.org/specs/web-apps/current-work/multipage/dom.html#document TabAtkins: HTMLDocument is an alias for document heycam: if you create a document, the type is defined by the root element, it can't change mid-life so whatever functionality for SVGDocument and HTMLDocument should be available on all documents shepazu: in HTML, when you try to get forms and there are no forms, would the result be different in SVG compared to a HTML doc that has no forms heycam: document.forms would be a HTML collection object with length zero ... HTML collection is named HTML collection but it's really just a collection of any element shepazu: what difference would this make to authors? heycam: the difference will be additional properties shepazu: we can remove details from our specification and refer to HTML5 ... I'm in favour of this, we can special case things as we find them TabAtkins: i.e. SVG links are returned as well as HTML links heycam: we need to discuss the alias ... firstly in the IDL it becomes a partial interface for document ... the aliasing of the interface, presumably HTML does that for HTMLDocument TabAtkins: it just aliases to document. We would use the same line in SVG <TabAtkins> "For historical reasons, Window objects must also have a writable, configurable, non-enumerable property named HTMLDocument whose value is the Document interface object." heycam: we will do the same thing Resolution: SVGDocument will be an alias for document <scribe> ACTION: ed make SVGDocument into an alias for document [recorded in [31]http://www.w3.org/2012/09/19-svg-minutes.html#action04] <trackbot> Created ACTION-3377 - Make SVGDocument into an alias for document [on Erik Dahlström - due 2012-09-26]. XLink deprecation heycam: We might have already decided on this ... whether all attributes become href or whether some become source and some become href TabAtkins: I think they should be whatever they all are right now ... we shouldn't change it, just drop the xlink prefix ... I think we should align script heycam: there are quite a number of elements that have xlink:href shepazu: the idea was that we use xlink:href for any external resource ... I don't mind if you can use href or src ... we are going to have to xlink:href and href so we might as well allow src too <heycam> [32]https://svgwg.org/svg2-draft/attindex.html [32] https://svgwg.org/svg2-draft/attindex.html list of things that use xlink:href a - makes sense alt-glyph is a reference to an element so should be href animate elements - makes sense color-profile - being removed cursor - represents an external image so could be src, but cursor is probably not similar to anything in HTML so can be left as href image - should allow src TabAtkins: the ones I'm concerned about are image and script shepazu: with image, it behaves differently in SVG than in HTML, so they don't have to align TabAtkins: script is the one I feel really strongly about ... I might want script to accept 3 attributes, if there are not strong objections shepazu: we resolved that href overrides xlink:href ... but there's more to it - i.e. how it is represented in the DOM <ed> [33]http://www.w3.org/Graphics/SVG/WG/wiki/Href [33] http://www.w3.org/Graphics/SVG/WG/wiki/Href heycam: I like allowing src for script shepazu: authors expect src heycam: I propose that src overrides everything TabAtkins: I'd put src between href and xlink:href heycam: I'd like to encourage src shepazu: me too heycam: set always sets 'src' and 'get' gets the attribute that exists with the highest precedence. shepazu: this makes me reconsider image, why are we doing src in some things and not src in others? ... we could align on src but say there's a couple of quirks with SVG image. ... so anywhere that HTML has a general kind of element that uses src instead of href, SVG will also allow src and it will be the default heycam: feImage should remain href because it can point to trees TabAtkins: I'd like to stay doing what we currently do unless aligning with HTML heycam: all the remaining elements in the list are href ... one final issue - on image the href DOM property is an animated string ... we should make .src be a DOM string that just reflects the base value, not the animated value TabAtkins: There's 3 things ... firstly the xlink:href gain a plain href ... secondly, script and image gain a src attribute thirdly, when getting from any, you get the highest precedence (src -> href -> xlink:href), when setting you set the highest that is available Resolution: We will allow href on all elements that have xlink:href and allow src on image and script. With details as in the minutes. <scribe> ACTION: Cameron to add href on all elements with xlink:href and add src to image and script [recorded in [34]http://www.w3.org/2012/09/19-svg-minutes.html#action05] <trackbot> Created ACTION-3378 - Add href on all elements with xlink:href and add src to image and script [on Cameron McCormack - due 2012-09-26]. <Cyril> scribeNick: Cyril Cameron's stuff heycam: we have previously described ways of determining whether pointer-events were within the stroke region or the fill region or hte marker ... we settled on a method to tell you which region was hit ... I have done that ... it's in the spec [35]http://lists.w3.org/Archives/Public/public-svg-wg/2012JulSe p/0194.html [35] http://lists.w3.org/Archives/Public/public-svg-wg/2012JulSep/0194.html <heycam> [36]https://svgwg.org/svg2-draft/types.html#InterfaceSVGGeometr yElement [36] https://svgwg.org/svg2-draft/types.html#InterfaceSVGGeometryElement scribe: I took upon myself to add a new interface ... on elements that can be filled and stroke ... there are 2 methods: isPointInFill isPointInStroke scribe: initially it is taking a Point object in user space ... because often you will have a mouse event and you want to take the coordintes of hte mouseevent and translate them into the user space ... that's a separate thing that's handy to do ... oh, I forgot to make that change ... SVGPoint should have a constructor that takes an element and a mouse event ... if the element is not provided, it is assumed to be the target of the event ... I had the conversion integrated but this is cleaner this way ... I also worked on markers ... there is a separate interface <heycam> [37]https://svgwg.org/svg2-draft/painting.html#InterfaceSVGMark ableElement [37] https://svgwg.org/svg2-draft/painting.html#InterfaceSVGMarkableElement scribe: it's implemented on elements that can have markers on ... rahter than having a method is point in markers, which doesn't tell you whjich marker is used ... it uses a marker index ... this covers the automatic marker and the children marker <cabanier> scribenick: cabanier <Cyril> scribeNick: Cyril scribe: in the same order as the rendering order first the automatic ones and then the positioned ones scribe: SVGMarkerList gives you a list of marker instances <heycam> [38]https://svgwg.org/svg2-draft/painting.html#InterfaceSVGMark erInstance [38] https://svgwg.org/svg2-draft/painting.html#InterfaceSVGMarkerInstance scribe: giving you the marker, its position ... ... as a length along the path ... the actual point that it's at and the angle andreas: can you get the segment it's on? heycam: there is a method for that in PathSegment ... in fact angle and point are not strictly needed, but they are convenient rik; can you change hte marker that you get? heycam: yes, you can change the definition andreas: sometimes you want to highlight hte marker that is selected heycam: that would be difficult for the automatic markers, because you can't change just one <birtles> (the method for getting the segment is SVGPathElement.getPathSegAtLength) heycam: you probably need to use child markers tab: I agree heycam: the marker has now two new attributes: position and reference ... the SVGMarkerList does not let you add new markers ... it's only access to the computed list of all markers ... it might be a bit tricky to change that ... if this was useful for adding/removing makers ... we could have markers and childMarkers brian: I noticed that the PathSegList throws an exception ... it is not consistent heycam: if you use the squared brackets you will not get exceptions brian: on marker list the getter is defined to return null if the index is out of range ... but other interfaces SVGPathSegList it is defined to throw an Index Size Error ... so we need to make them consistent ... one detail of that is that if you use square brackets syntax, you won't get an exception regardless of the index and range ... that's due to the behavior defined in WebIDL heycam: you could use path.markers[n] ... if you use that even if me make the method throw an exception this won't ... but I'll add the exception to the method <scribe> ACTION: heycam to make SVGMarkerList item method return an exception when the index is out of range [recorded in [39]http://www.w3.org/2012/09/19-svg-minutes.html#action06] <trackbot> Created ACTION-3379 - Make SVGMarkerList item method return an exception when the index is out of range [on Cameron McCormack - due 2012-09-26]. <scribe> ACTION: heycam to make the SVGPoint changes to take a mouse event in the constructor [recorded in [40]http://www.w3.org/2012/09/19-svg-minutes.html#action07] <trackbot> Created ACTION-3380 - Make the SVGPoint changes to take a mouse event in the constructor [on Cameron McCormack - due 2012-09-26]. Hatchings <Tav> [41]http://tavmjong.free.fr/SVG/SVGOpen2012/ARTISTS/svg_2012_ar tists.svg#15_0 [41] http://tavmjong.free.fr/SVG/SVGOpen2012/ARTISTS/svg_2012_artists.svg#15_0 tav: this is a fairly common technical drawing in maps ... but you can use patterns but there are anomalies at boundarys ... but there is also a problem for plotters, because the pen goes up and down at each boundary ... open source plotters use SVG for that ... I'd like to have some feedback on a new syntax ... you specify an angle, origin, pitch and width ... if you want multiple fills you want to use multiple elements tab: you are using the line element and it should probably a path element tav: yes you could specify a pattern that gets extruded (slide 18) heycam: dasharray is pitch: gap and width and gap ... tav: by using the path syntax you can have more complicated hatchings tab: would you do a line to if start and end don't match tav: yes tab: you determine how large the tile is by using the bounding box cyril: how is it different from a pattern tab: when you tile patterns you should paint each tile separately ... and that's not what you want for engravers for instance cyril: what makes this behavior not possible with pattern? (heycam drawing) cyril: I don't understand why we need to introduce a new element just to change the rendering algorithm doug: this makes it simpler to define a pattern that has overlaps with other pattern elements ... because it overlaps with itself (doug drawing example of the zig-zag pattern) brian: in some cases, when you have cross hatching tab: I like the syntax on the second slide ... I don't like the more compact representation using the dash syntax <birtles> brian: this would make it more easy to detect the situations andreas showed us yesterday when you want to rotate the cross-hatching so that the lines don't end up parallel with the edges of the shape doug: it would easier to animate this kind of pattern (andreas showing point hatching) tab: I like the idea, this is good! doug: especially given the parameters that control the pattern repetition brian: cross-hatching? tav: easily done with multiple fills cyril: what about nested hatchings? tab: no, this just accepts paths ... what happens if you put more complex strokes? ... filling a stroke with a gradient or an image ... does it repeat on a per tile basis or more ... what is the gradientUnit tav: I haven't thought about it brian: how important is it to specify colors? ... couldn't you do it on the referencing? ... if you want a gradient, you could do it in a mask tab: maybe we need to change line to hatchline so that its stroke property takes only a color and not a paint server heycam: I'm nto sure it's impossible to have it work for gradients ... but I can see that so that markers don't go on there tab: and also filling would be a non-sense heycam: but it could be made consistent for the model ... I would still be fine with path and line instead of hatchpath and hatchline brian: clip-path has restrictions ... already heycam: it is analogous to clip-path rik: yes, it's the opposite <birtles> (that is, children of the clipPath element) tab: if we say that some attributes are ignored, I would be fine with it tav: offset tells you where you start with the pitch tab: you could use the x,y attributes to encode the offset brian: how do multiple fills work? tab: we have to work that out yet heycam: at some points, we want to allow multiple fills and multiple strokes without vector effect tab: that is copy what CSS has done with background and that's the wrong way ... having a compound fill would be better rik: I agree brian: you could bundle a cross-hatch with a background for instance RESOLUTION: SVG 2 will have a modified version Tav's hatch proposal <scribe> ACTION: Tav to work out the details of the modifications of the initial proposal [recorded in [42]http://www.w3.org/2012/09/19-svg-minutes.html#action08] <trackbot> Created ACTION-3381 - Work out the details of the modifications of the initial proposal [on Tavmjong Bah - due 2012-09-26]. <scribe> ACTION: Tab to think about a compound paint server proposal [recorded in [43]http://www.w3.org/2012/09/19-svg-minutes.html#action09] <trackbot> Created ACTION-3382 - Think about a compound paint server proposal [on Tab Atkins Jr. - due 2012-09-26]. (andreas showing a marker centroid example) <TabAtkins> ScribeNick: TabAtkins andreas: [shows a mapping example where patterns are placed at the centroid of the various geometric objects] TabAtkins: You could do that maybe as a marker positioned at the centroid? shepazu: If we exposed that kind of thing, you'd want an explicit DOM API on <path> returning the centroid as well. <scribe> ScribeNick: Cyril doug: centroid is actually not trivial to calculate heycam: we could make the hatching large enough so that it does not repeat ... actually you can use a pattern for that doug: do we add a keyword for centroid <shepazu> [44]http://mathforum.org/library/drmath/view/57665.html [44] http://mathforum.org/library/drmath/view/57665.html <stakagi> [45]http://www.georeference.org/doc/transform_centroids.htm [45] http://www.georeference.org/doc/transform_centroids.htm (discussion on the centroid properties) lunch!! <andreas> Centroid: [46]http://user.gs.rmit.edu.au/rod/files/publications/MSIA_Cent roid.pdf [46] http://user.gs.rmit.edu.au/rod/files/publications/MSIA_Centroid.pdf [47]http://tavmjong.free.fr/SVG/SVGOpen2012/ARTISTS/svg_2012_ar tists.svg#19_0 [47] http://tavmjong.free.fr/SVG/SVGOpen2012/ARTISTS/svg_2012_artists.svg#19_0 <Tav> [48]http://tavmjong.free.fr/SVG/SVGOpen2012/ARTISTS/svg_2012_ar tists.svg#19_0 [48] http://tavmjong.free.fr/SVG/SVGOpen2012/ARTISTS/svg_2012_artists.svg#19_0 <heycam> ScribeNick: heycam extrapolated line join <Tav> [49]http://tavmjong.free.fr/SVG/LINEJOIN/index.html [49] http://tavmjong.free.fr/SVG/LINEJOIN/index.html Tav: we talked about this last time … the question at that point was "what about the math" … so I've provided it here … it's straightforward … you're looking at the curvature at the end of the path where the two segments join … using that to draw circles, and you shrink or expand circles to the edges of the path, and extrapolate from there TabAtkins: it's just expanding the circle so that it matches the edge of the path, rather than the center of the path Tav: you can have a straight line, and then displace that by half a stroke width … because sometimes these lines aren't going to intersect … you might also want to apply a miter limit TabAtkins: seems reasonable, thanks for working out the math Cyril: the curvature doesn't take into account the stroke, just the path? TabAtkins: correct Tav: it's going to be the same thing Cyril: is this implemented somewhere? Tav: Inkscape has something similar but not quite the same … the person implementing it just mirrored the path to get the curvature … which I don't think you want to do s/TabTakins/Tav/ cabanier: if they become a line, you miter them? Tav: there are cases where the circles won't intersect, or if they're both lines … then you fall back to miter heycam: would you want to apply miter-limit to this join, and also to the fallback to a miter-limited miter? TabAtkins: no, if the extrapolation doesn't work you fall back to bevel … but yes apply miter-limit to extrapolated join RESOLUTION: We will add extrapolated line joins to SVG 2, using Tav's proposal. <scribe> ACTION: Tav to add extrapolated line joins to the spec. [recorded in [50]http://www.w3.org/2012/09/19-svg-minutes.html#action10] <trackbot> Created ACTION-3383 - Add extrapolated line joins to the spec. [on Tavmjong Bah - due 2012-09-26]. GetSVGDocument interface heycam: [explains what GetSVGDocumentdoes] ed: contentDocument doesn't work on embed [51]http://lists.w3.org/Archives/Public/www-svg/2012Aug/0095.ht ml [51] http://lists.w3.org/Archives/Public/www-svg/2012Aug/0095.html heycam: from my testing there it looks like it is consistently not render on embed, yes TabAtkins: I'm fine with keeping it in, for legacy purposes … would be good to amend the spec to say that it returns the same as contentDocument for legacy purposes <ed> from the spec: "This interface is deprecated and may be dropped from future versions of the SVG specification. Authors are suggested to use the contentDocument attribute on the EmbeddingElement interface to obtain a referenced SVG document, if that interface is available." RESOLUTION: Keep GetSVGDocument in SVG 2. spaces/commas in SVG view specification heycam: just wanted to confirm what our decision was ed: we decided to allow commas and spaces in viewBox and preserveAspectRatio attributes, and to only allow comma separation in the view specification (for fragments) heycam: ok HTML integration TabAtkins: I've started to push on getting html elements directly in svg … but not the other way around …but I will do that just for the resource-like elements (like clipPath) [for view fragments, heycam has an action to check if spaces would work after unescaping url fragments, and then allow spaces in there if that works] SVG DOM improvements heycam: I've added some constructors to SVG type interfaces … for example [52]https://svgwg.org/svg2-draft/types.html#InterfaceSVGLength [52] https://svgwg.org/svg2-draft/types.html#InterfaceSVGLength … three constructors there … one initializes it to 0 … another takes the separate value and unit types … and another takes a string TabAtkins: the direction for CSS OM values api, is a constructor named "px" <TabAtkins> el.style.width = CSS.px(5) TabAtkins: then the length object has attributes for converting into various units birtles: we had a proposal like that already TabAtkins: this part of the CSS OM proposal is uncontroversial heycam: how do SVGLength and CSSLengthComponentValue relate then? TabAtkins: don't care, but they should behave the same ... you could also have CSS.length("20px") heycam: would we use CSS.px() objects in place of SVGLength? TabAtkins: you could make SVGAnimatedLength inherit from CSSLengthComponentValue … and then add your baseVal animVal on there <scribe> ACTION: Tab to write up how SVG types should work with CSS OM objects [recorded in [53]http://www.w3.org/2012/09/19-svg-minutes.html#action11] <trackbot> Created ACTION-3384 - Write up how SVG types should work with CSS OM objects [on Tab Atkins Jr. - due 2012-09-26]. rendering-mode: animate shepazu: there are various rendering modes like geometricPrecision … when you try to snap to pixels, this affects the rendering … they're optional anyway, it's a hint … one of the cases we talked about is when you're animating … if you use crispEdges for text animation, it'll be jerky … I'm proposing a hint "animate" so that the user agent know that this is going to be animated TabAtkins: so it can switch to a low cost rendering mode? cabanier: it's higher cost shepazu: you should switch to a mode that gives the best visual effect for being animated ed: if you render a rectangle slowly across the screen you'll see the snapping happening … or the blurring if you use the normal one cabanier: how would you solve it? draw half pixels? heycam: how is it different from geometricPrecision? shepazu: an author won't know that the way to make text look good when you're animating is "geometricPrecision" … but if you have a mode called "animate", the author will know … you could say in the spec "if you're animating, use geometricPrecision", but it will be hard for authors to discover … I don't feel too strongly about it, just thought it would be easier to use birtles: I think most UAs already detect if something is being animated and optimize it Cyril: I think the difference is geometricPrecision, some heuristic could not detect what the user would prefer … the browser can detect it's going to be animated shepazu: maybe we should add in for crispEdges that browsers may wish to disregard this when animating text ed: I think it depends on the device heycam: we could add a note for "auto" to say that text shouldn't be pixel snapped when it is being animated <Cyril> hand RESOLUTION: {shape,text}-rendering should say that "auto" means that pixel snapping shouldn't be done when animating <Cyril> hand <Cyril> hand- <TabAtkins> Gotta hand it to Zakim, he's pretty weird <TabAtkins> On the other hand <scribe> ACTION: Doug to add notes to {shape,text}-rendering auto to mention not doing pixel snapping when animating [recorded in [54]http://www.w3.org/2012/09/19-svg-minutes.html#action12] <trackbot> Created ACTION-3385 - Add notes to {shape,text}-rendering auto to mention not doing pixel snapping when animating [on Doug Schepers - due 2012-09-26]. <Cyril> -hand SVG documentation shepazu: for W3C's documentation, I'd like to automatically extract element/attribute/property names and values from the spec … if you could also send me tutorials you'd like to see CSS Variables and Params shepazu: params should use the variable mechanism for substituting values … for text content, we need something to render it into the DOM, possibly <tref> TabAtkins: make it accept a var() function in addition to a url() shepazu: I'll work with Tab on this rounded corners shepazu: [draws a star with rounded corners] … [but only on the outer points] shepazu: my proposal is that you bisect the angle, the center point of the circle is the point on that line in which a circle of that radius will fit … you specify a radius TabAtkins: this is like a custom line join? shepazu: yes, basically … a comma separated list that repeats like dash array … you give a list of radii, and it applies them in sequence when a corner is encountered TabAtkins: this is the arcTo from canvas heycam: is this like a line join? shepazu: but this should affect the fill ... with my proposal, you would say r="5", with Tab's proposal you'd have to change each edge in the path data heycam: is this only straight line segments? shepazu: no any segments TabAtkins: you want to preserve curve continuity when you come into the arc shepazu: Tab's counterproposal is better than what you can do in path today TabAtkins: yes because you have to do trig shepazu: this proposal could also apply to rect, polyline, polygon, star, connector … on a connector, you might want it to go through an intermediate point (with an orthogonal connector) … but with a rounded corner there … this proposal reduces the amount that you have to type … even on a <path>, it's easy then to style it differently … rather than tweaking the path data TabAtkins: sounds good to me … the math shouldn't be hard to describe shepazu: I also want there to be a way to pull this out … toPathData() on a shape … I'm not sure I want to see it on path, but on all other polygon-like elements … on straight lines it's really easy … but there could be some odd beziers that would have a bad effect with this … so for paths leave it to arcTo, but r on other elements … this property wouldn't give you control of x and y, just a single radius … I'd like to see the difficulties it would introduce to path, because I'd like to see it there TabAtkins: there will be some cases that will be difficult to translate into paths, and some that will look weird shepazu: I don't mind about the edge cases ... sometimes it will add to the fill and sometimes it will remove from the fill heycam: it always goes on the smaller angle? (<180 degrees?) shepazu: yes ... the property would be dasharray-like, a sequence of radii TabAtkins: if the r argument on a rect applied in the same order as border-radius that would be good heycam: what about applying this to <rect rx ry>? shepazu: rx ry should win ... if it's not possible to fit the circle between the segments, then it gets skipped TabAtkins: is this an attribute or a property? shepazu: property <TabAtkins> also a presentation attribute TabAtkins: just call the property "r" <ChrisL> @tab all properties are also presentation attributes, in svg ed: I want to allow the same thing that border-radius could do on rect … different x/y radii <ChrisL> @ed but then you need to specify how to align the major and minor axes of the ellipses. circular radii are much easier for rounding arbitrary shapes shepazu: ellipses would be hard <ed> ChrisL, yes, I meant to make <rect> a specialcase TabAtkins: and you'd have to worry about rotation shepazu: let's not do radii s/radii/different x and radii/ *x and y shepazu: the only element it wouldn't be allowed on is ellipse <krit> Why not on a per element basis in general <krit> circle, rect, ellipse doesn't make sense for me with a new r rect does, since you can have different things at different corners circle and ellipse I don't think it's needed <krit> heycam: Isn't rx and ry enough on rect? <birtles> krit: they set the same radii on all vertices <ChrisL> @krit only one value for the whole rect, though <krit> ok <ChrisL> although we could extend rx and ry on rect to allow (1..4) values that's also an option, but if we allow this new property on polygon, polyline, etc. I think it makes sense to use it on rect too birtles: when do you want to set different radii on different points? TabAtkins: for the star example, you want radius, no radius, radius, no radius, ... <ChrisL> as noted earlier, rect differs by allowing elliptical arc (already). only circluar arc on plyline, polygon and path though elliptical arcs make less sense (at least, they're harder) on non 90-degree angles <ChrisL> so, i thnk it does not make sense on rect and instead, the existing rx and ry should be extended to take a list i.e. not rect <shepazu> ChrisL, we're proposing both TabAtkins: we can extend rx/ry attributes too <ChrisL> while adding the new r property on path, polygon, polyline and star <ChrisL> ok RESOLUTION: We add Doug's r="" proposal for rounded corners for shape-y elements, and pending the math, for paths too. ... We also allow rx/ry to extend to multiple values on rect. <scribe> ACTION: Doug to add the r="" proposal to SVG 2. [recorded in [55]http://www.w3.org/2012/09/19-svg-minutes.html#action13] <trackbot> Created ACTION-3386 - Add the r="" proposal to SVG 2. [on Doug Schepers - due 2012-09-26]. <ChrisL> i can take the rx ry extending action <scribe> ACTION: Chris to extend rx/ry on rect to allow lists of values. [recorded in [56]http://www.w3.org/2012/09/19-svg-minutes.html#action14] <trackbot> Created ACTION-3387 - Extend rx/ry on rect to allow lists of values. [on Chris Lilley - due 2012-09-26]. there might be some complications with the DOM there, they're SVGAnimatedLengths now -- would they become SVGAnimatedLengthLists? not sure. <ChrisL> yes I suspect so <ChrisL> do people depend on that in code? it's possible <ed> since we're making them properties we'd need to probably change the DOM somehow anyway less likely than x/y/width/height but certainly possible <ChrisL> so that could be a script breaking change could be it should be thought about ): s/):/:)/ JSON serialization <shepazu> [57]http://www.w3.org/Graphics/SVG/WG/wiki/Path_toJSON [57] http://www.w3.org/Graphics/SVG/WG/wiki/Path_toJSON TabAtkins: the one change I made to your page was removing the ability to do multiple segments with the one command letter cabanier: you could make x/y/etc. into an array shepazu: you could have p[$1\47].x, p[$1\47].y, p[$1\47].x, p[$1\47].y TabAtkins: what does that buy you? <krit> what? ZAKIM!!! cabanier: it would help you iterate over them TabAtkins: you would never want to do that shepazu: you also changed sweepFlag to clockwise TabAtkins: yes birtles: what's wrong with an array of points in each command? TabAtkins: it's a bit harder to work with … for a MoveTo, for example, instead of blah.x you have to do blah.p[$1\47].x <krit> couldn't it also mean that the number of input elements is unpredictable? birtles: if you take this and turn it back into a string, it's easier if it's an array ... there was one library I was using... <TabAtkins> s/p\[0\].x/p\[0\]/ … it uses points … but I can see that could be cumbersome heycam: if you have a fixed number of points per command (<= 4) which we do, then I think not use an array is better shepazu: one downside to this is that it doesn't map to the existing path command letters <krit> paper.js also has a Path API you could look at [58]http://paperjs.org/reference/ [58] http://paperjs.org/reference/ shepazu: this current proposal it's more verbose but clearer cabanier: it doesn't use more memory really ed: will we have path commands that take arbitrary parameter lists? TabAtkins: you can't, because you can't do the automatic segment repetition that the existing commands do ... the catmull-rom command takes a list of points though shepazu: yes I wanted to have a new "p" start a separate catmull-rom curve <scribe> ACTION: Tab to investigate paper.js' arcThrough [recorded in [59]http://www.w3.org/2012/09/19-svg-minutes.html#action15] <trackbot> Created ACTION-3388 - Investigate paper.js' arcThrough [on Tab Atkins Jr. - due 2012-09-26]. <cabanier> *krit: we're looking at the paper.js stuff * JSON serialization of SVG shepazu: there are some reasons to want a standardised JSON serialisation of markup in general, including SVG … this is something that some script libraries do anyway … it would be good to have a unified way for them to use JSON serializations of SVG … rather than each have an ad hoc one … another thing is it would be useful for postMessage … this is more general than SVG really … it wants to be able to serialise any given markup … this is not recommended for browsers to implement TabAtkins: we would attach a toJSON to Element, and a fromJSON to Document -- end -- <stakagi> [60]http://www.w3.org/Graphics/SVG/WG/track/issues/2050 [60] http://www.w3.org/Graphics/SVG/WG/track/issues/2050 stakagi: for the JSON path syntax, the names should align with the proposal for expanded path segment elements RRSAgent: make minutes Summary of Action Items [NEW] ACTION: Cameron to add href on all elements with xlink:href and add src to image and script [recorded in [61]http://www.w3.org/2012/09/19-svg-minutes.html#action05] [NEW] ACTION: Chris to extend rx/ry on rect to allow lists of values. [recorded in [62]http://www.w3.org/2012/09/19-svg-minutes.html#action14] [NEW] ACTION: Cyril to write up a proposal for a triangular representation for gradient meshes [recorded in [63]http://www.w3.org/2012/09/19-svg-minutes.html#action03] [NEW] ACTION: Doug to add notes to {shape,text}-rendering auto to mention not doing pixel snapping when animating [recorded in [64]http://www.w3.org/2012/09/19-svg-minutes.html#action12] [NEW] ACTION: Doug to add the r="" proposal to SVG 2. [recorded in [65]http://www.w3.org/2012/09/19-svg-minutes.html#action13] [NEW] ACTION: ed make SVGDocument into an alias for document [recorded in [66]http://www.w3.org/2012/09/19-svg-minutes.html#action04] [NEW] ACTION: heycam to make SVGMarkerList item method return an exception when the index is out of range [recorded in [67]http://www.w3.org/2012/09/19-svg-minutes.html#action06] [NEW] ACTION: heycam to make the SVGPoint changes to take a mouse event in the constructor [recorded in [68]http://www.w3.org/2012/09/19-svg-minutes.html#action07] [NEW] ACTION: Rik to find out what method Adobe uses for smoothing mesh gradients and report to group [recorded in [69]http://www.w3.org/2012/09/19-svg-minutes.html#action02] [NEW] ACTION: Tab to investigate paper.js' arcThrough [recorded in [70]http://www.w3.org/2012/09/19-svg-minutes.html#action15] [NEW] ACTION: Tab to think about a compound paint server proposal [recorded in [71]http://www.w3.org/2012/09/19-svg-minutes.html#action09] [NEW] ACTION: Tab to write up how SVG types should work with CSS OM objects [recorded in [72]http://www.w3.org/2012/09/19-svg-minutes.html#action11] [NEW] ACTION: Tav to add extrapolated line joins to the spec. [recorded in [73]http://www.w3.org/2012/09/19-svg-minutes.html#action10] [NEW] ACTION: Tav to specify radial gradient behaviour when the focal point is outside the circle [recorded in [74]http://www.w3.org/2012/09/19-svg-minutes.html#action01] [NEW] ACTION: Tav to work out the details of the modifications of the initial proposal [recorded in [75]http://www.w3.org/2012/09/19-svg-minutes.html#action08] [End of minutes]
Received on Wednesday, 19 September 2012 15:35:35 UTC