[cairo] Extents of degenerate paths
behdad at behdad.org
Thu May 10 09:35:48 PDT 2007
Bill, you are more than welcome to come up with a backward-compatible
proposal (like a new hairline mode, no abuse of line-width=0), with
complete semantics of how it should work (for example, what happens if
you draw a line from 0,0 to 0,10?. After that you need to find someone
to implement it.
Other than that, I don't think raising this issue again and again
changes anything. Also I don't see any indication in T Rowley's message
that he was trying to achieve hairlines.
On Thu, 2007-05-10 at 11:38 +0100, Bill Spitzak wrote:
> Yes returning a bounding box of zero is correct for the definition of
> how Cairo works. The problem is that the original poster wants the same
> thing I have requested quite a few times:
> Setting the line width to zero should produce a "special" stroke mode
> which draws very thin but nice-looking lines that hide the antialiasing
> on the same shape when filled and never have antialiasing if they are
> horizontal or vertical. It also, I guess, changes the rules for the
> bounding box so that it does not really surround the pixels that will be
> drawn, but instead is the bounding box of an infinitesimally thin line.
> Believe me, this is EXTREMELY common, so common that T Rowley just
> assumed that he should set the line width to zero to get this effect, as
> though it was second nature. Notice that he purposely set the line
> width, rather than leaving it at the default value, which reveals this
> implicit assumption. Every other graphics api I have ever seen that
> allows the line width to be set has exactly this behavior: zero is a
> special mode that produces visible lines, often quite different than
> what you get with 1 or with .000001.
> Behdad Esfahbod wrote:
> > On Wed, 2007-05-09 at 15:20 +0200, David Turner wrote:
> >> On Mon, 07 May 2007 20:07:15 -0400, "Behdad Esfahbod" <behdad at behdad.org> said:
> >>> On Mon, 2007-05-07 at 14:46 -0400, T Rowley wrote:
> >>>> In Mozilla SVG, I've run across the case where the code needs to check
> >>>> the extents of a single diagonal line. With stroke_width set to zero I
> >>>> get back 0,0,0,0 rather than the a tight bounding box for the line.
"Those who would give up Essential Liberty to purchase a little
Temporary Safety, deserve neither Liberty nor Safety."
-- Benjamin Franklin, 1759
More information about the cairo