summaryrefslogtreecommitdiff
path: root/svx/source/sdr
diff options
context:
space:
mode:
authorRĂ¼diger Timm <rt@openoffice.org>2009-02-20 16:53:09 +0000
committerRĂ¼diger Timm <rt@openoffice.org>2009-02-20 16:53:09 +0000
commit6dd5fa4a48346ea9b7ff330204feb4f9817dca80 (patch)
treed27d85e19d059c9542c8764dda0126b7d38f428f /svx/source/sdr
parentd298d8fa1794ce97c4505d15cc7e06dc5d25f144 (diff)
CWS-TOOLING: integrate CWS aw063_OOO310
2009-02-12 13:10:24 +0100 aw r267649 : #i99123# when a primitive is invisible, it is not sufficient to produce no output when decomposing, but to add invisible data using HitTestPrimitive2D. This is needed for the slideshow which relies on geometry data in MetaFiles when painting invisible objects 2009-02-12 13:08:39 +0100 aw r267648 : #i99123# do not ignore HitTestPrimitive2D, but draw empty rectangles instead. This is needed since Slideshow is based on getting MetaFile content when painting invisible objects 2009-02-11 16:04:28 +0100 aw r267620 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:04:10 +0100 aw r267619 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:56 +0100 aw r267618 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:39 +0100 aw r267617 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:21 +0100 aw r267615 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:48 +0100 aw r267614 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:24 +0100 aw r267613 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:01 +0100 aw r267612 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:01:32 +0100 aw r267611 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:01:05 +0100 aw r267610 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:00:15 +0100 aw r267608 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 11:27:33 +0100 aw r267585 : #i98788# added missing include for STL 2009-02-10 17:46:50 +0100 aw r267570 : #i98788# added reaction on pool destruction 2009-02-10 17:11:58 +0100 aw r267562 : #i98788# added messaging mechanism to register for pool destruction 2009-02-10 13:35:35 +0100 aw r267549 : #i98788# removing changes, too complicated and risky for 3.1 2009-02-10 12:13:48 +0100 aw r267546 : #i98788# 4th round 2009-02-10 12:13:37 +0100 aw r267545 : #i98788# 4th round 2009-02-10 12:13:26 +0100 aw r267544 : #i98788# 4th round 2009-02-10 12:13:14 +0100 aw r267543 : #i98788# 4th round 2009-02-10 12:13:03 +0100 aw r267542 : #i98788# 4th round 2009-02-10 12:12:50 +0100 aw r267541 : #i98788# 4th round 2009-02-10 12:12:37 +0100 aw r267540 : #i98788# 4th round 2009-02-08 14:38:22 +0100 aw r267495 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:38:06 +0100 aw r267494 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:37:48 +0100 aw r267493 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:37:17 +0100 aw r267492 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:56 +0100 aw r267491 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:44 +0100 aw r267490 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:29 +0100 aw r267489 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:16 +0100 aw r267488 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:02 +0100 aw r267487 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:35:46 +0100 aw r267486 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-05 12:20:39 +0100 aw r267415 : #i98788# 2nd batch of adaptions for SfxItemPoolHolder addition 2009-02-04 15:12:54 +0100 aw r267385 : #i98788# added newline at EOF 2009-02-04 13:26:04 +0100 aw r267379 : #i98788# make SfxItemPool holdable 2009-02-04 13:25:40 +0100 aw r267378 : #i98788# make SfxItemPool holdable 2009-02-04 13:25:08 +0100 aw r267377 : #i98788# make SfxItemPool holdable 2009-02-04 13:24:42 +0100 aw r267376 : #i98788# make SfxItemPool holdable 2009-02-04 13:23:14 +0100 aw r267375 : #i98788# make SfxItemPool holdable 2009-02-04 13:23:02 +0100 aw r267374 : #i98788# make SfxItemPool holdable 2009-01-29 17:08:31 +0100 aw r267159 : #i97628# completed the fix 2009-01-29 17:08:15 +0100 aw r267158 : #i97628# completed the fix 2009-01-29 14:09:07 +0100 aw r267132 : #i97628# Corrected usage of ParagraphData in headers 2009-01-29 14:06:58 +0100 iha r267131 : #i98344# incorrect font size in charts 2009-01-29 12:13:46 +0100 aw r267115 : #i97628# back to old state; triggers too many errors in other modules 2009-01-29 12:03:51 +0100 aw r267114 : #i97628# enabled exceptions due to STL vector include 2009-01-29 11:21:37 +0100 aw r267107 : #i97628# added needed include 2009-01-28 17:58:29 +0100 aw r267077 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:58:12 +0100 aw r267076 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:57:51 +0100 aw r267074 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:57:21 +0100 aw r267073 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-27 17:07:33 +0100 aw r267011 : #i98402# added support for ViewRange when exporting MetaFiles in ObjectContactOfPageView::DoProcessDisplay to avoid to paint too much 2009-01-27 11:45:48 +0100 aw r266973 : #i98404# Added a warning to a place where a conversion to rectangle should not be copied from 2009-01-26 21:44:36 +0100 iha r266949 : #i98497# 3D charts are rendered with wrong size 2009-01-26 20:47:07 +0100 aw r266947 : #i98404# handle BackgroundColorPrimitive2D directly in PixelRenderers and avoid AA under all circumstances 2009-01-26 14:50:36 +0100 aw r266926 : #i98386# secured cloning of SdrObject in IMapUserData by boost::shared_prt usage 2009-01-26 12:51:30 +0100 aw r266916 : #i96581# added separated FontStretching and fallback for small X!=Y scale differences 2009-01-23 16:14:55 +0100 aw r266834 : #i96475# added missing implementation of TextDecoratedPortionPrimitive2D::getB2DRange 2009-01-23 15:24:34 +0100 aw r266826 : #i98405# fixed fallback to DrawAlphaRect to use the correctly sized rectangle 2009-01-23 13:34:43 +0100 aw r266813 : #i96474# fixed impSplitSingleWords for an unexpected case 2009-01-23 10:47:31 +0100 aw r266786 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:47:20 +0100 aw r266785 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:47:09 +0100 aw r266783 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:46:58 +0100 aw r266782 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:46:48 +0100 aw r266781 : #i98289#,#i96474# tooling and new flags for tasks
Diffstat (limited to 'svx/source/sdr')
-rw-r--r--svx/source/sdr/attribute/sdrtextattribute.cxx16
-rw-r--r--svx/source/sdr/contact/objectcontactofpageview.cxx18
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrrectobj.cxx13
-rw-r--r--svx/source/sdr/primitive2d/sdrattributecreator.cxx52
-rw-r--r--svx/source/sdr/primitive2d/sdrdecompositiontools.cxx29
-rw-r--r--svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx3
-rw-r--r--svx/source/sdr/primitive2d/sdrprimitivetools.cxx18
-rw-r--r--svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx43
8 files changed, 135 insertions, 57 deletions
diff --git a/svx/source/sdr/attribute/sdrtextattribute.cxx b/svx/source/sdr/attribute/sdrtextattribute.cxx
index 7ed0fffb4a..591fcb026a 100644
--- a/svx/source/sdr/attribute/sdrtextattribute.cxx
+++ b/svx/source/sdr/attribute/sdrtextattribute.cxx
@@ -44,6 +44,7 @@ namespace drawinglayer
{
SdrTextAttribute::SdrTextAttribute(
const SdrText& rSdrText,
+ const OutlinerParaObject& rOutlinerParaObject,
XFormTextStyle eFormTextStyle,
sal_Int32 aTextLeftDistance,
sal_Int32 aTextUpperDistance,
@@ -53,9 +54,10 @@ namespace drawinglayer
bool bFitToSize,
bool bHideContour,
bool bBlink,
- bool bScroll)
+ bool bScroll,
+ bool bInEditMode)
: mrSdrText(rSdrText),
- mpOutlinerParaObject(rSdrText.GetOutlinerParaObject()),
+ maOutlinerParaObject(rOutlinerParaObject),
meFormTextStyle(eFormTextStyle),
maTextLeftDistance(aTextLeftDistance),
maTextUpperDistance(aTextUpperDistance),
@@ -65,15 +67,14 @@ namespace drawinglayer
mbFitToSize(bFitToSize),
mbHideContour(bHideContour),
mbBlink(bBlink),
- mbScroll(bScroll)
+ mbScroll(bScroll),
+ mbInEditMode(bInEditMode)
{
}
bool SdrTextAttribute::operator==(const SdrTextAttribute& rCandidate) const
{
- const bool bOutlinerParaObjectSameAddress(mpOutlinerParaObject == rCandidate.mpOutlinerParaObject);
-
- return (bOutlinerParaObjectSameAddress
+ return (getOutlinerParaObject() == rCandidate.getOutlinerParaObject()
&& getFormTextStyle() == rCandidate.getFormTextStyle()
&& getTextLeftDistance() == rCandidate.getTextLeftDistance()
&& getTextUpperDistance() == rCandidate.getTextUpperDistance()
@@ -83,7 +84,8 @@ namespace drawinglayer
&& isFitToSize() == rCandidate.isFitToSize()
&& isHideContour() == rCandidate.isHideContour()
&& isBlink() == rCandidate.isBlink()
- && isScroll() == rCandidate.isScroll());
+ && isScroll() == rCandidate.isScroll()
+ && isInEditMode() == rCandidate.isInEditMode());
}
void SdrTextAttribute::getBlinkTextTiming(drawinglayer::animation::AnimationEntryList& rAnimList) const
diff --git a/svx/source/sdr/contact/objectcontactofpageview.cxx b/svx/source/sdr/contact/objectcontactofpageview.cxx
index fa42ffc532..18db96f142 100644
--- a/svx/source/sdr/contact/objectcontactofpageview.cxx
+++ b/svx/source/sdr/contact/objectcontactofpageview.cxx
@@ -185,12 +185,24 @@ namespace sdr
// update current ViewInformation2D at the ObjectContact
const double fCurrentTime(getPrimitiveAnimator().GetTime());
OutputDevice& rTargetOutDev = GetPageWindow().GetPaintWindow().GetTargetOutputDevice();
- const GDIMetaFile* pMetaFile = rTargetOutDev.GetConnectMetaFile();
- const bool bOutputToRecordingMetaFile(pMetaFile && pMetaFile->IsRecord() && !pMetaFile->IsPause());
basegfx::B2DRange aViewRange;
// create ViewRange
- if(!bOutputToRecordingMetaFile)
+ if(isOutputToRecordingMetaFile())
+ {
+ if(isOutputToPDFFile())
+ {
+ // #i98402# if it's a PDF export, set the ClipRegion as ViewRange. This is
+ // mainly because SW does not use DrawingLayer Page-Oriented and if not doing this,
+ // all existing objects will be collected as primitives and processed.
+ const Rectangle aLogicClipRectangle(rDisplayInfo.GetRedrawArea().GetBoundRect());
+
+ aViewRange = basegfx::B2DRange(
+ aLogicClipRectangle.Left(), aLogicClipRectangle.Top(),
+ aLogicClipRectangle.Right(), aLogicClipRectangle.Bottom());
+ }
+ }
+ else
{
// use visible pixels, but transform to world coordinates
const Size aOutputSizePixel(rTargetOutDev.GetOutputSizePixel());
diff --git a/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx b/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx
index 648e7efca0..0c6d3177b9 100644
--- a/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx
@@ -38,6 +38,7 @@
#include <svx/sdr/attribute/sdrallattribute.hxx>
#include <svx/sdr/primitive2d/sdrrectangleprimitive2d.hxx>
#include <svtools/itemset.hxx>
+#include <svx/sdr/primitive2d/sdrprimitivetools.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -111,6 +112,18 @@ namespace sdr
delete pAttribute;
}
+
+ if(!xRetval.hasElements())
+ {
+ // #i99123#
+ // Object is invisible. Create a fallback primitive for HitTest
+ basegfx::B2DHomMatrix aObjectMatrix;
+ basegfx::B2DPolyPolygon aObjectPolyPolygon;
+ GetRectObj().TRGetBaseGeometry(aObjectMatrix, aObjectPolyPolygon);
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ drawinglayer::primitive2d::createFallbackHitTestPrimitive(aObjectMatrix));
+ xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+ }
}
return xRetval;
diff --git a/svx/source/sdr/primitive2d/sdrattributecreator.cxx b/svx/source/sdr/primitive2d/sdrattributecreator.cxx
index 56e4550b3e..3cb131929c 100644
--- a/svx/source/sdr/primitive2d/sdrattributecreator.cxx
+++ b/svx/source/sdr/primitive2d/sdrattributecreator.cxx
@@ -475,7 +475,7 @@ namespace drawinglayer
attribute::SdrTextAttribute* createNewSdrTextAttribute(const SfxItemSet& rSet, const SdrText& rText)
{
- attribute::SdrTextAttribute* pRetval(0L);
+ attribute::SdrTextAttribute* pRetval(0);
const SdrTextObj& rTextObj = rText.GetObject();
if(rText.GetOutlinerParaObject() && rText.GetModel())
@@ -491,25 +491,41 @@ namespace drawinglayer
{
bInEditMode = rTextObj.IsInEditMode();
}
-
- if(!bInEditMode)
+
+ OutlinerParaObject aOutlinerParaObject(*rText.GetOutlinerParaObject());
+
+ if(bInEditMode)
{
- const SdrFitToSizeType eFit = rTextObj.GetFitToSize();
- const SdrTextAniKind eAniKind(rTextObj.GetTextAniKind());
-
- pRetval = new attribute::SdrTextAttribute(
- rText,
- ((const XFormTextStyleItem&)rSet.Get(XATTR_FORMTXTSTYLE)).GetValue(),
- rTextObj.GetTextLeftDistance(),
- rTextObj.GetTextUpperDistance(),
- rTextObj.GetTextRightDistance(),
- rTextObj.GetTextLowerDistance(),
- ((const SdrTextContourFrameItem&)rSet.Get(SDRATTR_TEXT_CONTOURFRAME)).GetValue(),
- (SDRTEXTFIT_PROPORTIONAL == eFit || SDRTEXTFIT_ALLLINES == eFit),
- ((const XFormTextHideFormItem&)rSet.Get(XATTR_FORMTXTHIDEFORM)).GetValue(),
- SDRTEXTANI_BLINK == eAniKind,
- SDRTEXTANI_SCROLL == eAniKind || SDRTEXTANI_ALTERNATE == eAniKind || SDRTEXTANI_SLIDE == eAniKind);
+ OutlinerParaObject* pTempObj = rTextObj.GetEditOutlinerParaObject();
+
+ if(pTempObj)
+ {
+ aOutlinerParaObject = *pTempObj;
+ delete pTempObj;
+ }
+ else
+ {
+ bInEditMode = false;
+ }
}
+
+ const SdrFitToSizeType eFit = rTextObj.GetFitToSize();
+ const SdrTextAniKind eAniKind(rTextObj.GetTextAniKind());
+
+ pRetval = new attribute::SdrTextAttribute(
+ rText,
+ aOutlinerParaObject,
+ ((const XFormTextStyleItem&)rSet.Get(XATTR_FORMTXTSTYLE)).GetValue(),
+ rTextObj.GetTextLeftDistance(),
+ rTextObj.GetTextUpperDistance(),
+ rTextObj.GetTextRightDistance(),
+ rTextObj.GetTextLowerDistance(),
+ ((const SdrTextContourFrameItem&)rSet.Get(SDRATTR_TEXT_CONTOURFRAME)).GetValue(),
+ (SDRTEXTFIT_PROPORTIONAL == eFit || SDRTEXTFIT_ALLLINES == eFit),
+ ((const XFormTextHideFormItem&)rSet.Get(XATTR_FORMTXTHIDEFORM)).GetValue(),
+ SDRTEXTANI_BLINK == eAniKind,
+ SDRTEXTANI_SCROLL == eAniKind || SDRTEXTANI_ALTERNATE == eAniKind || SDRTEXTANI_SLIDE == eAniKind,
+ bInEditMode);
}
return pRetval;
diff --git a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
index 2f768d4c54..39157f5b7f 100644
--- a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
+++ b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
@@ -54,6 +54,7 @@
#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
#include <basegfx/tools/canvastools.hxx>
#include <drawinglayer/geometry/viewinformation2d.hxx>
+#include <drawinglayer/primitive2d/texthierarchyprimitive2d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -205,12 +206,12 @@ namespace drawinglayer
aScaledUnitPolyPolygon.transform(aScaleTransform);
// create with unit polygon
- pNew = new SdrContourTextPrimitive2D(rText.getSdrText(), aScaledUnitPolyPolygon, rObjectTransform);
+ pNew = new SdrContourTextPrimitive2D(rText.getSdrText(), rText.getOutlinerParaObject(), aScaledUnitPolyPolygon, rObjectTransform);
}
else
{
// create with unit polygon
- pNew = new SdrContourTextPrimitive2D(rText.getSdrText(), rUnitPolyPolygon, rObjectTransform);
+ pNew = new SdrContourTextPrimitive2D(rText.getSdrText(), rText.getOutlinerParaObject(), rUnitPolyPolygon, rObjectTransform);
}
}
else if(rText.isFontwork() && !rText.isScroll())
@@ -218,7 +219,7 @@ namespace drawinglayer
// text on path, use scaled polygon. Not allowed when text scrolling is used.
::basegfx::B2DPolyPolygon aScaledPolyPolygon(rUnitPolyPolygon);
aScaledPolyPolygon.transform(rObjectTransform);
- pNew = new SdrPathTextPrimitive2D(rText.getSdrText(), aScaledPolyPolygon);
+ pNew = new SdrPathTextPrimitive2D(rText.getSdrText(), rText.getOutlinerParaObject(), aScaledPolyPolygon);
}
else
{
@@ -266,12 +267,12 @@ namespace drawinglayer
if(rText.isFitToSize())
{
// streched text in range
- pNew = new SdrStretchTextPrimitive2D(rText.getSdrText(), aAnchorTransform);
+ pNew = new SdrStretchTextPrimitive2D(rText.getSdrText(), rText.getOutlinerParaObject(), aAnchorTransform);
}
else // text in range
{
// build new primitive
- pNew = new SdrBlockTextPrimitive2D(rText.getSdrText(), aAnchorTransform, rText.isScroll(), bCellText, bWordWrap);
+ pNew = new SdrBlockTextPrimitive2D(rText.getSdrText(), rText.getOutlinerParaObject(), aAnchorTransform, rText.isScroll(), bCellText, bWordWrap);
}
}
@@ -397,8 +398,22 @@ namespace drawinglayer
}
else
{
- // add to decomposition
- return Primitive2DReference(pNew);
+ if(rText.isInEditMode())
+ {
+ // #i97628#
+ // encapsulate with TextHierarchyEditPrimitive2D to allow renderers
+ // to suppress actively edited content if needed
+ const Primitive2DReference xRefA(pNew);
+ const Primitive2DSequence aContent(&xRefA, 1L);
+
+ // create and add TextHierarchyEditPrimitive2D primitive
+ return Primitive2DReference(new TextHierarchyEditPrimitive2D(aContent));
+ }
+ else
+ {
+ // add to decomposition
+ return Primitive2DReference(pNew);
+ }
}
}
diff --git a/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx
index 6fd3e51d58..2eba93c5c0 100644
--- a/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx
@@ -125,7 +125,8 @@ namespace drawinglayer
}
// create primitive and get text range
- pBlockText = new SdrBlockTextPrimitive2D(pTextAttribute->getSdrText(), aTextMatrix, pTextAttribute->isScroll(), false, false);
+ pBlockText = new SdrBlockTextPrimitive2D(pTextAttribute->getSdrText(), pTextAttribute->getOutlinerParaObject(),
+ aTextMatrix, pTextAttribute->isScroll(), false, false);
aTextRange = pBlockText->getB2DRange(aViewInformation);
}
diff --git a/svx/source/sdr/primitive2d/sdrprimitivetools.cxx b/svx/source/sdr/primitive2d/sdrprimitivetools.cxx
index 8eca658c3c..1066a988ca 100644
--- a/svx/source/sdr/primitive2d/sdrprimitivetools.cxx
+++ b/svx/source/sdr/primitive2d/sdrprimitivetools.cxx
@@ -33,6 +33,10 @@
#include <svx/sdr/primitive2d/sdrprimitivetools.hxx>
#include <vcl/bmpacc.hxx>
#include <osl/mutex.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
+#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
//////////////////////////////////////////////////////////////////////////////
// helper methods
@@ -175,6 +179,20 @@ namespace drawinglayer
return *pRetVal;
}
+
+ // #i99123#
+ Primitive2DReference createFallbackHitTestPrimitive(const basegfx::B2DHomMatrix& rMatrix)
+ {
+ // create PolygonHairlinePrimitive2D
+ basegfx::B2DPolygon aUnitOutline(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ aUnitOutline.transform(rMatrix);
+ const basegfx::BColor aBlack(0.0, 0.0, 0.0);
+ const Primitive2DReference xReference(new PolygonHairlinePrimitive2D(aUnitOutline, aBlack));
+
+ // create HitTestPrimitive2D with it
+ const Primitive2DSequence xSequence(&xReference, 1);
+ return Primitive2DReference(new HitTestPrimitive2D(xSequence));
+ }
} // end of namespace primitive2d
} // end of namespace drawinglayer
diff --git a/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx
index 9553ff52ab..919ac76e39 100644
--- a/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx
@@ -63,33 +63,30 @@ namespace drawinglayer
return xRetval;
}
- SdrTextPrimitive2D::SdrTextPrimitive2D(const SdrText& rSdrText)
+ SdrTextPrimitive2D::SdrTextPrimitive2D(
+ const SdrText& rSdrText,
+ const OutlinerParaObject& rOutlinerParaObject)
: BasePrimitive2D(),
mrSdrText(rSdrText),
+ maOutlinerParaObject(rOutlinerParaObject),
mxLastVisualizingPage(),
mbLastSpellCheck(false),
mbContainsPageField(false)
{
- if(mrSdrText.GetOutlinerParaObject())
- {
- const EditTextObject& rETO = mrSdrText.GetOutlinerParaObject()->GetTextObject();
- mbContainsPageField = rETO.HasField(SvxPageField::StaticType())
- || rETO.HasField(SvxHeaderField::StaticType())
- || rETO.HasField(SvxFooterField::StaticType())
- || rETO.HasField(SvxDateTimeField::StaticType());
- }
+ const EditTextObject& rETO = maOutlinerParaObject.GetTextObject();
+ mbContainsPageField = rETO.HasField(SvxPageField::StaticType())
+ || rETO.HasField(SvxHeaderField::StaticType())
+ || rETO.HasField(SvxFooterField::StaticType())
+ || rETO.HasField(SvxDateTimeField::StaticType());
}
bool SdrTextPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
{
if(BasePrimitive2D::operator==(rPrimitive))
{
- // since OutlinerParaObject has no compare operator, i do not clone it for this class and
- // use the address in the SdrText for comparison if it did change
const SdrTextPrimitive2D& rCompare = (SdrTextPrimitive2D&)rPrimitive;
- const bool bOutlinerParaSameAddress(getSdrText().GetOutlinerParaObject() == rCompare.getSdrText().GetOutlinerParaObject());
- return bOutlinerParaSameAddress;
+ return (getOutlinerParaObject() == rCompare.getOutlinerParaObject());
}
return false;
@@ -154,9 +151,10 @@ namespace drawinglayer
SdrContourTextPrimitive2D::SdrContourTextPrimitive2D(
const SdrText& rSdrText,
+ const OutlinerParaObject& rOutlinerParaObject,
const ::basegfx::B2DPolyPolygon& rUnitPolyPolygon,
const ::basegfx::B2DHomMatrix& rObjectTransform)
- : SdrTextPrimitive2D(rSdrText),
+ : SdrTextPrimitive2D(rSdrText, rOutlinerParaObject),
maUnitPolyPolygon(rUnitPolyPolygon),
maObjectTransform(rObjectTransform)
{
@@ -177,7 +175,7 @@ namespace drawinglayer
SdrTextPrimitive2D* SdrContourTextPrimitive2D::createTransformedClone(const ::basegfx::B2DHomMatrix& rTransform) const
{
- return new SdrContourTextPrimitive2D(getSdrText(), maUnitPolyPolygon, rTransform * maObjectTransform);
+ return new SdrContourTextPrimitive2D(getSdrText(), getOutlinerParaObject(), maUnitPolyPolygon, rTransform * maObjectTransform);
}
// provide unique ID
@@ -208,8 +206,9 @@ namespace drawinglayer
SdrPathTextPrimitive2D::SdrPathTextPrimitive2D(
const SdrText& rSdrText,
+ const OutlinerParaObject& rOutlinerParaObject,
const ::basegfx::B2DPolyPolygon& rPathPolyPolygon)
- : SdrTextPrimitive2D(rSdrText),
+ : SdrTextPrimitive2D(rSdrText, rOutlinerParaObject),
maPathPolyPolygon(rPathPolyPolygon)
{
}
@@ -230,7 +229,7 @@ namespace drawinglayer
{
::basegfx::B2DPolyPolygon aNewPolyPolygon(maPathPolyPolygon);
aNewPolyPolygon.transform(rTransform);
- return new SdrPathTextPrimitive2D(getSdrText(), aNewPolyPolygon);
+ return new SdrPathTextPrimitive2D(getSdrText(), getOutlinerParaObject(), aNewPolyPolygon);
}
// provide unique ID
@@ -261,11 +260,12 @@ namespace drawinglayer
SdrBlockTextPrimitive2D::SdrBlockTextPrimitive2D(
const SdrText& rSdrText,
+ const OutlinerParaObject& rOutlinerParaObject,
const ::basegfx::B2DHomMatrix& rTextRangeTransform,
bool bUnlimitedPage,
bool bCellText,
bool bWordWrap)
- : SdrTextPrimitive2D(rSdrText),
+ : SdrTextPrimitive2D(rSdrText, rOutlinerParaObject),
maTextRangeTransform(rTextRangeTransform),
mbUnlimitedPage(bUnlimitedPage),
mbCellText(bCellText),
@@ -290,7 +290,7 @@ namespace drawinglayer
SdrTextPrimitive2D* SdrBlockTextPrimitive2D::createTransformedClone(const ::basegfx::B2DHomMatrix& rTransform) const
{
- return new SdrBlockTextPrimitive2D(getSdrText(), rTransform * getTextRangeTransform(), getUnlimitedPage(), getCellText(), getWordWrap());
+ return new SdrBlockTextPrimitive2D(getSdrText(), getOutlinerParaObject(), rTransform * getTextRangeTransform(), getUnlimitedPage(), getCellText(), getWordWrap());
}
// provide unique ID
@@ -321,8 +321,9 @@ namespace drawinglayer
SdrStretchTextPrimitive2D::SdrStretchTextPrimitive2D(
const SdrText& rSdrText,
+ const OutlinerParaObject& rOutlinerParaObject,
const ::basegfx::B2DHomMatrix& rTextRangeTransform)
- : SdrTextPrimitive2D(rSdrText),
+ : SdrTextPrimitive2D(rSdrText, rOutlinerParaObject),
maTextRangeTransform(rTextRangeTransform)
{
}
@@ -341,7 +342,7 @@ namespace drawinglayer
SdrTextPrimitive2D* SdrStretchTextPrimitive2D::createTransformedClone(const ::basegfx::B2DHomMatrix& rTransform) const
{
- return new SdrStretchTextPrimitive2D(getSdrText(), rTransform * maTextRangeTransform);
+ return new SdrStretchTextPrimitive2D(getSdrText(), getOutlinerParaObject(), rTransform * maTextRangeTransform);
}
// provide unique ID