[Libreoffice-commits] core.git: Branch 'feature/gsoc14-draw-chained-text-boxes' - svx/inc svx/source
matteocam
matteo.campanelli at gmail.com
Tue Jun 9 11:30:07 PDT 2015
svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx | 8 ++++--
svx/source/sdr/primitive2d/sdrdecompositiontools.cxx | 9 +++++--
svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx | 24 ++++++++++++++-----
svx/source/svdraw/svdoutl.cxx | 2 -
4 files changed, 32 insertions(+), 11 deletions(-)
New commits:
commit 8bbccf4b277e95818213b4fcebf1999a8ff18117
Author: matteocam <matteo.campanelli at gmail.com>
Date: Tue Jun 9 14:29:06 2015 -0400
Extended SdrChainedTextPrimitive2D to deal w/ transform matrix
Change-Id: Ic54cf6e83d67eed45e183c22ac0aa914d995627b
diff --git a/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx
index aaefeb6..db1baec 100644
--- a/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx
+++ b/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx
@@ -339,6 +339,8 @@ namespace drawinglayer
{
private:
// XXX: might have position of overflowing text
+
+ ::basegfx::B2DHomMatrix maTextRangeTransform; // text range transformation from unit range ([0.0 .. 1.0]) to text range
protected:
// local decomposition.
virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const SAL_OVERRIDE;
@@ -346,12 +348,14 @@ namespace drawinglayer
public:
SdrChainedTextPrimitive2D(
const SdrText* pSdrText,
- const OutlinerParaObject& rOutlinerParaObjectPtrs);
+ const OutlinerParaObject& rOutlinerParaObjectPtrs,
+ const ::basegfx::B2DHomMatrix& rTextRangeTransform);
// get data
+ const basegfx::B2DHomMatrix& getTextRangeTransform() const { return maTextRangeTransform; }
// compare operator
- //virtual bool operator==(const BasePrimitive2D& rPrimitive) const SAL_OVERRIDE;
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const SAL_OVERRIDE;
// transformed clone operator
virtual SdrTextPrimitive2D* createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const SAL_OVERRIDE;
diff --git a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
index 3267c8d..73749e9 100644
--- a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
+++ b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
@@ -307,13 +307,18 @@ namespace drawinglayer
else if(rText.isAutoFit())
{
// isotrophically scaled text in range
- pNew = new SdrAutoFitTextPrimitive2D(&rText.getSdrText(), rText.getOutlinerParaObject(), aAnchorTransform, bWordWrap);
+ pNew = new SdrAutoFitTextPrimitive2D(
+ &rText.getSdrText(),
+ rText.getOutlinerParaObject(),
+ aAnchorTransform,
+ bWordWrap);
}
else if( rText.isToBeChained() /*&& !rText.isInEditMode()*/ ) // FIXME(matteocam)
{
pNew = new SdrChainedTextPrimitive2D(
&rText.getSdrText(),
- rText.getOutlinerParaObject() );
+ rText.getOutlinerParaObject(),
+ aAnchorTransform );
}
else // text in range
{
diff --git a/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx
index 4e4edee..b4f2d94 100644
--- a/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx
@@ -487,8 +487,10 @@ namespace drawinglayer
SdrChainedTextPrimitive2D::SdrChainedTextPrimitive2D(
const SdrText* pSdrText,
- const OutlinerParaObject& rOutlinerParaObject)
- : SdrTextPrimitive2D(pSdrText, rOutlinerParaObject)
+ const OutlinerParaObject& rOutlinerParaObject,
+ const basegfx::B2DHomMatrix& rTextRangeTransform)
+ : SdrTextPrimitive2D(pSdrText, rOutlinerParaObject),
+ maTextRangeTransform(rTextRangeTransform)
{ }
Primitive2DSequence SdrChainedTextPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const
@@ -499,11 +501,21 @@ namespace drawinglayer
return encapsulateWithTextHierarchyBlockPrimitive2D(aRetval);
}
- SdrTextPrimitive2D* SdrChainedTextPrimitive2D::createTransformedClone(const basegfx::B2DHomMatrix& ) const
+ bool SdrChainedTextPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
+ {
+ if(SdrTextPrimitive2D::operator==(rPrimitive))
+ {
+ const SdrBlockTextPrimitive2D& rCompare = (SdrBlockTextPrimitive2D&)rPrimitive;
+
+ return (getTextRangeTransform() == rCompare.getTextRangeTransform());
+ }
+
+ return false;
+ }
+
+ SdrTextPrimitive2D* SdrChainedTextPrimitive2D::createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const
{
- //FIXME(matteocam)
- assert(0);
- return NULL;
+ return new SdrChainedTextPrimitive2D(getSdrText(), getOutlinerParaObject(), rTransform * getTextRangeTransform());
}
// provide unique ID
diff --git a/svx/source/svdraw/svdoutl.cxx b/svx/source/svdraw/svdoutl.cxx
index 7245cd3..17a7920 100644
--- a/svx/source/svdraw/svdoutl.cxx
+++ b/svx/source/svdraw/svdoutl.cxx
@@ -63,7 +63,7 @@ void SdrOutliner::SetTextObj( const SdrTextObj* pObj )
ClearPolygon();
// FIXME(matteoca)
- SetChainingEventHdl( LINK(pObj,SdrTextObj,ImpDecomposeChainedText) );
+ //SetChainingEventHdl( LINK(pObj,SdrTextObj,ImpDecomposeChainedText) );
}
mpTextObj.reset( const_cast< SdrTextObj* >(pObj) );
More information about the Libreoffice-commits
mailing list