Re: Patch to allow Cairo-based software to print to laser cutters on Windows

Rick Yorgason <[email protected]> Thu, 18 Oct 2018 14:02:47 -0700
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
Sure enough, Cairo seems to be culling zero-width lines somewhere, so it 
doesn't matter whether or not I check for zero here.

For now, I propose that I get rid of the zero-check in my patch, so 
anything <= 1 device unit is drawn with a PS_COSMETIC pen. This value 
gets rounded to an integer, so this approach is consistent with the 
definition of a hairline being the smallest thing a printer can print.

In the long run, it would be nice to track down where Cairo is culling 
zero-width lines and allow them through, as I believe postscript and pdf 
both treat zero-width lines as hairlines.

-Rick-


On 2018-10-18 12:09, Bill Spitzak wrote:
> I suspect there is code in Cairo that assumes zero-width strokes are 
> invisible, so it may be difficult to fix it for only this device.
>
> The main reason for using zero rather than any other number is that it 
> survives scaling, which is pretty important for a magic value.
>
> On Thu, Oct 18, 2018 at 11:12 AM Rick Yorgason <[email protected] 
> <mailto:[email protected]>> wrote:
>
>     Including zero-width strokes makes sense to me. After all, true
>     hairlines are supposed to act as though they're zero-width.
>
>     The reason I implemented it this way it's because I was worried
>     about two use cases:
>
>     1) Some applications might rely on zero-width lines being
>     invisible. (Imagine an artist who selects all the lines he wants
>     to hide and changes their line width to zero.)
>
>     2) Maybe some CNC machines rely on zero-width lines? PS_COSMETIC
>     lines are always 1 unit wide, so there would be no way to send
>     zero-width lines to the printer any more. This seems unlikely to
>     be a problem, but it's possible.
>
>     (1) can be fixed by the calling application, and (2) isn't likely
>     a real problem, and if we include zero-width strokes it would make
>     it easier for developers to make true zero-width hairlines (since
>     they don't need to know the target device's minimum unit size), so
>     I'm down for it.
>
>     -Rick-
>
>     On October 18, 2018 9:10:07 AM PDT, Carl Worth <[email protected]
>     <mailto:[email protected]>> wrote:
>
>         On Wed, Oct 17 2018, Rick Yorgason wrote:
>
>             With this patch, I can use Inkscape to set my stroke width
>             to 0.001" and it will cut through the material as expected. 
>
>
>         If we're going to have a magic value here, I think I'd be much happier
>         to have 0 be the magic value.
>
>         (I know that your code isn't actually making 0.001" be magic, but a
>         whole range of values. I think I would really prefer to have that range
>         include rather then exclude 0.0.)
>
>         Does anyone see any reason why a stroke width of 0 shouldn't be treated
>         this way?
>
>         I think that would make a much better way to be able to document
>         this. ("Use a value of 0 to get a PS_COSMETIC pen which is useful when
>         targeting devices such as laser cutters".)
>
>         And speaking of documentation, it seems this patch should also be
>         touching up the documentation, such as in cairo_set_line_width?
>
>         I know the code is specific to the Windows backend, but I think it's
>         reasonable to put a backend-specific note into the general documentation
>         in a case like this.
>
>         -Carl
>
>
>     -- 
>     Sent from my Android device with K-9 Mail. Please excuse my brevity.
>     -- 
>     cairo mailing list
>     [email protected] <mailto:[email protected]>
>     https://lists.cairographics.org/mailman/listinfo/cairo
>

-- 
cairo mailing list
[email protected]
https://lists.cairographics.org/mailman/listinfo/cairo