- From: Rik Cabanier <cabanier@gmail.com>
- Date: Tue, 28 Aug 2012 18:33:44 -0700
- To: Dirk Schulze <dschulze@adobe.com>
- Cc: Alan Stearns <stearns@adobe.com>, Bear Travis <betravis@adobe.com>, "Tab Atkins Jr." <jackalmage@gmail.com>, www-style list <www-style@w3.org>
- Message-ID: <CAGN7qDCExHkmgcKDD6n67nf-803fewsYoqHFeWtuQ48dTGvVrQ@mail.gmail.com>
On Tue, Aug 28, 2012 at 5:44 PM, Dirk Schulze <dschulze@adobe.com> wrote: > > On Aug 28, 2012, at 5:09 PM, Rik Cabanier <cabanier@gmail.com> wrote: > > > In SVG, fill-rule [1] and clip-rule[2] are inherited so they can be set > on a <g> element and affect the paths of the children. > > > > 1: http://www.w3.org/TR/SVG/painting.html#FillProperties > > 2: http://www.w3.org/TR/SVG/masking.html#EstablishingANewClippingPath > > > > On Tue, Aug 28, 2012 at 3:54 PM, Dirk Schulze <dschulze@adobe.com> > wrote: > > > > On Aug 28, 2012, at 3:51 PM, Rik Cabanier <cabanier@gmail.com> wrote: > > > > > I think fill/clip-rule should stay with the marking operator in CSS. > > > It makes much more sense to keep them there than making them part of > the graphics state and it will make the implementation much easier. > > > (I know this is different from SVG.) > > I am not sure what you mean. Can you clarify more please? > > > > In SVG, fill-rule [1] and clip-rule[2] are inherited so they can be set > on a <g> element and affect the paths of the children. > > > > It would be better if these rules are not inherited and just specified > per fill/stroke/clip. Not only would it save you from having to keep them > in the state, it would also help if you move paths around since you don't > have to remember their inherited winding. I've never seen a case where you > want to use the same path with different fill rules. > > > Like you noted, they are already defined in SVG 1.1. > > Also 'inherit' is one of the default keywords that apply to every CSS > property and the default value is not 'inherit' but 'nonzero'. Therefore > you need to specify the 'fill-rule'/'clip-rule' on the path itself to > 'inherit'. If you do that, I assume you are aware that it inherits the > value from the parent :). True, but do you want this in CSS? Have you ever seen someone use this? Better to keep the winding rule with the drawing operator. > > > > 1: http://www.w3.org/TR/SVG/painting.html#FillProperties > > 2: http://www.w3.org/TR/SVG/masking.html#EstablishingANewClippingPath > > > > > > > > On Tue, Aug 28, 2012 at 3:28 PM, Dirk Schulze <dschulze@adobe.com> > wrote: > > > > > > On Aug 28, 2012, at 1:55 PM, Alan Stearns <stearns@adobe.com> wrote: > > > > > > > (I hope I fixed the quoting correctly) > > > > > > > > On 8/28/12 12:17 PM, "Bear Travis" <betravis@adobe.com> wrote: > > > > > > > >> On 8/28/12 11:29 AM, "Dirk Schulze" <dschulze@adobe.com> wrote: > > > >> > > > >>> On Aug 28, 2012, at 8:50 AM, Tab Atkins Jr. <jackalmage@gmail.com> > wrote: > > > >>> > > > >>>> On Tue, Aug 28, 2012 at 6:45 AM, Dirk Schulze <dschulze@adobe.com > > > > > >>>> wrote: > > > >>>>> Hi, > > > >>>>> I think the keywords for <fill-rule> should be removed from the > syntax > > > >>>>> of 'polygon()'[1]. I think the shapes on the exclusion spec can > be > > > >>>>> reused in other contexts as well. One example is <shape> as > shorthand > > > >>>>> for 'clip-path' in the CSS Masking[2] spec. But for 'clip-path' > we > > > >>>>> already have the 'clip-rule' property with the values 'nonzero' > and > > > >>>>> 'evenodd' [3]. > > > >>>>> I would suggest using the 'fill-rule' property from SVG [4] to > specify > > > >>>>> the fill rule on 'polygon()'. This property is already > implemented by > > > >>>>> all browsers anyway. > > > >>>> > > > >>>> I don't see how that works, if shape functions are going to be > usable > > > >>>> in multiple properties. > > > >>> > > > >>> We have clip-rule and fill-rule. So where is the problem? > > > >> > > > >> What would the effect be on CSS Exclusions? [1] > > > >> > > > >> It seems like the css for specifying a shape-inside [2] would > change from > > > >> { > > > >> shape-inside: polygon(evenOdd, 0 0, 10px 0, 5px 10px 0 0); > > > >> } > > > >> To > > > >> { > > > >> shape-inside: polygon(0 0, 10px 0, 5px 10px, 0 0); > > > >> fill-rule: evenOdd; > > > >> } > > > >> > > > >> Is this correct? > > > >> > > > >> -Bear > > > >> > > > >> [1] http://dev.w3.org/csswg/css3-exclusions/ > > > >> [2] http://dev.w3.org/csswg/css3-exclusions/#shape-inside-property > > > > > > > > Bear, > > > > > > > > > > > > I believe that's what Dirk is asking for. But it sounds to me like it > > > > would need to be an additional property per > > > > property-that-accepted-shape-syntax (fill-rule, clip-rule - what > about > > > > shape-inside-rule and shape-outside-rule?). And these new properties > would > > > > only apply if the polygon syntax was used. I think it might be > better kept > > > > as a parameter in the polygon function. > > > > > > > Yes, you might be right. > > > > > > Basic shapes could be a good fit for 'clip-path'. For 'clip-path' we > have the 'clip-rule' property which sets the fill-rule. The keyword for the > fill-rule on 'polygon()' is optional but nonzero by default. I would like > to use the value of the 'clip-rule' property if no keyword was set on > 'polygon()'. Is it possible that CSS Exclusions also let other > specifications and properties define the clip rule then? E.g. > > > > > > clip-rule: evenodd; > > > clip-path: polygon(25% 25%, 50% 50%, 75% 25%); > > > > > > The clip rule would be evenodd for the polygon(), since 'clip-rule' > property defines it. > > > > > > If the rule was set on the polygon(), it overrides any other property > that aims to set the fill rule. > > > > > > Does that sound reasonable for you? > > > > > > Greetings, > > > Dirk > > > > > > > Thanks, > > > > > > > > Alan > > > > > > > > > > > > > > > > > > >
Received on Wednesday, 29 August 2012 01:34:12 UTC