Details
-
Task
-
Resolution: Won't Do
-
P2: Important
-
None
-
None
-
None
Description
When using QPainter with anti-aliasing switched off, the rules for which pixels get filled at various non-integer coordinates changes depending upon the rendering primitive. E.g. A stroke will snap to the lower-left pixel at (x.00, y.00) and fill the same pixel all the way up to (x.99, y.99). However, this rule is disputed and is not how any of our paint engines behave (each behaves differently). We also have different rules for image drawing, filling rects and filling polygons as well as text.
We need to come up with a detailed set of rules, document them and then implement them. The problem is that we will very likely break behavior slightly with existing applications which depend on the (broken) behavior of a particular paint engine (E.g. The X11 Paint Engine). We may decide to break comparability, or we may decide the (E.g.) X11 engine is the standard. Either way, we really should make behavior as consistent across the different engines as we can, and preferably, across the different primitives too.
Note: Apple explicitly say they don't care about aliased rendering - perhaps we should do the same?