[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