Hi Regina,

> It works in principle,
What does that mean ?!?

A: An empty constructed basegfx::B2DHomMatrix is on identity (no-op), so it is 
ideal to test if it is used. Will even work when usages add-up to identity 
matrix whant means 'no change'. Yes, use isIdentity() please.

B: You might calculate it, but it is not really needed. Since we rotate arouhd 
center (only) it is sufficient to extract rotation and set it - we know it's 
around center. The rest of the shape (svg:x/y/width/height) is the unrotated 
shape, so this is sufficient. It can be calculated to make error-checks if 
wanted. It will have to be calculated when someone will use more of the 
transformation later (or we do)

C: Not sure whant you mean here. Correcting the position means it's 
'overdefined'. The (svg:x/y/width/height) and back-calculating from 
transformation with (-translate, rotate, translate) to rotate around center 
*should* always give the same center. If not, it is *not clear* which 
definition is the correct one. This is the reason the transformation should 
*not* contain positioning at all. The idea is: Apply (svg:x/y/width/height) 
first (pos and size), then apply transformation to it (rotate, shear, mirror 
(scale-1)).

HTH!

-----Urspr√ľngliche Nachricht-----
Von: Regina Henschel [mailto:rb.hensc...@t-online.de] 
Gesendet: Friday, February 23, 2018 15:13
An: LO dev fdo <libreoffice@lists.freedesktop.org>
Cc: Armin Le Grand <armin.legr...@extern.cib.de>
Betreff: Consider translation of transformation matrix of image rotation

Hi Armin, hi all,

this is about https://bugs.documentfoundation.org/show_bug.cgi?id=115590
and my proposal https://gerrit.libreoffice.org/#/c/50176/

It works in principle, but I'm not sure about some details:

A
It has a construction
     basegfx::B2DHomMatrix aFullTransform;

     with later on
     if ( !aFullTransform.isIdentity() )

Should I use
     basegfx::B2DHomMatrix aFullTransform;
     bool bHasTransformation;

     if ( bHasTransformation )
instead?

B
It has
     if ( aTransformedCenterPosition != aCenterPosition ) Is this check useful, 
or should I calculate the correction always, although the result might be the 
original value?

C
Is this the correct place at all to correct the position?

Kind regards
Regina
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to