understanding ImpForceLineAngle, aGeo and friends
Dr. David Alan Gilbert
dave at treblig.org
Sun Jan 10 20:09:44 UTC 2021
(Replying to my own mail)
I'm still following this through - I think I'm going to
end up following it through to what it actually reads when
it draws the line.
In the case of my vertical line, SdrPathObj::NbcResize calls
SdrTextObj::NbcResize and that completely rebuilds the
rotation angle and aGeo.
Still, the maPathPolygon looked OK afterwards so...hmm
I'll keep digging.
I'd expected the maPathPolygon to be the important bit;
(Pointers to the code that actually draws the line would
be appreciated).
Dave
Some of my random debug:
SdrPathObj::ImpForceKind this=0x513e4c0 meKind in:2
SdrPathObj::ImpForceKind mod meKind: 2 bClosed: 0
SdrPathObj::ImpForceLineAngle: aPoint0,1: 560,1315,560,5940 aDelt: 0,4625 orig Rot: 31500 Shear: 0 sin/Cos:-0.707107/0.707107 maRect: 57x57@(0,0)
SdrPathObj::ImpForceLineAngle: new Rot: -9000 Shear: 0 sin/Cos:-1/2.83277e-16 maRect: 0x4625@(560,1315)
SSPP:setPVI PP: [1:<2:(560.126,1315.28)--(560.126,5940.28)>]
SvxShapePolyPolygon::setPropertyValueImpl this:0x5115fd0 'TextAutoGrowHeight' nWID: 1069=<Any: (boolean) 0>
SvxShapePolyPolygon::setPropertyValueImpl this:0x5115fd0 'TextLeftDistance' nWID: 1071=<Any: (long) 250>
SvxShapePolyPolygon::setPropertyValueImpl this:0x5115fd0 'TextLowerDistance' nWID: 1074=<Any: (long) 125>
SvxShapePolyPolygon::setPropertyValueImpl this:0x5115fd0 'TextRightDistance' nWID: 1072=<Any: (long) 250>
SvxShapePolyPolygon::setPropertyValueImpl this:0x5115fd0 'TextUpperDistance' nWID: 1073=<Any: (long) 125>
SvxShapePolyPolygon::setPropertyValueImpl this:0x5115fd0 'TextVerticalAdjust' nWID: 1075=<Any: (com.sun.star.drawing.TextVerticalAdjust) 0>
SvxShapePolyPolygon::setPropertyValueImpl this:0x5115fd0 'TextWordWrap' nWID: 1091=<Any: (boolean) 1>
createAndInsert applying props rot case: mnRotation:0 at 1276
createAndInsert applying props rot case: mnRotation:0 at 1288
SvxShapePolyPolygon::getPropertyValueImpl this:0x5115fd0 'InteropGrabBag' nWID: 3991
SvxShapePolyPolygon::setPropertyValueImpl this:0x5115fd0 'InteropGrabBag' nWID: 3991=<Any: ([]com.sun.star.beans.PropertyValue) len 5>
createAndInsert applying props rot case: mnRotation:0 at 1311
createAndInsert applying props rot case: mnRotation:0 at 1354
createAndInsert applying props rot case: mnRotation:0 at 1435
createAndInsert LineShape wps special position: 988,2320
createAndInsert applying props rot case: mnRotation:0 at 1444
createAndInsert applying props rot case: mnRotation:0 at 1511
createAndInsert rotation bit: bUseRotT1 mnRot0 nCameraRotation: 0
createAndInsert applying props rot case: mnRotation:0 at 1597
createAndInsert applying props rot case: mnRotation:0 at 1601
SvxShapePolyPolygon::getPropertyValueImpl this:0x5115fd0 'InteropGrabBag' nWID: 3991
Props_name: Shape5
SdrPathObj::NbcResize fResizeX: 1 Y: 1.00022
SdrPathObj::NbcResize transform: [1 0 0; 0 1.00022 -0.284324; 0 0 1]
SdrPathObj::NbcResize pre-polys: [1:<2:(560.126,1315.28)--(560.126,5940.28)>]
SdrPathObj::NbcResize post-transform-polys: [1:<2:(560.126,1315.28)--(560.126,5941.28)>]
SdrTextObj::NbcResize nShearAngle: 0 nRotatationAngle: -9000 bRotate90: 1 bNotSheared: 1 bMirr X/Y:0,0
SdrTextObj::NbcResize (b) maRect in: 0x4625@(560,1315) nRotationAngle: -9000
SdrTextObj::NbcResize (b) maRect out: 0x0@(560,1315) nRotationAngle: 0
SdrTextObj::NbcResize (c) bRota90: 1 nRotationAngle: 0
* Dr. David Alan Gilbert (dave at treblig.org) wrote:
> * Regina Henschel (rb.henschel at t-online.de) wrote:
> > Hi David,
>
> Hi Regina,
> Thanks for the reply,
>
> > 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.
>
> Yep, learnt another word of German :-)
>
> > [..]
> > > 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.
>
> Yep, that bit makes sense.
>
> > I think, at some point between OOo2.4 and OOo3.2.1 this rotation was
> > extended to polylines.
>
> I think this is the bit that's confusing here; most lines get loaded
> OK, but for some reason this one is different (and possibly only in Writer);
> you'd think if you were going to build a line out of two points stating
> where you want them, then you wouldn't expect it to get rotated
> (If it always did it, wouldn't all lines end up horizontal).
>
> > 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.
>
> OK.
>
> > 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.
>
> Is there anything I should be reading about this?
>
> Dave
>
> > Kind regards
> > Regina
> >
> > _______________________________________________
> > LibreOffice mailing list
> > LibreOffice at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/libreoffice
> --
> -----Open up your eyes, open up your mind, open up your code -------
> / Dr. David Alan Gilbert | Running GNU/Linux | Happy \
> \ dave @ treblig.org | | In Hex /
> \ _________________________|_____ http://www.treblig.org |_______/
--
-----Open up your eyes, open up your mind, open up your code -------
/ Dr. David Alan Gilbert | Running GNU/Linux | Happy \
\ dave @ treblig.org | | In Hex /
\ _________________________|_____ http://www.treblig.org |_______/
More information about the LibreOffice
mailing list