animations/source/animcore/targetpropertiescreator.cxx |   47 ++---
 filter/source/msfilter/svdfppt.cxx                     |  139 +++++++++++++++++
 include/filter/msfilter/svdfppt.hxx                    |    3 
 sd/qa/unit/data/xml/fdo64586_0.xml                     |    4 
 sd/qa/unit/data/xml/n758621_0.xml                      |    8 
 sd/qa/unit/data/xml/n758621_1.xml                      |    8 
 sd/source/filter/ppt/pptin.cxx                         |    2 
 7 files changed, 178 insertions(+), 33 deletions(-)

New commits:
commit 88b8bd644e8da97b3046f3cbfec53aef2596df47
Author: Caolán McNamara <caol...@redhat.com>
Date:   Sat May 25 11:48:09 2013 +0100

    Resolves: #i119874 Fixed text alignment in RTL layout
    
    This reverts commit 979def88090633bfee0e0445b19999a1dac71ed4,
    this time manually confirmed that the import layout does change, but that it
    appears to be all desirable changes
    
    Change-Id: Iee5e5ebd16989f65569b02f8b4f6570985157dfc

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/qa/unit/data/xml/fdo64586_0.xml 
b/sd/qa/unit/data/xml/fdo64586_0.xml
index bcfa520..ebd4b63 100644
--- a/sd/qa/unit/data/xml/fdo64586_0.xml
+++ b/sd/qa/unit/data/xml/fdo64586_0.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <XShapes>
- <XShape positionX="1397" positionY="963" sizeX="25197" sizeY="3507" 
type="com.sun.star.presentation.TitleTextShape" fontHeight="44.000000" 
fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="3507" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" 
fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="1397" positionY="838" sizeX="25197" sizeY="3507" 
type="com.sun.star.presentation.TitleTextShape" fontHeight="44.000000" 
fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="3507" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" 
fillTransparence="0" fillTransparenceGradientName="">
   <FillTransparenceGradient style="LINEAR" startColor="000000" 
endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" 
startIntensity="100" endIntensity="100" stepCount="0"/>
   <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" 
border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" 
stepCount="0"/>
   <FillHatch style="SINGLE" color="3465af" distance="20" angle="0"/>
@@ -10,7 +10,7 @@
   <LineEnd/>
   <Transformation>
    <Line1 column1="25198.000000" column2="0.000000" column3="1397.000000"/>
-   <Line2 column1="0.000000" column2="3508.000000" column3="963.000000"/>
+   <Line2 column1="0.000000" column2="3508.000000" column3="838.000000"/>
    <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
   </Transformation>
  </XShape>
diff --git a/sd/qa/unit/data/xml/n758621_0.xml 
b/sd/qa/unit/data/xml/n758621_0.xml
index b569f23..34a9de9 100644
--- a/sd/qa/unit/data/xml/n758621_0.xml
+++ b/sd/qa/unit/data/xml/n758621_0.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <XShapes>
- <XShape positionX="12042" positionY="1899" sizeX="12087" sizeY="9782" 
type="com.sun.star.presentation.TitleTextShape" fontHeight="60.000000" 
fontColor="004990" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" 
textVerticalAdjust="CENTER" textLeftDistance="250" textRightDistance="250" 
textUpperDistance="130" textLowerDistance="130" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="9522" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" 
fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="12042" positionY="1774" sizeX="12087" sizeY="9782" 
type="com.sun.star.presentation.TitleTextShape" fontHeight="60.000000" 
fontColor="004990" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" 
textVerticalAdjust="CENTER" textLeftDistance="250" textRightDistance="250" 
textUpperDistance="130" textLowerDistance="130" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="9522" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" 
fillTransparence="0" fillTransparenceGradientName="">
   <FillTransparenceGradient style="LINEAR" startColor="000000" 
endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" 
startIntensity="100" endIntensity="100" stepCount="0"/>
   <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" 
border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" 
stepCount="0"/>
   <FillHatch style="SINGLE" color="3465af" distance="20" angle="0"/>
@@ -10,11 +10,11 @@
   <LineEnd/>
   <Transformation>
    <Line1 column1="12088.000000" column2="0.000000" column3="12042.000000"/>
-   <Line2 column1="0.000000" column2="9783.000000" column3="1899.000000"/>
+   <Line2 column1="0.000000" column2="9783.000000" column3="1774.000000"/>
    <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
   </Transformation>
  </XShape>
