*** orig/chart2/source/controller/main/chartcontroller_position.cxx Wed Jul 25 16:43:24 2007 --- new/chart2/source/controller/main/chartcontroller_position.cxx Fri Mar 14 09:49:23 2008 *************** *** 45,50 **** --- 45,52 ---- #include "UndoGuard.hxx" #include "Strings.hrc" #include "ObjectNameProvider.hxx" + #include "chartview/ExplicitValueProvider.hxx" + #include "CommonConverters.hxx" #ifndef _SVX_ACTIONDESCRIPTIONPROVIDER_HXX #include *************** *** 59,64 **** --- 61,74 ---- #include #endif + #ifndef _SVX_RECTENUM_HXX + #include + #endif + + #ifndef _AEITEM_HXX + #include + #endif + #ifndef _SVX_DIALOG_HXX #include #endif *************** *** 82,94 **** //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- ! void lcl_getPositionAndSizeFromItemSet( const SfxItemSet& rItemSet, Rectangle& rPosAndSize ) { long nPosX(0); long nPosY(0); long nSizX(0); long nSizY(0); const SfxPoolItem* pPoolItem=NULL; //read position if (SFX_ITEM_SET==rItemSet.GetItemState(SID_ATTR_TRANSFORM_POS_X,TRUE,&pPoolItem)) --- 92,106 ---- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- ! void lcl_getPositionAndSizeFromItemSet( const SfxItemSet& rItemSet, Rectangle& rPosAndSize, const awt::Size aOriginalSize ) { long nPosX(0); long nPosY(0); long nSizX(0); long nSizY(0); + RECT_POINT eRP = (RECT_POINT)RP_LT; + const SfxPoolItem* pPoolItem=NULL; //read position if (SFX_ITEM_SET==rItemSet.GetItemState(SID_ATTR_TRANSFORM_POS_X,TRUE,&pPoolItem)) *************** *** 100,105 **** --- 112,155 ---- nSizX=((const SfxUInt32Item*)pPoolItem)->GetValue(); if (SFX_ITEM_SET==rItemSet.GetItemState(SID_ATTR_TRANSFORM_HEIGHT,TRUE,&pPoolItem)) nSizY=((const SfxUInt32Item*)pPoolItem)->GetValue(); + if (SFX_ITEM_SET==rItemSet.GetItemState(SID_ATTR_TRANSFORM_SIZE_POINT,TRUE,&pPoolItem)) + eRP=(RECT_POINT)((const SfxAllEnumItem*)pPoolItem)->GetValue(); + + switch( eRP ) + { + case RP_LT: + break; + case RP_MT: + nPosX += ( aOriginalSize.Width - nSizX ) / 2; + break; + case RP_RT: + nPosX += aOriginalSize.Width - nSizX; + break; + case RP_LM: + nPosY += ( aOriginalSize.Height - nSizY ) / 2; + break; + case RP_MM: + nPosX += ( aOriginalSize.Width - nSizX ) / 2; + nPosY += ( aOriginalSize.Height - nSizY ) / 2; + break; + case RP_RM: + nPosX += aOriginalSize.Width - nSizX; + nPosY += ( aOriginalSize.Height - nSizY ) / 2; + break; + case RP_LB: + nPosY += aOriginalSize.Height - nSizY; + break; + case RP_MB: + nPosX += ( aOriginalSize.Width - nSizX ) / 2; + nPosY += aOriginalSize.Height - nSizY; + break; + case RP_RB: + nPosX += aOriginalSize.Width - nSizX; + nPosY += aOriginalSize.Height - nSizY; + break; + default: + break; + } rPosAndSize = Rectangle(Point(nPosX,nPosY),Size(nSizX,nSizY)); } *************** *** 111,116 **** --- 161,171 ---- if( !aCID.getLength() ) return; + awt::Size aSelectedSize; + ExplicitValueProvider* pProvider( ExplicitValueProvider::getExplicitValueProvider( m_xChartView ) ); + if( pProvider ) + aSelectedSize = ToSize( ( pProvider->getRectangleOfObject( aCID ) ) ); + UndoGuard aUndoGuard( ActionDescriptionProvider::createDescription( ActionDescriptionProvider::POS_SIZE, *************** *** 141,147 **** { Rectangle aObjectRect; aItemSet.Put(*pOutItemSet);//overwrite old values with new values (-> all items are set) ! lcl_getPositionAndSizeFromItemSet( aItemSet, aObjectRect ); awt::Size aPageSize( ChartModelHelper::getPageSize( m_aModel->getModel() ) ); Rectangle aPageRect( 0,0,aPageSize.Width,aPageSize.Height ); --- 196,202 ---- { Rectangle aObjectRect; aItemSet.Put(*pOutItemSet);//overwrite old values with new values (-> all items are set) ! lcl_getPositionAndSizeFromItemSet( aItemSet, aObjectRect, aSelectedSize ); awt::Size aPageSize( ChartModelHelper::getPageSize( m_aModel->getModel() ) ); Rectangle aPageRect( 0,0,aPageSize.Width,aPageSize.Height );