understanding ImpForceLineAngle, aGeo and friends

Regina Henschel rb.henschel at t-online.de
Sat Jan 2 19:03:24 UTC 2021


Hi David,

Dr. David Alan Gilbert schrieb am 02.01.2021 um 04:35:
> Hi,
>    I'd appreciate some pointers on shape creation and in
> particular why ImpForceLineAngle exists.

ImpForceLineAngle() exists from the beginning. I see it already in 
OOo1.1.5. You will find it as ImpForceLineWink() in the history of 
svdopath.cxx.

[..]
>    a) What is ImpForceLineAngle for, why calculate an angle
> from the line you've just created? >    b) Is that angle supposed to be applied to that line - or
> is it intended just for something else ?

The purpose is, that the user gets a simple way to have text along the 
line. Without this rotation, the text would always be horizontal, 
although the user creates a non horizontal line.
I think, at some point between OOo2.4 and OOo3.2.1 this rotation was 
extended to polylines.

The member aGeo contains the transformation angles. When you apply this 
shear and rotation to the left/top corner of the logic rectangle (member 
maRect) you get the snap rectangle (member maSnapRect). These angles are 
part of the API. You need to know, that vertical flip introduces an 
additional 180° rotation.

Custom shapes are special in that they have properties mirror vertical 
and mirror horizontal in their enhanced geometry, that SdrObjCustomShape 
has the true rotation angle as member fObjectRotation, and that they 
allow text rotation independent from object rotation in their enhanced 
geometry.

Kind regards
Regina



More information about the LibreOffice mailing list