diff options
author | Cédric Bosdonnat <cedric.bosdonnat@free.fr> | 2012-09-26 13:10:31 +0200 |
---|---|---|
committer | Cédric Bosdonnat <cedric.bosdonnat@free.fr> | 2012-09-27 09:23:20 +0200 |
commit | d4474dd0411d7de29ce42e181c97cbf032bf57ea (patch) | |
tree | 2c2751e078cf04da2991437d12e3ae8f09652f28 /svx | |
parent | 0f581ab761cefde208e576661850b57f2846fdb4 (diff) |
sw: implement page-relative size for drawing objects and import them from docx
Change-Id: I98b5c53d4860278e3646324ca045114e37b4cf61
Diffstat (limited to 'svx')
-rw-r--r-- | svx/inc/svx/svdoashp.hxx | 2 | ||||
-rw-r--r-- | svx/inc/svx/svdobj.hxx | 9 | ||||
-rw-r--r-- | svx/inc/svx/svdogrp.hxx | 2 | ||||
-rw-r--r-- | svx/inc/svx/svdovirt.hxx | 2 | ||||
-rw-r--r-- | svx/source/svdraw/svdoashp.cxx | 4 | ||||
-rw-r--r-- | svx/source/svdraw/svdobj.cxx | 7 | ||||
-rw-r--r-- | svx/source/svdraw/svdogrp.cxx | 6 | ||||
-rw-r--r-- | svx/source/svdraw/svdovirt.cxx | 4 |
8 files changed, 24 insertions, 12 deletions
diff --git a/svx/inc/svx/svdoashp.hxx b/svx/inc/svx/svdoashp.hxx index 0f540190493a..8b91894485c5 100644 --- a/svx/inc/svx/svdoashp.hxx +++ b/svx/inc/svx/svdoashp.hxx @@ -188,7 +188,7 @@ public: virtual const Rectangle& GetLogicRect() const; virtual void Move(const Size& rSiz); - virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact); + virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bUnsetRelative = true); virtual void Shear(const Point& rRef, long nWink, double tn, bool bVShear); virtual void SetSnapRect(const Rectangle& rRect); virtual void SetLogicRect(const Rectangle& rRect); diff --git a/svx/inc/svx/svdobj.hxx b/svx/inc/svx/svdobj.hxx index e0fac2681272..6c5b67b05f02 100644 --- a/svx/inc/svx/svdobj.hxx +++ b/svx/inc/svx/svdobj.hxx @@ -47,6 +47,7 @@ #include "svx/svxdllapi.h" #include "svx/shapeproperty.hxx" +#include <boost/optional.hpp> #include <boost/ptr_container/ptr_vector.hpp> //************************************************************ @@ -451,8 +452,14 @@ protected: // global static ItemPool for not-yet-insetred items private: static SdrItemPool* mpGlobalItemPool; + boost::optional<double> mnRelativeWidth; + boost::optional<double> mnRelativeHeight; public: static SdrItemPool& GetGlobalDrawObjectItemPool(); + void SetRelativeWidth( double nValue ) { mnRelativeWidth.reset( nValue ); } + void SetRelativeHeight( double nValue ) { mnRelativeHeight.reset( nValue ); } + boost::optional<double> GetRelativeWidth( ) const { return mnRelativeWidth; } + boost::optional<double> GetRelativeHeight( ) const { return mnRelativeHeight; } protected: void ImpDeleteUserData(); SdrObjUserData* ImpGetMacroUserData() const; @@ -721,7 +728,7 @@ public: virtual void NbcShear (const Point& rRef, long nWink, double tn, bool bVShear); virtual void Move (const Size& rSiz); - virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact); + virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bUnsetRelative = true); virtual void Rotate(const Point& rRef, long nWink, double sn, double cs); virtual void Mirror(const Point& rRef1, const Point& rRef2); virtual void Shear (const Point& rRef, long nWink, double tn, bool bVShear); diff --git a/svx/inc/svx/svdogrp.hxx b/svx/inc/svx/svdogrp.hxx index 3e8318e88c17..ed04fb8cb99f 100644 --- a/svx/inc/svx/svdogrp.hxx +++ b/svx/inc/svx/svdogrp.hxx @@ -97,7 +97,7 @@ public: virtual long GetShearAngle(bool bVertical = false) const; virtual void Move(const Size& rSiz); - virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact); + virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bUnsetRelative = true); virtual void Rotate(const Point& rRef, long nWink, double sn, double cs); virtual void Mirror(const Point& rRef1, const Point& rRef2); virtual void Shear(const Point& rRef, long nWink, double tn, bool bVShear); diff --git a/svx/inc/svx/svdovirt.hxx b/svx/inc/svx/svdovirt.hxx index a2f66e795805..03311b69adf8 100644 --- a/svx/inc/svx/svdovirt.hxx +++ b/svx/inc/svx/svdovirt.hxx @@ -116,7 +116,7 @@ public: virtual void NbcShear(const Point& rRef, long nWink, double tn, bool bVShear); virtual void Move(const Size& rSiz); - virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact); + virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bUnsetRelative = true); virtual void Rotate(const Point& rRef, long nWink, double sn, double cs); virtual void Mirror(const Point& rRef1, const Point& rRef2); virtual void Shear(const Point& rRef, long nWink, double tn, bool bVShear); diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx index dab7b9feaf62..4236d4bab00d 100644 --- a/svx/source/svdraw/svdoashp.cxx +++ b/svx/source/svdraw/svdoashp.cxx @@ -1534,9 +1534,9 @@ void SdrObjCustomShape::NbcMove( const Size& rSiz ) mpLastShadowGeometry->NbcMove( rSiz ); } } -void SdrObjCustomShape::Resize( const Point& rRef, const Fraction& xFact, const Fraction& yFact ) +void SdrObjCustomShape::Resize( const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bUnsetRelative ) { - SdrTextObj::Resize( rRef, xFact, yFact ); + SdrTextObj::Resize( rRef, xFact, yFact, bUnsetRelative ); } void SdrObjCustomShape::NbcResize( const Point& rRef, const Fraction& rxFact, const Fraction& ryFact ) diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx index 9cc99b17bbed..d0206fd9933a 100644 --- a/svx/source/svdraw/svdobj.cxx +++ b/svx/source/svdraw/svdobj.cxx @@ -1556,9 +1556,14 @@ void SdrObject::Move(const Size& rSiz) } } -void SdrObject::Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) +void SdrObject::Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bUnsetRelative) { if (xFact.GetNumerator()!=xFact.GetDenominator() || yFact.GetNumerator()!=yFact.GetDenominator()) { + if (bUnsetRelative) + { + mnRelativeWidth.reset( ); + mnRelativeHeight.reset( ); + } Rectangle aBoundRect0; if (pUserCall!=NULL) aBoundRect0=GetLastBoundRect(); NbcResize(rRef,xFact,yFact); SetChanged(); diff --git a/svx/source/svdraw/svdogrp.cxx b/svx/source/svdraw/svdogrp.cxx index bf8552521be6..6bf8ba187a5d 100644 --- a/svx/source/svdraw/svdogrp.cxx +++ b/svx/source/svdraw/svdogrp.cxx @@ -584,7 +584,7 @@ void SdrObjGroup::Move(const Size& rSiz) } -void SdrObjGroup::Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) +void SdrObjGroup::Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bUnsetRelative) { if (xFact.GetNumerator()!=xFact.GetDenominator() || yFact.GetNumerator()!=yFact.GetDenominator()) { bool bXMirr=(xFact.GetNumerator()<0) != (xFact.GetDenominator()<0); @@ -611,11 +611,11 @@ void SdrObjGroup::Resize(const Point& rRef, const Fraction& xFact, const Fractio sal_uIntPtr i; for (i=0; i<nObjAnz; i++) { SdrObject* pObj=pOL->GetObj(i); - if (pObj->IsEdgeObj()) pObj->Resize(rRef,xFact,yFact); + if (pObj->IsEdgeObj()) pObj->Resize(rRef,xFact,yFact,bUnsetRelative); } for (i=0; i<nObjAnz; i++) { SdrObject* pObj=pOL->GetObj(i); - if (!pObj->IsEdgeObj()) pObj->Resize(rRef,xFact,yFact); + if (!pObj->IsEdgeObj()) pObj->Resize(rRef,xFact,yFact,bUnsetRelative); } } else { ResizeRect(aOutRect,rRef,xFact,yFact); diff --git a/svx/source/svdraw/svdovirt.cxx b/svx/source/svdraw/svdovirt.cxx index 3534ff43eb7d..0452a168423c 100644 --- a/svx/source/svdraw/svdovirt.cxx +++ b/svx/source/svdraw/svdovirt.cxx @@ -412,11 +412,11 @@ void SdrVirtObj::Move(const Size& rSiz) } } -void SdrVirtObj::Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) +void SdrVirtObj::Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bUnsetRelative) { if (xFact.GetNumerator()!=xFact.GetDenominator() || yFact.GetNumerator()!=yFact.GetDenominator()) { Rectangle aBoundRect0; if (pUserCall!=NULL) aBoundRect0=GetLastBoundRect(); - rRefObj.Resize(rRef-aAnchor,xFact,yFact); + rRefObj.Resize(rRef-aAnchor,xFact,yFact, bUnsetRelative); SetRectsDirty(); SendUserCall(SDRUSERCALL_RESIZE,aBoundRect0); } |