[cairo] Cairo and ISO C++
Bill Spitzak
spitzak at gmail.com
Tue Jan 14 15:10:14 PST 2014
Other things I would like to see addressed in Cairo:
ZERO LINEWIDTH
A huge complaint about Cairo is that it is "fuzzy". It tries to hide
this by defaulting the line width to 2, which just makes everything look
thick.
I would change the default method of stroking a line to purposely draw
non-antialised horizontal and vertical lines that are about 1/96 of an
inch thick. In cairo setting the line width to 1, and offsetting any
path that is being stroked by .5, .5 does a good job of this.
To match virtually every other graphics library I have seen, this state
can be chosen by setting the line width to zero, and is turned off by
setting the line width to non-zero (including MINFLOAT).
If this is not provided most programmers "fix" it by turning off
antialiasing, which is not at all desirable and makes all the rest of
the graphics look a lot worse.
ADJACENT SHAPES
I have no solution but everybody hates the fact that drawing two filled
shapes that touch makes a slightly transparent line between them due to
antialiasing. Again most users "fix" this by turning off antialiasing,
which is not a way to get nice looking output.
DOTS
Right now two moveto's in a row do nothing. This should draw a dot, at
least if rounded end caps are used. Currently the user has to draw an
extremely short stroke to get a dot which is not very intuitive, and may
be hard to accelerate. I believe this was done because some font formats
have useless moveto's but I think a better fix would be for the
translator from that format to remove these first.
PRESERVE PATH
I would have filling/stroking a path not clear the path, but instead put
cairo in a state so the next moveto/lineto will clear the path. This
will allow fill, stroke to work like users expect, and by removing the
"preserve" calls reduce the size of the api.
More information about the cairo
mailing list