diff options
Diffstat (limited to 'sw/source/ui/frmdlg/frmmgr.cxx')
-rw-r--r-- | sw/source/ui/frmdlg/frmmgr.cxx | 629 |
1 files changed, 629 insertions, 0 deletions
diff --git a/sw/source/ui/frmdlg/frmmgr.cxx b/sw/source/ui/frmdlg/frmmgr.cxx new file mode 100644 index 000000000000..dd709b8243d4 --- /dev/null +++ b/sw/source/ui/frmdlg/frmmgr.cxx @@ -0,0 +1,629 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sw.hxx" + +#include "cmdid.h" +#include "hintids.hxx" + +#include <svl/stritem.hxx> +#include <editeng/protitem.hxx> +#include <editeng/boxitem.hxx> +#include <editeng/opaqitem.hxx> +#include <editeng/lrspitem.hxx> +#include <editeng/ulspitem.hxx> +#include <editeng/shaditem.hxx> +#include <svx/swframevalidation.hxx> +#include <fmtclds.hxx> +#include "wrtsh.hxx" +#include "view.hxx" +#include "viewopt.hxx" +#include "uitool.hxx" +#include "frmmgr.hxx" +#include "format.hxx" +#include "mdiexp.hxx" +#include "poolfmt.hxx" +#include <com/sun/star/text/TextContentAnchorType.hpp> +#include <com/sun/star/text/HoriOrientation.hpp> +#include <com/sun/star/text/VertOrientation.hpp> +#include <com/sun/star/text/RelOrientation.hpp> + +using namespace ::com::sun::star; +//using namespace text; + +static sal_uInt16 __FAR_DATA aFrmMgrRange[] = { + RES_FRMATR_BEGIN, RES_FRMATR_END-1, + SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER, + FN_SET_FRM_NAME, FN_SET_FRM_NAME, + 0}; + +/*-------------------------------------------------------------------- + Beschreibung: Rahmen-Attribute ueber Shell ermitteln + --------------------------------------------------------------------*/ + +SwFlyFrmAttrMgr::SwFlyFrmAttrMgr( sal_Bool bNew, SwWrtShell* pSh, sal_uInt8 nType ) : + aSet( (SwAttrPool&)pSh->GetAttrPool(), aFrmMgrRange ), + pOwnSh( pSh ), + bAbsPos( sal_False ), + bNewFrm( bNew ), + bIsInVertical( sal_False ), + bIsInVerticalL2R( sal_False ) +{ + if ( bNewFrm ) + { + // Defaults einstellen: + sal_uInt16 nId = 0; + switch ( nType ) + { + case FRMMGR_TYPE_TEXT: nId = RES_POOLFRM_FRAME; break; + case FRMMGR_TYPE_OLE: nId = RES_POOLFRM_OLE; break; + case FRMMGR_TYPE_GRF: nId = RES_POOLFRM_GRAPHIC; break; + } + aSet.SetParent( &pOwnSh->GetFmtFromPool( nId )->GetAttrSet()); + aSet.Put( SwFmtFrmSize( ATT_MIN_SIZE, DFLT_WIDTH, DFLT_HEIGHT )); + if ( 0 != ::GetHtmlMode(pSh->GetView().GetDocShell()) ) + aSet.Put( SwFmtHoriOrient( 0, text::HoriOrientation::LEFT, text::RelOrientation::PRINT_AREA ) ); + } + else if ( nType == FRMMGR_TYPE_NONE ) + { + pOwnSh->GetFlyFrmAttr( aSet ); + sal_Bool bRightToLeft; + bIsInVertical = pOwnSh->IsFrmVertical(sal_True, bRightToLeft, bIsInVerticalL2R); + } + ::PrepareBoxInfo( aSet, *pOwnSh ); +} + +SwFlyFrmAttrMgr::SwFlyFrmAttrMgr( sal_Bool bNew, SwWrtShell* pSh, const SfxItemSet &rSet ) : + aSet( rSet ), + pOwnSh( pSh ), + bAbsPos( sal_False ), + bNewFrm( bNew ), + bIsInVertical(sal_False), + bIsInVerticalL2R(sal_False) +{ + if(!bNew) + { + sal_Bool bRightToLeft; + bIsInVertical = pSh->IsFrmVertical(sal_True, bRightToLeft, bIsInVerticalL2R); + } +} + + +/*-------------------------------------------------------------------- + Beschreibung: Initialisieren + --------------------------------------------------------------------*/ + +void SwFlyFrmAttrMgr::UpdateAttrMgr() +{ + if ( !bNewFrm && pOwnSh->IsFrmSelected() ) + pOwnSh->GetFlyFrmAttr( aSet ); + ::PrepareBoxInfo( aSet, *pOwnSh ); +} + +void SwFlyFrmAttrMgr::_UpdateFlyFrm() +{ + const SfxPoolItem* pItem = 0; + + if (aSet.GetItemState(FN_SET_FRM_NAME, sal_False, &pItem) == SFX_ITEM_SET) + pOwnSh->SetFlyName(((SfxStringItem *)pItem)->GetValue()); + + pOwnSh->SetModified(); + + if ( bAbsPos ) + { + pOwnSh->SetFlyPos( aAbsPos ); + bAbsPos = sal_False; + } +} + +/*-------------------------------------------------------------------- + Beschreibung: Bestehenden Fly-Frame aendern + --------------------------------------------------------------------*/ + +void SwFlyFrmAttrMgr::UpdateFlyFrm() +{ + ASSERT( pOwnSh->IsFrmSelected(), + "Kein Rahmen selektiert oder keine Shell, Update nicht moeglich"); + + if( pOwnSh->IsFrmSelected() ) + { + //JP 6.8.2001: set never an invalid anchor into the core. + const SfxPoolItem *pGItem, *pItem; + if( SFX_ITEM_SET == aSet.GetItemState( RES_ANCHOR, sal_False, &pItem )) + { + SfxItemSet aGetSet( *aSet.GetPool(), RES_ANCHOR, RES_ANCHOR ); + if( pOwnSh->GetFlyFrmAttr( aGetSet ) && 1 == aGetSet.Count() && + SFX_ITEM_SET == aGetSet.GetItemState( RES_ANCHOR, sal_False, &pGItem ) + && ((SwFmtAnchor*)pGItem)->GetAnchorId() == + ((SwFmtAnchor*)pItem)->GetAnchorId() ) + aSet.ClearItem( RES_ANCHOR ); + } + + // return wg. BASIC + if( aSet.Count() ) + { + pOwnSh->StartAllAction(); + pOwnSh->SetFlyFrmAttr( aSet ); + _UpdateFlyFrm(); + pOwnSh->EndAllAction(); + } + } +} + +/*-------------------------------------------------------------------- + Beschreibung: Rahmen einfuegen + --------------------------------------------------------------------*/ + +sal_Bool SwFlyFrmAttrMgr::InsertFlyFrm() +{ + pOwnSh->StartAllAction(); + + sal_Bool bRet = 0 != pOwnSh->NewFlyFrm( aSet ); + + // richtigen Mode an der Shell einschalten, Rahmen wurde aut. selektiert. + if ( bRet ) + { + _UpdateFlyFrm(); + pOwnSh->EnterSelFrmMode(); + FrameNotify(pOwnSh, FLY_DRAG_START); + } + pOwnSh->EndAllAction(); + return bRet; +} + +/*------------------------------------------------------------------------ + Beschreibung: Rahmen des Typs eAnchorType einfuegen. Position und + Groesse werden explizit angegeben. + Nicht erlaubte Werte des Aufzaehlungstypes werden + korrigiert. +------------------------------------------------------------------------*/ + +void SwFlyFrmAttrMgr::InsertFlyFrm(RndStdIds eAnchorType, + const Point &rPos, + const Size &rSize, + sal_Bool bAbs ) +{ + ASSERT( eAnchorType == FLY_AT_PAGE || + eAnchorType == FLY_AT_PARA || + eAnchorType == FLY_AT_CHAR || + eAnchorType == FLY_AT_FLY || + eAnchorType == FLY_AS_CHAR, "invalid frame type" ); + + if ( bAbs ) + SetAbsPos( rPos ); + else + SetPos( rPos ); + + SetSize( rSize ); + SetAnchor( eAnchorType ); + InsertFlyFrm(); +} + +/*-------------------------------------------------------------------- + Beschreibung: Anker setzen + --------------------------------------------------------------------*/ + +void SwFlyFrmAttrMgr::SetAnchor( RndStdIds eId ) +{ + sal_uInt16 nPhyPageNum, nVirtPageNum; + pOwnSh->GetPageNum( nPhyPageNum, nVirtPageNum ); + + aSet.Put( SwFmtAnchor( eId, nPhyPageNum ) ); + if ((FLY_AT_PAGE == eId) || (FLY_AT_PARA == eId) || (FLY_AT_CHAR == eId) + || (FLY_AT_FLY == eId)) + { + SwFmtVertOrient aVertOrient( GetVertOrient() ); + SwFmtHoriOrient aHoriOrient( GetHoriOrient() ); + aHoriOrient.SetRelationOrient( text::RelOrientation::FRAME ); + aVertOrient.SetRelationOrient( text::RelOrientation::FRAME ); + aSet.Put( aVertOrient ); + aSet.Put( aHoriOrient ); + } +} + +/*------------------------------------------------------------------------ + Beschreibung: Setzen des Attributs fuer Spalten +------------------------------------------------------------------------*/ + +void SwFlyFrmAttrMgr::SetCol( const SwFmtCol &rCol ) +{ + aSet.Put( rCol ); +} +/*-------------------------------------------------------------------- + Beschreibung: Absolute Position setzen + --------------------------------------------------------------------*/ + +void SwFlyFrmAttrMgr::SetAbsPos( const Point& rPoint ) +{ + bAbsPos = sal_True; + aAbsPos = rPoint; + + SwFmtVertOrient aVertOrient( GetVertOrient() ); + SwFmtHoriOrient aHoriOrient( GetHoriOrient() ); + aHoriOrient.SetHoriOrient( text::HoriOrientation::NONE ); + aVertOrient.SetVertOrient( text::VertOrientation::NONE ); + aSet.Put( aVertOrient ); + aSet.Put( aHoriOrient ); +} + +/*-------------------------------------------------------------------- + Beschreibung: Metriken auf Korrektheit pruefen + --------------------------------------------------------------------*/ +void SwFlyFrmAttrMgr::ValidateMetrics( SvxSwFrameValidation& rVal, + const SwPosition* pToCharCntntPos, + sal_Bool bOnlyPercentRefValue ) +{ + if (!bOnlyPercentRefValue) + { + rVal.nMinHeight = MINFLY + CalcTopSpace() + CalcBottomSpace(); + rVal.nMinWidth = MINFLY + CalcLeftSpace()+ CalcRightSpace(); + } + + SwRect aBoundRect; + + // OD 18.09.2003 #i18732# - adjustment for allowing vertical position + // aligned to page for fly frame anchored to paragraph or to character. + const RndStdIds eAnchorType = static_cast<RndStdIds >(rVal.nAnchorType); + pOwnSh->CalcBoundRect( aBoundRect, eAnchorType, + rVal.nHRelOrient, + rVal.nVRelOrient, + pToCharCntntPos, + rVal.bFollowTextFlow, + rVal.bMirror, NULL, &rVal.aPercentSize); + + if (bOnlyPercentRefValue) + return; + + // --> OD 2009-09-01 #mongolianlayout# + if ( bIsInVertical || bIsInVerticalL2R ) + // <-- + { + Point aPos(aBoundRect.Pos()); + long nTmp = aPos.X(); + aPos.X() = aPos.Y(); + aPos.Y() = nTmp; + Size aSize(aBoundRect.SSize()); + nTmp = aSize.Width(); + aSize.Width() = aSize.Height(); + aSize.Height() = nTmp; + aBoundRect.Chg( aPos, aSize ); + //exchange width/height to enable correct values + nTmp = rVal.nWidth; + rVal.nWidth = rVal.nHeight; + rVal.nHeight = nTmp; + } + if ((eAnchorType == FLY_AT_PAGE) || (eAnchorType == FLY_AT_FLY)) + { + // MinimalPosition + rVal.nMinHPos = aBoundRect.Left(); + rVal.nMinVPos = aBoundRect.Top(); + SwTwips nH = rVal.nHPos; + SwTwips nV = rVal.nVPos; + + if (rVal.nHPos + rVal.nWidth > aBoundRect.Right()) + { + if (rVal.nHoriOrient == text::HoriOrientation::NONE) + { + rVal.nHPos -= ((rVal.nHPos + rVal.nWidth) - aBoundRect.Right()); + nH = rVal.nHPos; + } + else + rVal.nWidth = aBoundRect.Right() - rVal.nHPos; + } + + if (rVal.nHPos + rVal.nWidth > aBoundRect.Right()) + rVal.nWidth = aBoundRect.Right() - rVal.nHPos; + + if (rVal.nVPos + rVal.nHeight > aBoundRect.Bottom()) + { + if (rVal.nVertOrient == text::VertOrientation::NONE) + { + rVal.nVPos -= ((rVal.nVPos + rVal.nHeight) - aBoundRect.Bottom()); + nV = rVal.nVPos; + } + else + rVal.nHeight = aBoundRect.Bottom() - rVal.nVPos; + } + + if (rVal.nVPos + rVal.nHeight > aBoundRect.Bottom()) + rVal.nHeight = aBoundRect.Bottom() - rVal.nVPos; + + if ( rVal.nVertOrient != text::VertOrientation::NONE ) + nV = aBoundRect.Top(); + + if ( rVal.nHoriOrient != text::HoriOrientation::NONE ) + nH = aBoundRect.Left(); + + rVal.nMaxHPos = aBoundRect.Right() - rVal.nWidth; + rVal.nMaxHeight = aBoundRect.Bottom() - nV; + + rVal.nMaxVPos = aBoundRect.Bottom() - rVal.nHeight; + rVal.nMaxWidth = aBoundRect.Right() - nH; + } + // OD 12.11.2003 #i22341# - handle to character anchored objects vertical + // aligned at character or top of line in a special case + else if ((eAnchorType == FLY_AT_PARA) || + ((eAnchorType == FLY_AT_CHAR) && + !(rVal.nVRelOrient == text::RelOrientation::CHAR) && + !(rVal.nVRelOrient == text::RelOrientation::TEXT_LINE) ) ) + { + if (rVal.nHPos + rVal.nWidth > aBoundRect.Right()) + { + if (rVal.nHoriOrient == text::HoriOrientation::NONE) + { + rVal.nHPos -= ((rVal.nHPos + rVal.nWidth) - aBoundRect.Right()); + } + else + rVal.nWidth = aBoundRect.Right() - rVal.nHPos; + } + + // OD 29.09.2003 #i17567#, #i18732# - consider following the text flow + // and alignment at page areas. + const bool bMaxVPosAtBottom = !rVal.bFollowTextFlow || + rVal.nVRelOrient == text::RelOrientation::PAGE_FRAME || + rVal.nVRelOrient == text::RelOrientation::PAGE_PRINT_AREA; + { + SwTwips nTmpMaxVPos = ( bMaxVPosAtBottom + ? aBoundRect.Bottom() + : aBoundRect.Height() ) - + rVal.nHeight; + if ( rVal.nVPos > nTmpMaxVPos ) + { + if (rVal.nVertOrient == text::VertOrientation::NONE) + { + rVal.nVPos = nTmpMaxVPos; + } + else + { + rVal.nHeight = ( bMaxVPosAtBottom + ? aBoundRect.Bottom() + : aBoundRect.Height() ) - rVal.nVPos; + } + } + } + + rVal.nMinHPos = aBoundRect.Left(); + rVal.nMaxHPos = aBoundRect.Right() - rVal.nWidth; + + rVal.nMinVPos = aBoundRect.Top(); + // OD 26.09.2003 #i17567#, #i18732# - determine maximum vertical position + if ( bMaxVPosAtBottom ) + { + rVal.nMaxVPos = aBoundRect.Bottom() - rVal.nHeight; + } + else + { + rVal.nMaxVPos = aBoundRect.Height() - rVal.nHeight; + } + + // Maximale Breite Hoehe + const SwTwips nH = ( rVal.nHoriOrient != text::HoriOrientation::NONE ) + ? aBoundRect.Left() + : rVal.nHPos; + const SwTwips nV = ( rVal.nVertOrient != text::VertOrientation::NONE ) + ? aBoundRect.Top() + : rVal.nVPos; + rVal.nMaxHeight = rVal.nMaxVPos + rVal.nHeight - nV; + rVal.nMaxWidth = rVal.nMaxHPos + rVal.nWidth - nH; + } + // OD 12.11.2003 #i22341# - special case for to character anchored objects + // vertical aligned at character or top of line. + // Note: (1) positive vertical values are positions above the top of line + // (2) negative vertical values are positions below the top of line + else if ( (eAnchorType == FLY_AT_CHAR) && + ( rVal.nVRelOrient == text::RelOrientation::CHAR || + rVal.nVRelOrient == text::RelOrientation::TEXT_LINE ) ) + { + // determine horizontal values + rVal.nMinHPos = aBoundRect.Left(); + + rVal.nMaxHPos = aBoundRect.Right() - rVal.nWidth; + if (rVal.nHPos + rVal.nWidth > aBoundRect.Right()) + { + if (rVal.nHoriOrient == text::HoriOrientation::NONE) + { + rVal.nHPos -= ((rVal.nHPos + rVal.nWidth) - aBoundRect.Right()); + } + else + rVal.nWidth = aBoundRect.Right() - rVal.nHPos; + } + + const SwTwips nH = ( rVal.nHoriOrient != text::HoriOrientation::NONE ) + ? aBoundRect.Left() + : rVal.nHPos; + rVal.nMaxWidth = rVal.nMaxHPos + rVal.nWidth - nH; + + // determine vertical values + rVal.nMinVPos = -( aBoundRect.Bottom() - rVal.nHeight ); + if ( rVal.nVPos < rVal.nMinVPos && + rVal.nVertOrient == text::VertOrientation::NONE ) + { + rVal.nVPos = rVal.nMinVPos; + } + + rVal.nMaxVPos = -aBoundRect.Top(); + if ( rVal.nVPos > rVal.nMaxVPos && + rVal.nVertOrient == text::VertOrientation::NONE ) + { + rVal.nVPos = rVal.nMaxVPos; + } + + if ( rVal.nVertOrient == text::VertOrientation::NONE ) + { + rVal.nMaxHeight = aBoundRect.Bottom() + rVal.nVPos; + } + else + { + rVal.nMaxHeight = aBoundRect.Height(); + } + } + else if ( eAnchorType == FLY_AS_CHAR ) + { + rVal.nMinHPos = 0; + rVal.nMaxHPos = 0; + + rVal.nMaxHeight = aBoundRect.Height(); + rVal.nMaxWidth = aBoundRect.Width(); + + rVal.nMaxVPos = aBoundRect.Height(); + rVal.nMinVPos = -aBoundRect.Height() + rVal.nHeight; + if (rVal.nMaxVPos < rVal.nMinVPos) + { + rVal.nMinVPos = rVal.nMaxVPos; + rVal.nMaxVPos = -aBoundRect.Height(); + } + } + // --> OD 2009-09-01 #mongolianlayout# + if ( bIsInVertical || bIsInVerticalL2R ) + // <-- + { + //restore width/height exchange + long nTmp = rVal.nWidth; + rVal.nWidth = rVal.nHeight; + rVal.nHeight = nTmp; + } + + if (rVal.nMaxWidth < rVal.nWidth) + rVal.nWidth = rVal.nMaxWidth; + if (rVal.nMaxHeight < rVal.nHeight) + rVal.nHeight = rVal.nMaxHeight; +} + +/*-------------------------------------------------------------------- + Beschreibung: Korrektur fuer Umrandung + --------------------------------------------------------------------*/ + +SwTwips SwFlyFrmAttrMgr::CalcTopSpace() +{ + const SvxShadowItem& rShadow = GetShadow(); + const SvxBoxItem& rBox = GetBox(); + return rShadow.CalcShadowSpace(SHADOW_TOP ) + rBox.CalcLineSpace(BOX_LINE_TOP); +} + +SwTwips SwFlyFrmAttrMgr::CalcBottomSpace() +{ + const SvxShadowItem& rShadow = GetShadow(); + const SvxBoxItem& rBox = GetBox(); + return rShadow.CalcShadowSpace(SHADOW_BOTTOM) + rBox.CalcLineSpace(BOX_LINE_BOTTOM); +} + +SwTwips SwFlyFrmAttrMgr::CalcLeftSpace() +{ + const SvxShadowItem& rShadow = GetShadow(); + const SvxBoxItem& rBox = GetBox(); + return rShadow.CalcShadowSpace(SHADOW_LEFT) + rBox.CalcLineSpace(BOX_LINE_LEFT); +} + +SwTwips SwFlyFrmAttrMgr::CalcRightSpace() +{ + const SvxShadowItem& rShadow = GetShadow(); + const SvxBoxItem& rBox = GetBox(); + return rShadow.CalcShadowSpace(SHADOW_RIGHT) + rBox.CalcLineSpace(BOX_LINE_RIGHT); +} + + +/*-------------------------------------------------------------------- + Beschreibung: Attribut aus dem Set loeschen + --------------------------------------------------------------------*/ +void SwFlyFrmAttrMgr::DelAttr( sal_uInt16 nId ) +{ + aSet.ClearItem( nId ); +} + +void SwFlyFrmAttrMgr::SetLRSpace( long nLeft, long nRight ) +{ + ASSERT( LONG_MAX != nLeft && LONG_MAX != nRight, "Welchen Raend setzen?" ); + + SvxLRSpaceItem aTmp( (SvxLRSpaceItem&)aSet.Get( RES_LR_SPACE ) ); + if( LONG_MAX != nLeft ) + aTmp.SetLeft( sal_uInt16(nLeft) ); + if( LONG_MAX != nRight ) + aTmp.SetRight( sal_uInt16(nRight) ); + aSet.Put( aTmp ); +} + +void SwFlyFrmAttrMgr::SetULSpace( long nTop, long nBottom ) +{ + ASSERT(LONG_MAX != nTop && LONG_MAX != nBottom, "Welchen Raend setzen?" ); + + SvxULSpaceItem aTmp( (SvxULSpaceItem&)aSet.Get( RES_UL_SPACE ) ); + if( LONG_MAX != nTop ) + aTmp.SetUpper( sal_uInt16(nTop) ); + if( LONG_MAX != nBottom ) + aTmp.SetLower( sal_uInt16(nBottom) ); + aSet.Put( aTmp ); +} + +void SwFlyFrmAttrMgr::SetPos( const Point& rPoint ) +{ + SwFmtVertOrient aVertOrient( GetVertOrient() ); + SwFmtHoriOrient aHoriOrient( GetHoriOrient() ); + + aHoriOrient.SetPos ( rPoint.X() ); + aHoriOrient.SetHoriOrient( text::HoriOrientation::NONE ); + + aVertOrient.SetPos ( rPoint.Y() ); + aVertOrient.SetVertOrient( text::VertOrientation::NONE ); + + aSet.Put( aVertOrient ); + aSet.Put( aHoriOrient ); +} + +void SwFlyFrmAttrMgr::SetHorzOrientation( sal_Int16 eOrient ) +{ + SwFmtHoriOrient aHoriOrient( GetHoriOrient() ); + aHoriOrient.SetHoriOrient( eOrient ); + aSet.Put( aHoriOrient ); +} + +void SwFlyFrmAttrMgr::SetVertOrientation( sal_Int16 eOrient ) +{ + SwFmtVertOrient aVertOrient( GetVertOrient() ); + aVertOrient.SetVertOrient( eOrient ); + aSet.Put( aVertOrient ); +} + +void SwFlyFrmAttrMgr::SetHeightSizeType( SwFrmSize eType ) +{ + SwFmtFrmSize aSize( GetFrmSize() ); + aSize.SetHeightSizeType( eType ); + aSet.Put( aSize ); +} + +void SwFlyFrmAttrMgr::SetSize( const Size& rSize ) +{ + SwFmtFrmSize aSize( GetFrmSize() ); + aSize.SetSize(Size(Max(rSize.Width(), long(MINFLY)), Max(rSize.Height(), long(MINFLY)))); + aSet.Put( aSize ); +} + +void SwFlyFrmAttrMgr::SetAttrSet(const SfxItemSet& rSet) +{ + aSet.ClearItem(); + aSet.Put( rSet ); +} |