W3C home > Mailing lists > Public > www-svg@w3.org > May 2002

RE: fill-rule problem ..

From: Craig Brown <cmb@research.canon.com.au>
Date: Sun, 05 May 2002 10:05:37 +1000
To: "Doug Schepers" <doug@schepers.cc>
Cc: <www-svg@w3.org>
Message-Id: <20020505090533.EECA58B10@bellmann.research.canon.com.au>
Lads,

The problem with all this stuff is the implementation.

Imaging the situation where you have a U...

Do you fill inside the U?

If the answer is NO - think about the case where the top of the U touch.
Now - do you fill?  I assume the answer for a proposed "always" fill is
YES.

Glitch is now you can't do scan-line rendering.  A scanline at the top of
the U effects the result for a scanline in the middle of the U.

In reality - it is usually very easy to modify the content to get the effect
required rather than adding 2d complexity to filling.

...cmb

--Original Message--:
>It occurred to me that it might be useful to be able to specify more than
>one color for fill, to alternate the color according to different
>fill-rules. For instance:
>
><polygon points="100,20 165,196 26,87 176,87 42,198 " style='stroke:blue;
>fill:yellow,blue; fill-rule:evenodd;'/>
>
>would give a star with yellow arms and a blue center.
>
>This might also be used to completly fill an enclosed area, by specifying
>the same color twice.
>
>Just an idea-
>-Doug
>
>
>> -----Original Message-----
>> From: www-svg-request@w3.org [mailto:www-svg-request@w3.org]On Behalf Of
>> Goessner / MecXpert
>> Sent: Friday, May 03, 2002 4:46 AM
>> To: www-svg@w3.org
>> Subject: Re: fill-rule problem ..
>>
>>
>> A solution to this problem might be an additional fill-rule, perhaps
>>
>> fill-rule="always"
>>
>> --
>> stefan
>>
>>
>>
>> > i simplified the path to a square with a "V" in it.
>> >
>> > <svg width="300" height="200">
>> >   <path id="A" transform="translate(20,20)" stroke-width="2"
>> stroke="blue"
>> > fill="lightgray" fill-rule="nonzero"
>> >         d="M0,0 H100 V100 H0 Z M10,50 50,90 90,50" />  <!-- clockwise /
>> > counterclockwise -->
>> >   <path id="B" transform="translate(140,20)" stroke-width="2"
>> stroke="blue"
>> > fill="lightgray" fill-rule="nonzero"
>> >         d="M0,0 H100 V100 H0 Z M90,50 50,90 10,50" />  <!-- clockwise /
>> > clockwise -->
>> > </svg>
>> >
>> > 1) if a (sub)path is not closed, an invisible closepath from the
>> (sub)path's
>> > current point to its initial point is used for filling.
>> > 2) if one path contains the other completely the fill-rule determines if
>> the
>> > subpath has to be filled or not.
>> > 3) fill-rule="nonzero" (the default) will
>> >    a) fill the inner subpath, if it has the same (angular) direction as
>> the
>> > outer subpath.
>> >    b) not fill the the inner subpath, if its angular direction is
>> different
>> > to the outer subpath's.
>> > 4) fill-rule="evenodd" will never fill the inner subpath
>> >
>> >
>> > it is conform to the SVG 1.1 spec, that there is *no way* to fill the
>> square
>> > in path (id="A") completely.
>> > the path can be modified (id="B")to match point 3a) above. But
>> in case of
>> an
>> > "N"-shaped subpath instead of a "V" that wouldn't help either.
>> > --
>> > stefan
>> >
>> >
>> > ----- Original Message -----
>> > From: "Doug Schepers" <doug@schepers.cc>
>> > To: "Goessner / MecXpert" <goessner@mecxpert.de>
>> > Sent: Wednesday, May 01, 2002 2:24 PM
>> > Subject: Re: fill-rule problem ..
>> >
>> >
>> > > Could this be a bug in ASV3?  I got it to render as solid once, after
>> > > refreshing a couple of times, and once got a blue artifact
>> line straight
>> > > from (50,50) to (90,50). [WinMe/IE6/ASV3]
>> > >
>> > > What is the logic behind it not filling the square with gray? No lines
>> are
>> > > being crossed. Do I misunderstand the fill rule?
>> > >
>> > > -Doug
>> > >
>> > > ----- Original Message -----
>> > > From: "Goessner / MecXpert" <goessner@mecxpert.de>
>> > > To: <www-svg@w3.org>
>> > > Sent: Wednesday, May 01, 2002 5:48 AM
>> > > Subject: fill-rule problem ..
>> > >
>> > >
>> > > > i have a simple square with two quadratic bezier segments
>> in it. it is
>> > > easy
>> > > > to define this by a single path element.
>> > > >
>> > > > <svg>
>> > > >   <path transform="translate(20,20)" stroke-width="2" stroke="blue"
>> > > > fill="lightgray"
>> > > >         d="M0,0 H100 V100 H0 Z M10,50 Q30,30 50,50 T90,50" />
>> > > > </svg>
>> > > >
>> > > > but i cannot find a fill-rule to completely fill the
>> square. even the
>> > new
>> > > > winding-count rule wouldn't work.
>> > > >
>> > > > --
>> > > > stefan goessner
>> > > >
>> > > >
>> > >
>> >
>>
>>
>
>
>
>
--
Craig Brown      Principal Software Engineer
Canon Information Systems Research Australia     Phone: 61 2 9805 2649
1 Thomas Holt Drive,  North Ryde,  NSW 2113.     Fax:   61 2 9805 2929
Received on Sunday, 5 May 2002 05:31:44 GMT

This archive was generated by hypermail 2.3.1 : Friday, 8 March 2013 15:54:22 GMT