[Libreoffice-commits] core.git: 3 commits - include/svx svx/source sw/source
Miklos Vajna
vmiklos at collabora.co.uk
Thu Feb 20 03:34:57 PST 2014
include/svx/svdobj.hxx | 6 ++++++
svx/source/svdraw/svdobj.cxx | 5 +++++
sw/source/core/layout/anchoreddrawobject.cxx | 17 ++++++++++++++++-
sw/source/core/unocore/unodraw.cxx | 19 ++++++++++++++++---
sw/source/core/unocore/unomap.cxx | 2 ++
5 files changed, 45 insertions(+), 4 deletions(-)
New commits:
commit 90519c0436bacc50136b33039bd107e4f6bdb24c
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Thu Feb 20 12:18:23 2014 +0100
SwAnchoredDrawObject: respect SdrObject::GetRelativeWidth/HeightRelation()
Change-Id: Ie107ea749a1f4c261106f0f18f3818b85d65e9b4
diff --git a/sw/source/core/layout/anchoreddrawobject.cxx b/sw/source/core/layout/anchoreddrawobject.cxx
index 65416d4..e9630a9 100644
--- a/sw/source/core/layout/anchoreddrawobject.cxx
+++ b/sw/source/core/layout/anchoreddrawobject.cxx
@@ -630,16 +630,31 @@ const SwRect SwAnchoredDrawObject::GetObjBoundRect() const
// Resize objects with relative width or height
if ( !bGroupShape && GetPageFrm( ) && ( GetDrawObj( )->GetRelativeWidth( ) || GetDrawObj()->GetRelativeHeight( ) ) )
{
- Rectangle aPageRect = GetPageFrm( )->GetBoundRect( ).SVRect();
Rectangle aCurrObjRect = GetDrawObj()->GetCurrentBoundRect();
long nTargetWidth = aCurrObjRect.GetWidth( );
if ( GetDrawObj( )->GetRelativeWidth( ) )
+ {
+ Rectangle aPageRect;
+ if (GetDrawObj()->GetRelativeWidthRelation() == text::RelOrientation::FRAME)
+ // Exclude margins.
+ aPageRect = GetPageFrm()->Prt().SVRect();
+ else
+ aPageRect = GetPageFrm( )->GetBoundRect( ).SVRect();
nTargetWidth = aPageRect.GetWidth( ) * GetDrawObj( )->GetRelativeWidth( ).get( );
+ }
long nTargetHeight = aCurrObjRect.GetHeight( );
if ( GetDrawObj( )->GetRelativeHeight( ) )
+ {
+ Rectangle aPageRect;
+ if (GetDrawObj()->GetRelativeHeightRelation() == text::RelOrientation::FRAME)
+ // Exclude margins.
+ aPageRect = GetPageFrm()->Prt().SVRect();
+ else
+ aPageRect = GetPageFrm( )->GetBoundRect( ).SVRect();
nTargetHeight = aPageRect.GetHeight( ) * GetDrawObj( )->GetRelativeHeight( ).get( );
+ }
if ( nTargetWidth != aCurrObjRect.GetWidth( ) || nTargetHeight != aCurrObjRect.GetHeight( ) )
{
commit b548b2efb1a8aafcd5e56a1d26b933354ff02a47
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Thu Feb 20 12:07:51 2014 +0100
sw: enable Relative{Height,Width}Relation UNO properties for shapes
Change-Id: I40080bd9b096b9fa5d660b11c4e5821db31fd412
diff --git a/sw/source/core/unocore/unodraw.cxx b/sw/source/core/unocore/unodraw.cxx
index 4b48e46..b3c7c0c 100644
--- a/sw/source/core/unocore/unodraw.cxx
+++ b/sw/source/core/unocore/unodraw.cxx
@@ -1258,7 +1258,9 @@ void SwXShape::setPropertyValue(const OUString& rPropertyName, const uno::Any& a
}
}
else if( RES_FRM_SIZE == pEntry->nWID &&
- ( pEntry->nMemberId == MID_FRMSIZE_REL_HEIGHT || pEntry->nMemberId == MID_FRMSIZE_REL_WIDTH ) )
+ ( pEntry->nMemberId == MID_FRMSIZE_REL_HEIGHT || pEntry->nMemberId == MID_FRMSIZE_REL_WIDTH
+ || pEntry->nMemberId == MID_FRMSIZE_REL_HEIGHT_RELATION
+ || pEntry->nMemberId == MID_FRMSIZE_REL_WIDTH_RELATION ) )
{
SvxShape* pSvxShape = GetSvxShape();
SAL_WARN_IF(!pSvxShape, "sw.uno", "No SvxShape found!");
@@ -1267,10 +1269,21 @@ void SwXShape::setPropertyValue(const OUString& rPropertyName, const uno::Any& a
SdrObject* pObj = pSvxShape->GetSdrObject();
sal_Int16 nPercent(100);
aValue >>= nPercent;
- if ( pEntry->nMemberId == MID_FRMSIZE_REL_WIDTH )
+ switch (pEntry->nMemberId)
+ {
+ case MID_FRMSIZE_REL_WIDTH:
pObj->SetRelativeWidth( nPercent / 100.0 );
- else
+ break;
+ case MID_FRMSIZE_REL_HEIGHT:
pObj->SetRelativeHeight( nPercent / 100.0 );
+ break;
+ case MID_FRMSIZE_REL_WIDTH_RELATION:
+ pObj->SetRelativeWidthRelation(nPercent);
+ break;
+ case MID_FRMSIZE_REL_HEIGHT_RELATION:
+ pObj->SetRelativeHeightRelation(nPercent);
+ break;
+ }
}
}
else
diff --git a/sw/source/core/unocore/unomap.cxx b/sw/source/core/unocore/unomap.cxx
index eac4e79..1c59657 100644
--- a/sw/source/core/unocore/unomap.cxx
+++ b/sw/source/core/unocore/unomap.cxx
@@ -1328,7 +1328,9 @@ const SfxItemPropertyMapEntry* SwUnoPropertyMapProvider::GetPropertyMapEntries(s
// missing map entry for property <PageToogle>
{ OUString(UNO_NAME_PAGE_TOGGLE), RES_HORI_ORIENT, cppu::UnoType<bool>::get(), PROPERTY_NONE ,MID_HORIORIENT_PAGETOGGLE },
{ OUString(UNO_NAME_RELATIVE_HEIGHT), RES_FRM_SIZE, cppu::UnoType<sal_Int16>::get() , PROPERTY_NONE, MID_FRMSIZE_REL_HEIGHT },
+ { OUString(UNO_NAME_RELATIVE_HEIGHT_RELATION), RES_FRM_SIZE, cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_FRMSIZE_REL_HEIGHT_RELATION },
{ OUString(UNO_NAME_RELATIVE_WIDTH), RES_FRM_SIZE, cppu::UnoType<sal_Int16>::get() , PROPERTY_NONE, MID_FRMSIZE_REL_WIDTH },
+ { OUString(UNO_NAME_RELATIVE_WIDTH_RELATION), RES_FRM_SIZE, cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_FRMSIZE_REL_WIDTH_RELATION },
{ OUString(), 0, css::uno::Type(), 0, 0 }
};
aMapEntriesArr[nPropertyId] = aShapeMap_Impl;
commit b0bf124360730e79366e1be73383d4639e608a4c
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Thu Feb 20 11:14:14 2014 +0100
SdrObject: add meRelativeWidth/HeightRelation
Similar to Writer TextBoxes, this member is supposed to store the
"relation" (text::RelOrientation constants) of the relative
width/height, so far the layout always assumed "relative to page".
Change-Id: I5100745314e45ad322bff2b761e3722459aba014
diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx
index efc5a0e..611b365 100644
--- a/include/svx/svdobj.hxx
+++ b/include/svx/svdobj.hxx
@@ -413,13 +413,19 @@ protected:
private:
static SdrItemPool* mpGlobalItemPool;
boost::optional<double> mnRelativeWidth;
+ sal_Int16 meRelativeWidthRelation;
boost::optional<double> mnRelativeHeight;
+ sal_Int16 meRelativeHeightRelation;
public:
static SdrItemPool& GetGlobalDrawObjectItemPool();
void SetRelativeWidth( double nValue ) { mnRelativeWidth.reset( nValue ); }
+ void SetRelativeWidthRelation( sal_Int16 eValue ) { meRelativeWidthRelation = eValue; }
void SetRelativeHeight( double nValue ) { mnRelativeHeight.reset( nValue ); }
+ void SetRelativeHeightRelation( sal_Int16 eValue ) { meRelativeHeightRelation = eValue; }
boost::optional<double> GetRelativeWidth( ) const { return mnRelativeWidth; }
+ sal_Int16 GetRelativeWidthRelation() const { return meRelativeWidthRelation; }
boost::optional<double> GetRelativeHeight( ) const { return mnRelativeHeight; }
+ sal_Int16 GetRelativeHeightRelation() const { return meRelativeHeightRelation; }
// evil calc grid/shape drawlayer syncing
Point GetGridOffset() const { return aGridOffset; }
void SetGridOffset( const Point& rGridOffset ){ aGridOffset = rGridOffset; }
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index 9999a46..4a0d63c 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -20,6 +20,7 @@
#include "sal/config.h"
#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/text/RelOrientation.hpp>
#include "svdconv.hxx"
@@ -437,6 +438,8 @@ SdrObject::SdrObject()
,pGrabBagItem(NULL)
,mnNavigationPosition(SAL_MAX_UINT32)
,mnLayerID(0)
+ ,meRelativeWidthRelation(text::RelOrientation::PAGE_FRAME)
+ ,meRelativeHeightRelation(text::RelOrientation::PAGE_FRAME)
,mpSvxShape( NULL )
,maWeakUnoShape()
,mbDoNotInsertIntoPageAutomatically(false)
@@ -1615,6 +1618,8 @@ void SdrObject::Resize(const Point& rRef, const Fraction& xFact, const Fraction&
if (bUnsetRelative)
{
mnRelativeWidth.reset( );
+ meRelativeWidthRelation = text::RelOrientation::PAGE_FRAME;
+ meRelativeHeightRelation = text::RelOrientation::PAGE_FRAME;
mnRelativeHeight.reset( );
}
Rectangle aBoundRect0; if (pUserCall!=NULL) aBoundRect0=GetLastBoundRect();
More information about the Libreoffice-commits
mailing list