On 10/18/2012 11:08 AM, Bache-Wiig Jens wrote:
>> Maybe as a best effort we could introduce a different render hint,
>> asking QPainter to treat cosmetic pens as geometric, would be a better
>> solution for Morten's high-dpi use case. Then it would be opt-in instead
>> of opt-out, and no existing applications would be affected. Turning on
>> high-dpi mode could be documented to also set the render hint.
> ...
>> In summary (or TL;DR), my new proposal would be to just make
>> QPainter::NonCosmeticDefaultPen work as advertised, and have it be set
>> by default when high-dpi mode is enabled. This way there would be
>> minimal breakage of existing code. Thoughts?
>
>
> No I don't think this would work. That way we will get the obscure 
> scalability issues that Uwe mentioned but it would only happen on retina 
> capable computers so it can become even harder to discover.

True, the fact that applications that are tested and working on 
non-retina suddenly break on retina will cause confusing behavior even 
for applications written from scratch with Qt 5. Assuming we have as a 
goal that applications should work in high-dpi mode without any testing 
or modifications being needed. Morten, is that the case?

> The original proposal doesn't really have these problems though. We already 
> set the render hint NonCosmeticPenByDefault on GraphicsView to avoid 
> inconsistent scalability issues there and keep style code working when being 
> scaled.

That's why I figured that setting it for high-dpi would make sense as 
well, but at least in the QGraphicsView case you wouldn't get any 
surprises since it's always set. Having a potentially breaking behavior 
depend on whether high-dpi is enabled or not might not be a good idea 
after all...

> I think we should extend this behavior to QPainter in general by only 
> initialising QPen to 1 instead of 0. We keeping the explicit 0-pen working as 
> before. In addition, we introduce a CosmeticPenByDefault render hint  that 
> Qwt can set on its painter to make all pens cosmetic by default. (not just 
> 0-pen) Though the Qt4PainterRenderHint could still explicitly give only 0 pen 
> cosmetic properties.

I'm not sure Qwt actually _wants_ all pens to be cosmetic by default. 
For > 0 width pens it must already have had explicit calls to 
setCosmetic(true), so it's really only the default-constructed QPens 
that would be an issue. So I don't see how CosmeticPenByDefault would be 
needed in addition to Qt4CompatiblePainting.

--
Samuel
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to