- <XShape positionX="14176" positionY="13248" sizeX="9953" sizeY="3811" 
type="com.sun.star.presentation.SubtitleShape" fontHeight="36.000000" 
fontColor="92d050" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="3811" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" 
fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="14176" positionY="13123" sizeX="9953" sizeY="3811" 
type="com.sun.star.presentation.SubtitleShape" fontHeight="36.000000" 
fontColor="92d050" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" 
textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="3811" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" 
fillTransparence="0" fillTransparenceGradientName="">
   <FillTransparenceGradient style="LINEAR" startColor="000000" 
endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" 
startIntensity="100" endIntensity="100" stepCount="0"/>
   <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" 
border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" 
stepCount="0"/>
   <FillHatch style="SINGLE" color="3465af" distance="20" angle="0"/>
@@ -24,7 +24,7 @@
   <LineEnd/>
   <Transformation>
    <Line1 column1="9954.000000" column2="0.000000" column3="14176.000000"/>
-   <Line2 column1="0.000000" column2="3812.000000" column3="13248.000000"/>
+   <Line2 column1="0.000000" column2="3812.000000" column3="13123.000000"/>
    <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
   </Transformation>
  </XShape>
diff --git a/sd/qa/unit/data/xml/n758621_1.xml 
b/sd/qa/unit/data/xml/n758621_1.xml
index 689cc00..86e8294 100644
--- a/sd/qa/unit/data/xml/n758621_1.xml
+++ b/sd/qa/unit/data/xml/n758621_1.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <XShapes>
- <XShape positionX="1485" positionY="629" sizeX="18411" sizeY="2166" 
type="com.sun.star.presentation.TitleTextShape" fontHeight="40.000000" 
fontColor="ff0000" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" 
textVerticalAdjust="CENTER" textLeftDistance="250" textRightDistance="250" 
textUpperDistance="130" textLowerDistance="130" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="1906" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" 
fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="1485" positionY="504" sizeX="18411" sizeY="2166" 
type="com.sun.star.presentation.TitleTextShape" fontHeight="40.000000" 
fontColor="ff0000" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" 
textVerticalAdjust="CENTER" textLeftDistance="250" textRightDistance="250" 
textUpperDistance="130" textLowerDistance="130" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="1906" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" 
fillTransparence="0" fillTransparenceGradientName="">
   <FillTransparenceGradient style="LINEAR" startColor="000000" 
endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" 
startIntensity="100" endIntensity="100" stepCount="0"/>
   <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" 
border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" 
stepCount="0"/>
   <FillHatch style="SINGLE" color="3465af" distance="20" angle="0"/>
@@ -10,11 +10,11 @@
   <LineEnd/>
   <Transformation>
    <Line1 column1="18412.000000" column2="0.000000" column3="1485.000000"/>
-   <Line2 column1="0.000000" column2="2167.000000" column3="629.000000"/>
+   <Line2 column1="0.000000" column2="2167.000000" column3="504.000000"/>
    <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
   </Transformation>
  </XShape>
- <XShape positionX="1692" positionY="4444" sizeX="22217" sizeY="12312" 
type="com.sun.star.presentation.OutlinerShape" fontHeight="24.000000" 
fontColor="000000" textAutoGrowHeight="false" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="AUTOFIT" textHorizontalAdjust="LEFT" 
textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" 
textUpperDistance="130" textLowerDistance="130" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="12062" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" 
fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="1692" positionY="4444" sizeX="22217" sizeY="12061" 
type="com.sun.star.presentation.OutlinerShape" fontHeight="24.000000" 
fontColor="000000" textAutoGrowHeight="false" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="AUTOFIT" textHorizontalAdjust="LEFT" 
textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" 
textUpperDistance="130" textLowerDistance="130" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="12062" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" 
fillTransparence="0" fillTransparenceGradientName="">
   <FillTransparenceGradient style="LINEAR" startColor="000000" 
endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" 
startIntensity="100" endIntensity="100" stepCount="0"/>
   <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" 
border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" 
stepCount="0"/>
   <FillHatch style="SINGLE" color="3465af" distance="20" angle="0"/>
@@ -24,7 +24,7 @@
   <LineEnd/>
   <Transformation>
    <Line1 column1="22218.000000" column2="0.000000" column3="1692.000000"/>
