To comment on the following update, log in, then open the issue:
http://www.openoffice.org/issues/show_bug.cgi?id=95646





------- Additional comments from [EMAIL PROTECTED] Tue Nov  4 17:29:37 +0000 
2008 -------
AW: This is the hard part. I found no simple solution in the old SdrDragMethod
implementations to support all solid drags in one run.

First try was to clone the objects, modify the clones and use an
OverlaySdrObject for feedback. This gives no fast solution for transparency. At
the end delete the clones or replace the selected objects with the already
modified clones. This does not work since each change on the selection inside
SdrDragMethod implementations leads to cancelling the current interaction and
deletion of the incarnation we are calling from.

Next try was to use primitive sequences and to create a overlay object for them.
That overlay object works well and solves the transparency issue. This also
leaded to replacing the old ::Mod() implementation with
getCurrentTransformation() which returns a matrix. This works pretty well, but
only for interactions without scale and shear. Example: For a fat line on an
Ellipse it is not enough to transform the primitive geometry, but the changed
SdrObject needs to be completely newly decomposed.

I decided to split: For translate, rotate and mirror i can use the (pretty)
simple method with the primitives directly. Those will be fetched at the IA
beginning and be embedded in a UnifiedAlphaPrimitive2D. It could also be
embedded in a TransformPrimitive2D to represent the current modification, but i
preferred to add that to the overly object which will add this to it's
renderer's start state. For implementation, there is now a common base class for
this three SdrDragMethod implementations.

I needed a solution for shear and scale. I tried to derive the primitive
sequence always from scratch from a cloned object which i modify using
TRGetBaseGeometry/TRSetBaseGeometry. This works in principle, but has problems
with text. The old interactions use internal stuff to reflect the X/Y mirroring
as Text rotations by 1780 degrees. It leads to different results than using the
transformations. To solve that, i added a virtual method
(applyCurrentTransformation(SdrObject& rTarget)). and a helper class which once
incarnates clones (of course with self-handling the object hierarchy over
groups...). It then resets the clone by using operator= and the original,
applies the change using the helper method and then derives the primitive
sequence. This works well.

On the way i also needed to fix some deeply buried, old bugs with applying
mirroring and/or shear.

Now working: translate, rotate, scale, shear (X and Y) and mirroring.
Looking for more stuff...

---------------------------------------------------------------------
Please do not reply to this automatically generated notification from
Issue Tracker. Please log onto the website and enter your comments.
http://qa.openoffice.org/issue_handling/project_issues.html#notification

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to