On Oct 12, 2012, at 6:31 PM, Tony Van Eerd <tvane...@rim.com> wrote:
> I think Windows also uses 0-width to mean the same thing. > > On the other hand, I worked on a drawing library that used sub-pixel lines. > Via good anti-aliasing, A 0.5 width line, even if vertical/horizontal, would > be drawn semi-transparent. A 0-width line would thus be invisible. Qt 4.8 and 5.0 are actually doing this when using the raster paint engine. The exception is that 0 jumps back to 1 due to the definition of QPen. Cheers, Lars > > > >> -----Original Message----- >> From: development-bounces+tvaneerd=rim....@qt-project.org >> [mailto:development-bounces+tvaneerd=rim....@qt-project.org] On Behalf >> Of Samuel Rødal >> Sent: Friday, October 12, 2012 11:02 AM >> To: development@qt-project.org >> Subject: Re: [Development] Proposal: Make QPen non-cosmetic by default >> >> On 10/12/2012 03:17 PM, Uwe Rathmann wrote: >>> On Fri, 12 Oct 2012 12:21:30 +0000, Bache-Wiig Jens wrote: >>> >>>> After all what is the point of doing a >>>> major version unless we don't even allow ourselves to change broken >>>> defaults. >>> >>> There is nothing broken: it's a well defined API that behaves exactly >>> like it is documented. Your suggestion is about modifying an >> illogical >>> API. >>> >>> I don't know the reasons why the API was decided once the way it is - >> but >>> it is so confusing, that I can't believe that it happened by accident >>> ( being documented later ). My guess is that it was following some >> other >>> system that did it this way. >> >> Originally a 0-width pen was the only way to get the cosmetic pen >> behavior. Later on setCosmetic() was added to be able to have any pen >> width be cosmetic. >> >> I guess the whole 0-width thing comes from X11, where 0 is a special >> value with the following documentation: "Thin lines (zero line-width) >> are one-pixel-wide lines drawn using an unspecified, device-dependent >> algorithm." >> >> http://tronche.com/gui/x/xlib/GC/manipulating.html also contains this >> bit of documentation: >> >> "A line-width of zero may differ from a line-width of one in which >> pixels are drawn. This permits the use of many manufacturers' line >> drawing hardware, which may run many times faster than the more >> precisely specified wide lines. >> >> In general, drawing a thin line will be faster than drawing a wide line >> of width one. However, because of their different drawing algorithms, >> thin lines may not mix well aesthetically with wide lines. If it is >> desirable to obtain precise and uniform results across all displays, a >> client should always use a line-width of one rather than a line-width >> of >> zero." >> >> So 0-width lines in X11 are not only implicitly cosmetic, but also have >> less strict guarantees when it comes to correctness, so that they can >> be >> optimized by custom hardware. I guess originally QPen simply mirrored >> this behavior, which is probably why as you noted 0-width pens are >> faster than 1-width pens with the X11 paint engine in 4.x. >> >> Still, I agree with Jens that the API of having 0-width pens and >> cosmetic pens as separate concepts is confusing. If we wanted something >> akin to the 0-width concept of X11 it should rather have been a render >> hint saying that it's acceptable for the application to get less >> accurate line drawing in exchange for better performance. I'm not sure >> how valid that use case is these days though. >> >> -- >> Samuel >> >> _______________________________________________ >> Development mailing list >> Development@qt-project.org >> http://lists.qt-project.org/mailman/listinfo/development > > --------------------------------------------------------------------- > This transmission (including any attachments) may contain confidential > information, privileged material (including material protected by the > solicitor-client or other applicable privileges), or constitute non-public > information. Any use of this information by anyone other than the intended > recipient is prohibited. If you have received this transmission in error, > please immediately reply to the sender and delete this information from your > system. Use, dissemination, distribution, or reproduction of this > transmission by unintended recipients is not authorized and may be unlawful. > _______________________________________________ > Development mailing list > Development@qt-project.org > http://lists.qt-project.org/mailman/listinfo/development _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development