-   <Line2 column1="0.000000" column2="12313.000000" column3="4444.000000"/>
+   <Line2 column1="0.000000" column2="12062.000000" column3="4444.000000"/>
    <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
   </Transformation>
  </XShape>
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 ) )
commit 0cc228354f7015ee1e6c0d376c117fbf04f58a5f
Author: Herbert Dürr <h...@apache.org>
Date:   Tue Apr 16 10:27:35 2013 +0000

    use XShapeHash type to make this *_map compatible...
    
    with the corresponding TR1 container
    
    The TR1 containers don't support dynamic hash functions provided in their
    constructor.  Having the hash functor as part the hash container's type is
    cleaner anyway.
    
    (cherry picked from commit fb8df93381493dee3d0e511c556d82d1f177367a)
    
    Conflicts:
        animations/source/animcore/targetpropertiescreator.cxx
    
    Change-Id: I51ae91ef74002cbc8f24cd5f4df7dda58e1c4f8d

diff --git a/animations/source/animcore/targetpropertiescreator.cxx 
b/animations/source/animcore/targetpropertiescreator.cxx
index d42799f..c583e13 100644
--- a/animations/source/animcore/targetpropertiescreator.cxx
+++ b/animations/source/animcore/targetpropertiescreator.cxx
@@ -139,28 +139,30 @@ namespace animcore
             }
         };
 
-        // A hash map which maps a XShape to the corresponding vector of 
initial properties
-        typedef ::boost::unordered_map< ShapeHashKey,
-                                 VectorOfNamedValues,
-                                 ::std::size_t (*)(const ShapeHashKey&) > 
XShapeHash;
-
-        ::std::size_t refhasher( const ShapeHashKey& rKey )
+        // A hash functor for ShapeHashKey objects
+        struct ShapeKeyHasher
         {
-            // TODO(P2): Maybe a better hash function would be to
-            // spread mnParagraphIndex to 32 bit: a0b0c0d0e0... Hakmem
-            // should have a formula.
-            //
-            // Yes it has:
-            // x = (x & 0x0000FF00) << 8) | (x >> 8) & 0x0000FF00 | x & 
0xFF0000FF;
-            // x = (x & 0x00F000F0) << 4) | (x >> 4) & 0x00F000F0 | x & 
0xF00FF00F;
-            // x = (x & 0x0C0C0C0C) << 2) | (x >> 2) & 0x0C0C0C0C | x & 
0xC3C3C3C3;
-            // x = (x & 0x22222222) << 1) | (x >> 1) & 0x22222222 | x & 
0x99999999;
-            //
-            // Costs about 17 cycles on a RISC machine with infinite
-            // instruction level parallelism (~42 basic
-            // instructions). Thus I truly doubt this pays off...
-            return reinterpret_cast< ::std::size_t >(rKey.mxRef.get()) ^ 
(rKey.mnParagraphIndex << 16L);
-        }
+            ::std::size_t operator()( const ShapeHashKey& rKey ) const
+            {
+                // TODO(P2): Maybe a better hash function would be to
+                // spread mnParagraphIndex to 32 bit: a0b0c0d0e0... Hakmem
+                // should have a formula.
+                //
+                // Yes it has:
+                // x = (x & 0x0000FF00) << 8) | (x >> 8) & 0x0000FF00 | x & 
0xFF0000FF;
+                // x = (x & 0x00F000F0) << 4) | (x >> 4) & 0x00F000F0 | x & 
0xF00FF00F;
+                // x = (x & 0x0C0C0C0C) << 2) | (x >> 2) & 0x0C0C0C0C | x & 
0xC3C3C3C3;
+                // x = (x & 0x22222222) << 1) | (x >> 1) & 0x22222222 | x & 
0x99999999;
+                //
+                // Costs about 17 cycles on a RISC machine with infinite
+                // instruction level parallelism (~42 basic
+                // instructions). Thus I truly doubt this pays off...
+                return reinterpret_cast< ::std::size_t >(rKey.mxRef.get()) ^ 
(rKey.mnParagraphIndex << 16L);
+            }
+        };
+
+        // A hash map which maps a XShape to the corresponding vector of 
initial properties
+        typedef ::boost::unordered_map< ShapeHashKey, VectorOfNamedValues, 
ShapeKeyHasher > XShapeHash;
 
 
         class NodeFunctor
@@ -419,8 +421,7 @@ namespace animcore
 
         // scan all nodes for visibility changes, and record first
         // 'visibility=true' for each shape
-        XShapeHash aShapeHash( 101,
-                               &refhasher );
+        XShapeHash aShapeHash( 101 );
 
         NodeFunctor aFunctor( aShapeHash );
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to