[cairo] Patch to allow Cairo-based software to print to laser cutters on Windows
Rick Yorgason
rick at firefang.com
Thu Oct 18 21:02:47 UTC 2018
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 <rick at firefang.com
> <mailto:rick at firefang.com>> 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 <cworth at cworth.org
> <mailto:cworth at cworth.org>> 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
> cairo at cairographics.org <mailto:cairo at cairographics.org>
> https://lists.cairographics.org/mailman/listinfo/cairo
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cairographics.org/archives/cairo/attachments/20181018/ca6ae1b0/attachment.html>
More information about the cairo
mailing list