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