<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 23 Mar 2020 at 17:12, Luboš Luňák <<a href="mailto:l.lunak@collabora.com">l.lunak@collabora.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> I see the problem not in tools::Rectangle itself, but in the fact, that<br>
> it uses integer and not double. Using double makes width = right - left<br>
> in all cases<br>
> and would solve accuracy problems in manipulating shapes. <br>
> It would be up to renderer to do a suitable conversion to integer.<br>
<br>
 I don't think using double magically solves everything. The same result can <br>
be obtained by defining 'width = right - left' with integers, and I think I <br>
can mis-count pixels as doubles just as well.<br><br></blockquote><div><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Correct. Using floating point for rendering trades one set of problems for another set of problems.</div><div class="gmail_default" style="font-family:tahoma,sans-serif">It is very easy to apply a set of transformations on floating point that accumulate error, resulting in </div><div class="gmail_default" style="font-family:tahoma,sans-serif">bad output. It is also becomes quite hard to determine if an object is still in the same place after a set of transformations,</div><div class="gmail_default" style="font-family:tahoma,sans-serif">even if mathematically the set of transforms ===> identity.</div><div class="gmail_default" style="font-family:tahoma,sans-serif">This is why we have ::approxEqual appearing around the place, which doesn't always work.</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Floating point is a fine choice for certain kinds of last-stage rendering inside the graphics card, and for other use-cases (like CAD), quite it is unavoidable.</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">For the common case of rendering spreadsheets and text, integer co-ordinates are better behaved.</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div></div></div>