Fix aliased painting with non-uniform scaling
The full stroker does not produce good results for aliased lines thinner than 1 pixel. Avoid it by making sure that such thin lines are painted by the cosmetic stroker, even when they have non-uniform transformation. Fixes: QTBUG-73866 Change-Id: I7b5f0fa555903246e0c3fd92cd435cc8c0b15a24 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>bb10
parent
8f8267f00b
commit
d6c3fa6e0c
|
|
@ -796,7 +796,7 @@ void QRasterPaintEngine::updatePen(const QPen &pen)
|
|||
s->flags.fast_pen = pen_style > Qt::NoPen
|
||||
&& s->penData.blend
|
||||
&& ((cosmetic && penWidth <= 1)
|
||||
|| (!cosmetic && s->flags.tx_noshear && penWidth * s->txscale <= 1));
|
||||
|| (!cosmetic && (s->flags.tx_noshear || !s->flags.antialiased) && penWidth * s->txscale <= 1));
|
||||
|
||||
s->flags.non_complex_pen = qpen_capStyle(s->lastPen) <= Qt::SquareCap && s->flags.tx_noshear;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,79 @@
|
|||
# Version: 1
|
||||
# CheckVsReference: 5%
|
||||
|
||||
drawRect 0 0 800 800
|
||||
|
||||
path_addRect p 0 0 75 75
|
||||
path_addEllipse p 25 25 75 75
|
||||
|
||||
translate -500 -500
|
||||
|
||||
begin_block drawing
|
||||
save
|
||||
drawLine 0 0 100 100
|
||||
|
||||
translate 0 100
|
||||
drawPath p
|
||||
|
||||
translate 0 110
|
||||
drawRect 0 0 100 100
|
||||
|
||||
translate 0 110
|
||||
drawPolyline [0 0 100 0 50 50]
|
||||
|
||||
drawPoint 40 40
|
||||
drawPoint 41 40
|
||||
drawPoint 42 40
|
||||
drawPoint 43 40
|
||||
drawPoint 44 40
|
||||
drawPoint 45 40
|
||||
drawPoint 46 40
|
||||
drawPoint 47 40
|
||||
drawPoint 48 40
|
||||
drawPoint 49 40
|
||||
drawPoint 50 40
|
||||
|
||||
restore
|
||||
end_block
|
||||
|
||||
begin_block univsnonuni
|
||||
save
|
||||
|
||||
save
|
||||
scale 0.7 0.7
|
||||
repeat_block drawing
|
||||
restore
|
||||
|
||||
translate 100 0
|
||||
save
|
||||
scale 0.7 0.8
|
||||
repeat_block drawing
|
||||
restore
|
||||
|
||||
restore
|
||||
end_block
|
||||
|
||||
resetMatrix
|
||||
translate 20.5 20.5
|
||||
|
||||
begin_block row
|
||||
save
|
||||
repeat_block univsnonuni
|
||||
|
||||
translate 240 0
|
||||
save
|
||||
rotate 10
|
||||
repeat_block univsnonuni
|
||||
restore
|
||||
|
||||
translate 220 0
|
||||
save
|
||||
rotate_y 30
|
||||
repeat_block univsnonuni
|
||||
restore
|
||||
restore
|
||||
end_block
|
||||
|
||||
translate 0 320
|
||||
setRenderHint AntiAliasing
|
||||
repeat_block row
|
||||
Loading…
Reference in New Issue