filter/source/msfilter/svdfppt.cxx | 139 ++++++++++++++++++++++++++++++++++++ include/filter/msfilter/svdfppt.hxx | 3 sd/source/filter/ppt/pptin.cxx | 2 vcl/inc/window.h | 3 vcl/source/window/window.cxx | 6 - vcl/source/window/window3.cxx | 22 ----- 6 files changed, 147 insertions(+), 28 deletions(-)
New commits: commit 5f88e8e6492cbd62b990cc18ebdb71a62be52c72 Author: Caolán McNamara <caol...@redhat.com> Date: Fri May 24 19:00:30 2013 +0100 this themeing thing doesn't actually do anything both branches are the same and the set/get aren't called anyway. originally introduced with d02f75a8c36705924ddd6a5921fe3012fafce812 Change-Id: I94399bba0fa259bfafcc214e2df15f172d32374f diff --git a/vcl/inc/window.h b/vcl/inc/window.h index 34fe78c..230e1b0 100644 --- a/vcl/inc/window.h +++ b/vcl/inc/window.h @@ -396,8 +396,7 @@ public: mbVexpand:1, mbExpand:1, mbFill:1, - mbSecondary:1, - mbIsThemingEnabled:1; + mbSecondary:1; ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxDNDListenerContainer; }; diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index b50ca25..e69dd35 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -297,7 +297,6 @@ WindowImpl::WindowImpl( WindowType nType ) mbExpand = false; mbFill = true; mbSecondary = false; - mbIsThemingEnabled = true; } WindowImpl::~WindowImpl() @@ -758,10 +757,7 @@ void Window::ImplInit( Window* pParent, WinBits nStyle, SystemParentData* pSyste nBorderTypeStyle |= BORDERWINDOW_STYLE_FRAME; nStyle |= WB_BORDER; } - ImplBorderWindow* pBorderWin = - mpWindowImpl->mbIsThemingEnabled - ? CreateBorderWindow( pParent, nStyle & (WB_BORDER | WB_DIALOGCONTROL | WB_NODIALOGCONTROL | WB_NEEDSFOCUS), nBorderTypeStyle ) - : new ImplBorderWindow( pParent, nStyle & (WB_BORDER | WB_DIALOGCONTROL | WB_NODIALOGCONTROL | WB_NEEDSFOCUS), nBorderTypeStyle ); + ImplBorderWindow* pBorderWin = new ImplBorderWindow( pParent, nStyle & (WB_BORDER | WB_DIALOGCONTROL | WB_NODIALOGCONTROL | WB_NEEDSFOCUS), nBorderTypeStyle ); ((Window*)pBorderWin)->mpWindowImpl->mpClientWindow = this; pBorderWin->GetBorder( mpWindowImpl->mnLeftBorder, mpWindowImpl->mnTopBorder, mpWindowImpl->mnRightBorder, mpWindowImpl->mnBottomBorder ); mpWindowImpl->mpBorderWindow = pBorderWin; diff --git a/vcl/source/window/window3.cxx b/vcl/source/window/window3.cxx index fd656f96..00919ac 100644 --- a/vcl/source/window/window3.cxx +++ b/vcl/source/window/window3.cxx @@ -18,11 +18,9 @@ */ -#include "vcl/button.hxx" #include "vcl/window.hxx" #include "vcl/waitobj.hxx" -#include "brdwin.hxx" -#include "window.h" +#include "vcl/button.hxx" // ----------------------------------------------------------------------- @@ -65,22 +63,4 @@ void Window::ImplAdjustNWFSizes() } } -void Window::EnableThemeSupport (void) -{ - mpWindowImpl->mbIsThemingEnabled = sal_True; -} - -void Window::DisableThemeSupport (void) -{ - mpWindowImpl->mbIsThemingEnabled = sal_False; -} - -ImplBorderWindow* Window::CreateBorderWindow ( - Window* pParent, - const WinBits nStyle, - const sal_uInt16 nTypeStyle) -{ - return new ImplBorderWindow(pParent, nStyle, nTypeStyle); -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 54c679f481647890f18151f4db05cfc3eff5d98b Author: Andre Fischer <a...@apache.org> Date: Fri Jul 13 07:55:43 2012 +0000 Resolves: #i119874 Fixed text alignment in RTL layout. Reported by: Li Feng Wang Patch by: Jianyuan Li Review by: Andre Fischer (cherry picked from commit 57fdcdd79d1682ee7d5e88fbab3803631496afa2) Conflicts: filter/inc/filter/msfilter/svdfppt.hxx filter/source/msfilter/svdfppt.cxx Change-Id: I6adae6d40ff106caeea2b9310a57228257d79404 Related: #i119874# Missing part of patch. Patch by: Jianyuan Li (cherry picked from commit a7dc3e8b82c87b138c973f1434717d634ed8dc67) Change-Id: Icff3e1167ab780612ad47775aaa39c9baa99c70f diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx index e4e1ae1..91891c9 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -7627,4 +7627,143 @@ SdrObject* SdrPowerPointImport::CreateTable( SdrObject* pGroup, sal_uInt32* pTab return pRet; } +sal_Bool SdrPowerPointImport::IsVerticalText() const +{ + sal_Bool bVerticalText = sal_False; + if ( IsProperty( DFF_Prop_txflTextFlow ) ) + { + MSO_TextFlow eTextFlow = (MSO_TextFlow)( GetPropertyValue( DFF_Prop_txflTextFlow ) & 0xFFFF ); + switch( eTextFlow ) + { + case mso_txflTtoBA : // Top to Bottom @-font, above -> below + case mso_txflTtoBN : // Top to Bottom non-@, above -> below + case mso_txflVertN : // Vertical, non-@, above -> below + bVerticalText = !bVerticalText; + break; + default: break; + } + } + + return bVerticalText; +} + +void SdrPowerPointImport::ApplyTextAnchorAttributes( PPTTextObj& rTextObj, SfxItemSet& rSet ) const +{ + SdrTextVertAdjust eTVA; + SdrTextHorzAdjust eTHA; + + sal_uInt32 nTextFlags = rTextObj.GetTextFlags(); + + nTextFlags &= PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT + | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_CENTER | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_BLOCK; + + if ( IsVerticalText() ) + { + eTVA = SDRTEXTVERTADJUST_BLOCK; + eTHA = SDRTEXTHORZADJUST_CENTER; + + // Textverankerung lesen + MSO_Anchor eTextAnchor = (MSO_Anchor)GetPropertyValue( DFF_Prop_anchorText, mso_anchorTop ); + + switch( eTextAnchor ) + { + case mso_anchorTop: + case mso_anchorTopCentered: + eTHA = SDRTEXTHORZADJUST_RIGHT; + break; + + case mso_anchorMiddle : + case mso_anchorMiddleCentered: + eTHA = SDRTEXTHORZADJUST_CENTER; + break; + + case mso_anchorBottom: + case mso_anchorBottomCentered: + eTHA = SDRTEXTHORZADJUST_LEFT; + break; + + default: + break; + } + // if there is a 100% use of following attributes, the textbox can been aligned also in vertical direction + switch ( eTextAnchor ) + { + case mso_anchorTopCentered : + case mso_anchorMiddleCentered : + case mso_anchorBottomCentered : + { + // check if it is sensible to use the centered alignment + sal_uInt32 nMask = PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT; + if ( ( nTextFlags & nMask ) != nMask ) // if the textobject has left or also right aligned pararagraphs + eTVA = SDRTEXTVERTADJUST_CENTER; // the text has to be displayed using the full width; + } + break; + + default : + { + if ( nTextFlags == PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT ) + eTVA = SDRTEXTVERTADJUST_TOP; + else if ( nTextFlags == PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT ) + eTVA = SDRTEXTVERTADJUST_BOTTOM; + } + break; + } + } + else + { + eTVA = SDRTEXTVERTADJUST_CENTER; + eTHA = SDRTEXTHORZADJUST_BLOCK; + + // Textverankerung lesen + MSO_Anchor eTextAnchor = (MSO_Anchor)GetPropertyValue( DFF_Prop_anchorText, mso_anchorTop ); + + switch( eTextAnchor ) + { + case mso_anchorTop: + case mso_anchorTopCentered: + eTVA = SDRTEXTVERTADJUST_TOP; + break; + + case mso_anchorMiddle : + case mso_anchorMiddleCentered: + eTVA = SDRTEXTVERTADJUST_CENTER; + break; + + case mso_anchorBottom: + case mso_anchorBottomCentered: + eTVA = SDRTEXTVERTADJUST_BOTTOM; + break; + + default: + break; + } + + // if there is a 100% usage of following attributes, the textbox can be aligned also in horizontal direction + switch ( eTextAnchor ) + { + case mso_anchorTopCentered : + case mso_anchorMiddleCentered : + case mso_anchorBottomCentered : + { + // check if it is sensible to use the centered alignment + sal_uInt32 nMask = PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT; + if ( ( nTextFlags & nMask ) != nMask ) // if the textobject has left or also right aligned pararagraphs + eTHA = SDRTEXTHORZADJUST_CENTER; // the text has to be displayed using the full width; + } + break; + + default : + { + if ( nTextFlags == PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT ) + eTHA = SDRTEXTHORZADJUST_LEFT; + else if ( nTextFlags == PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT ) + eTHA = SDRTEXTHORZADJUST_RIGHT; + } + break; + } + } + rSet.Put( SdrTextVertAdjustItem( eTVA ) ); + rSet.Put( SdrTextHorzAdjustItem( eTHA ) ); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/filter/msfilter/svdfppt.hxx b/include/filter/msfilter/svdfppt.hxx index c32b9de..4cba0ec 100644 --- a/include/filter/msfilter/svdfppt.hxx +++ b/include/filter/msfilter/svdfppt.hxx @@ -573,6 +573,9 @@ protected: SdrOutliner* GetDrawOutliner( SdrTextObj* pSdrText ) const; void SeekOle( SfxObjectShell* pShell, sal_uInt32 nFilterOptions ); + void ApplyTextAnchorAttributes( PPTTextObj& rTextObj, SfxItemSet& rSet ) const; + sal_Bool IsVerticalText() const; + public: SdrPowerPointImport( PowerPointImportParam&, const OUString& rBaseURL ); virtual ~SdrPowerPointImport(); diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx index 9e3eab5..67a5e18 100644 --- a/sd/source/filter/ppt/pptin.cxx +++ b/sd/source/filter/ppt/pptin.cxx @@ -2391,6 +2391,8 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj SfxItemSet aSet( pSdrModel->GetItemPool() ); ApplyAttributes( rStCtrl, aSet ); + pPresObj->SetLogicRect(pText->GetLogicRect()); + ApplyTextAnchorAttributes( *pTextObj, aSet ); pPresObj->SetMergedItemSet(aSet); if ( ( eAktPageKind != PPT_NOTEPAGE ) && ( nPlacementId != 0xffffffff ) )
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits