[Libreoffice-commits] core.git: 11 commits - editeng/source filter/inc filter/source sd/source sw/source

Armin Le Grand alg at apache.org
Sun Apr 7 14:38:43 PDT 2013


 editeng/source/uno/unonrule.cxx                   |    6 +
 filter/inc/filter/msfilter/svdfppt.hxx            |    9 +
 filter/source/msfilter/escherex.cxx               |  104 ++++++++++++++++------
 filter/source/msfilter/svdfppt.cxx                |   58 +++++++++++-
 sd/source/filter/eppt/epptso.cxx                  |   31 +++++-
 sd/source/ui/animations/CustomAnimationDialog.cxx |   19 ++--
 sw/source/core/text/itrpaint.cxx                  |   10 +-
 sw/source/filter/ww8/wrtww8.cxx                   |   30 +++++-
 sw/source/filter/ww8/wrtww8gr.cxx                 |   17 +++
 sw/source/filter/ww8/ww8atr.cxx                   |    2 
 10 files changed, 237 insertions(+), 49 deletions(-)

New commits:
commit a72e3ed81a0d619b81074cb80d7ef9d3d11feda6
Author: Armin Le Grand <alg at apache.org>
Date:   Thu Sep 27 14:24:57 2012 +0000

    Fix #121074# Added support for bitmap attributes
    
    transparency, red, green, blue and gamma for ppt export
    (cherry picked from commit df0f83c87148769ca7cbcfc3d1cb9ccf9d5c0540)
    
    Conflicts:
    	filter/source/msfilter/escherex.cxx
    
    Change-Id: If413df9bac6d0144f6650f5d9ae99834f6a33642

diff --git a/filter/source/msfilter/escherex.cxx b/filter/source/msfilter/escherex.cxx
index e68b87e..330f7c0 100644
--- a/filter/source/msfilter/escherex.cxx
+++ b/filter/source/msfilter/escherex.cxx
@@ -1008,11 +1008,6 @@ void EscherPropertyContainer::ImplCreateGraphicAttributes( const ::com::sun::sta
     ::com::sun::star::drawing::ColorMode eColorMode( ::com::sun::star::drawing::ColorMode_STANDARD );
     sal_Int16 nLuminance = 0;
     sal_Int32 nContrast = 0;
-    sal_Int16 nRed = 0;
-    sal_Int16 nGreen = 0;
-    sal_Int16 nBlue = 0;
-    double fGamma = 1.0;
-    sal_Int16 nTransparency = 0;
 
     if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, OUString( "GraphicColorMode" ) ) )
         aAny >>= eColorMode;
@@ -1024,16 +1019,6 @@ void EscherPropertyContainer::ImplCreateGraphicAttributes( const ::com::sun::sta
         aAny >>= nC;
         nContrast = nC;
     }
-    if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, OUString( "AdjustRed" ) ) )
-        aAny >>= nRed;
-    if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, OUString( "AdjustGreen" ) ) )
-        aAny >>= nGreen;
-    if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, OUString( "AdjustBlue" ) ) )
-        aAny >>= nBlue;
-    if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, OUString( "Gamma" ) ) )
-        aAny >>= fGamma;
-    if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, OUString( "Transparency" ) ) )
-        aAny >>= nTransparency;
 
     if ( eColorMode == ::com::sun::star::drawing::ColorMode_WATERMARK )
     {
@@ -1286,6 +1271,12 @@ sal_Bool EscherPropertyContainer::CreateGraphicProperties(
     OUString        aGraphicUrl;
     OString         aUniqueId;
     bool            bIsGraphicMtf(false);
+    // #121074#
+    sal_Int16 nTransparency(0);
+    sal_Int16 nRed(0);
+    sal_Int16 nGreen(0);
+    sal_Int16 nBlue(0);
+    double fGamma(1.0);
 
     ::com::sun::star::drawing::BitmapMode   eBitmapMode( ::com::sun::star::drawing::BitmapMode_NO_REPEAT );
     ::com::sun::star::uno::Any aAny;
@@ -1365,6 +1356,33 @@ sal_Bool EscherPropertyContainer::CreateGraphicProperties(
         if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, OUString( "IsMirrored" ), sal_True ) )
             aAny >>= bMirrored;
 
+        // #121074# transparency of graphic is not supported in MS formats, get and apply it
+        // in the GetTransformedGraphic call in GetBlibID
+        if(EscherPropertyValueHelper::GetPropertyValue(aAny, rXPropSet, String(RTL_CONSTASCII_USTRINGPARAM("Transparency"))))
+        {
+            aAny >>= nTransparency;
+        }
+
+        if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "AdjustRed" ) ) ) )
+        {
+            aAny >>= nRed;
+        }
+
+        if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "AdjustGreen" ) ) ) )
+        {
+            aAny >>= nGreen;
+        }
+
+        if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "AdjustBlue" ) ) ) )
+        {
+            aAny >>= nBlue;
+        }
+
+        if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Gamma" ) ) ) )
+        {
+            aAny >>= fGamma;
+        }
+
         if ( bCreateFillBitmap && bFillBitmapModeAllowed )
         {
             if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, OUString( "FillBitmapMode" ), sal_True ) )
@@ -1401,7 +1419,7 @@ sal_Bool EscherPropertyContainer::CreateGraphicProperties(
                 const sal_uInt16 nFormat = aDescriptor.GetFileFormat();
 
                 // can MSO handle it?
-                if ( bMirrored || nAngle ||
+                if ( bMirrored || nAngle || nTransparency || nRed || nGreen || nBlue || (1.0 != fGamma) ||
                      (nFormat != GFF_BMP &&
                       nFormat != GFF_GIF &&
                       nFormat != GFF_JPG &&
@@ -1448,13 +1466,45 @@ sal_Bool EscherPropertyContainer::CreateGraphicProperties(
 
         if ( aGraphicUrl.getLength() || !aUniqueId.isEmpty() )
         {
-            if ( bMirrored || nAngle )
+            if(bMirrored || nTransparency || nRed || nGreen || nBlue || (1.0 != fGamma))
             {
                 pGraphicAttr = new GraphicAttr;
-                if ( bMirrored )
-                    pGraphicAttr->SetMirrorFlags( BMP_MIRROR_HORZ );
-                if ( bIsGraphicMtf )
-                    AddOpt( ESCHER_Prop_Rotation, ( ( ((sal_Int32)nAngle << 16 ) / 10 ) + 0x8000 ) &~ 0xffff );
+
+                if(bMirrored)
+                {
+                    pGraphicAttr->SetMirrorFlags(BMP_MIRROR_HORZ);
+                }
+
+                // #121074#
+                if(nTransparency)
+                {
+                    pGraphicAttr->SetTransparency((nTransparency * 255) / 100);
+                }
+
+                if(nRed)
+                {
+                    pGraphicAttr->SetChannelR(nRed);
+                }
+
+                if(nGreen)
+                {
+                    pGraphicAttr->SetChannelG(nGreen);
+                }
+
+                if(nBlue)
+                {
+                    pGraphicAttr->SetChannelB(nBlue);
+                }
+
+                if(1.0 != fGamma)
+                {
+                    pGraphicAttr->SetGamma(fGamma);
+                }
+            }
+
+            if(nAngle && bIsGraphicMtf)
+            {
+                AddOpt( ESCHER_Prop_Rotation, ( ( ((sal_Int32)nAngle << 16 ) / 10 ) + 0x8000 ) &~ 0xffff );
             }
 
             if ( eBitmapMode == ::com::sun::star::drawing::BitmapMode_REPEAT )
@@ -1498,18 +1548,20 @@ sal_Bool EscherPropertyContainer::CreateGraphicProperties(
                 if ( pGraphicProvider && pPicOutStrm && pShapeBoundRect )
                 {
                     Rectangle aRect( Point( 0, 0 ), pShapeBoundRect->GetSize() );
+                    const sal_uInt32 nBlibId(pGraphicProvider->GetBlibID(*pPicOutStrm, aUniqueId, aRect, NULL, pGraphicAttr));
 
-                    sal_uInt32 nBlibId = 0;
-                    nBlibId = pGraphicProvider->GetBlibID( *pPicOutStrm, aUniqueId, aRect, NULL, pGraphicAttr );
-                    if ( nBlibId )
+                    if(nBlibId)
                     {
-                        if ( bCreateFillBitmap )
-                            AddOpt( ESCHER_Prop_fillBlip, nBlibId, sal_True );
+                        if(bCreateFillBitmap)
+                        {
+                            AddOpt(ESCHER_Prop_fillBlip, nBlibId, sal_True);
+                        }
                         else
                         {
                             AddOpt( ESCHER_Prop_pib, nBlibId, sal_True );
                             ImplCreateGraphicAttributes( rXPropSet, nBlibId, bCreateCroppingAttributes );
                         }
+
                         bRetValue = sal_True;
                     }
                 }
commit ed6d89dd55cff5ca91ecbfc8716a4e6c584be165
Author: Andre Fischer <af at apache.org>
Date:   Wed Jun 13 06:57:37 2012 +0000

    Fix #i119532# Fixed export of bullet color.
    
    Patch by: SunYing
    Review and minor changes by: Andre Fischer
    
    Conflicts:
    	filter/source/msfilter/svdfppt.cxx
    
    Change-Id: I2841e041b571ed5cfa848ad1029c57fc547a621a

diff --git a/filter/inc/filter/msfilter/svdfppt.hxx b/filter/inc/filter/msfilter/svdfppt.hxx
index fffcc86b..2fbf096 100644
--- a/filter/inc/filter/msfilter/svdfppt.hxx
+++ b/filter/inc/filter/msfilter/svdfppt.hxx
@@ -914,6 +914,14 @@ struct ImplPPTCharPropSet
 
 struct PPTCharPropSet
 {
+    //when the bullet text has more than two color,next the text following with bullet has been set hyperlink.
+    //now,the bullet color should be set original hyperlink text's color
+    //so  "mbHardHylinkOrigColor" hold the original hyperlink text's color.
+    sal_uInt32  mnHylinkOrigColor;
+    //the bullet text weather has a hyperlink.
+    sal_Bool    mbIsHyperlink;
+    //the hyperlink text weather has a custom color.
+    sal_Bool    mbHardHylinkOrigColor;
 
     sal_uInt32          mnOriginalTextPos;
     sal_uInt32          mnParagraph;
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
index 4301299..93aaeaf 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -4384,11 +4384,17 @@ PPTCharPropSet::PPTCharPropSet( sal_uInt32 nParagraph ) :
     mpFieldItem     ( NULL ),
     pCharSet        ( new ImplPPTCharPropSet )
 {
+    mnHylinkOrigColor = 0;
+    mbIsHyperlink = sal_False;
+    mbHardHylinkOrigColor = sal_False;
     mnLanguage[ 0 ] = mnLanguage[ 1 ] = mnLanguage[ 2 ] = 0;
 }
 
 PPTCharPropSet::PPTCharPropSet( const PPTCharPropSet& rCharPropSet )
 {
+    mnHylinkOrigColor = rCharPropSet.mnHylinkOrigColor;
+    mbIsHyperlink = rCharPropSet.mbIsHyperlink;
+    mbHardHylinkOrigColor = rCharPropSet.mbHardHylinkOrigColor;
     pCharSet = rCharPropSet.pCharSet;
     pCharSet->mnRefCount++;
 
@@ -4406,6 +4412,10 @@ PPTCharPropSet::PPTCharPropSet( const PPTCharPropSet& rCharPropSet, sal_uInt32 n
     pCharSet = rCharPropSet.pCharSet;
     pCharSet->mnRefCount++;
 
+    mnHylinkOrigColor = rCharPropSet.mnHylinkOrigColor;
+    mbIsHyperlink = rCharPropSet.mbIsHyperlink;
+    mbHardHylinkOrigColor = rCharPropSet.mbHardHylinkOrigColor;
+
     mnParagraph = nParagraph;
     mnOriginalTextPos = rCharPropSet.mnOriginalTextPos;
     maString = rCharPropSet.maString;
@@ -5952,8 +5962,18 @@ sal_Bool PPTParagraphObj::GetAttrib( sal_uInt32 nAttr, sal_uInt32& nRetValue, sa
                     if (!m_PortionList.empty())
                     {
                         PPTPortionObj const& rPortion = m_PortionList.front();
-                        bIsHardAttribute = rPortion.GetAttrib(
-                            PPT_CharAttr_FontColor, nRetValue, nDestinationInstance);
+                        if (rPortion.mbIsHyperlink )
+                        {
+                            if( rPortion.mbHardHylinkOrigColor )
+                                nRetValue = rPortion.mnHylinkOrigColor;
+                            else
+                                nRetValue = mrStyleSheet.mpCharSheet[ mnInstance ]->maCharLevel[ pParaSet->mnDepth ].mnFontColor;
+                            bIsHardAttribute = sal_True;
+                        }
+                        else
+                        {
+                            bIsHardAttribute = rPortion.GetAttrib( PPT_CharAttr_FontColor, nRetValue, nDestinationInstance );
+                        }
                     }
                     else
                     {
@@ -6892,6 +6912,10 @@ PPTTextObj::PPTTextObj( SvStream& rIn, SdrPowerPointImport& rSdrPowerPointImport
 
                                                             const SvxURLField* pField = (const SvxURLField*)(*FE)->pField1->GetField();
 
+                                                            pCurrent->mbIsHyperlink=sal_True;
+                                                            pCurrent->mnHylinkOrigColor=pCurrent->pCharSet->mnColor;
+                                                            pCurrent->mbHardHylinkOrigColor= ( ( pCurrent->pCharSet->mnAttrSet >>PPT_CharAttr_FontColor ) & 1)>0;
+
                                                             if ( pCurrent->mpFieldItem )
                                                             {
                                                                 pCurrent->SetColor( PPT_COLSCHEME_A_UND_HYPERLINK );
commit b86cf0421b432ebbf964960f0fcd2e6a5360f979
Author: Zhe Wang <wangzcdl at apache.org>
Date:   Mon Jun 25 05:04:59 2012 +0000

    for #120049#(cherry picked from commit 9b4e6064f9598c834a9c36c39932f3e326419d44)

diff --git a/sd/source/ui/animations/CustomAnimationDialog.cxx b/sd/source/ui/animations/CustomAnimationDialog.cxx
index 797cd68..14722bb 100644
--- a/sd/source/ui/animations/CustomAnimationDialog.cxx
+++ b/sd/source/ui/animations/CustomAnimationDialog.cxx
@@ -2323,15 +2323,20 @@ void CustomAnimationTextAnimTabPage::update( STLPropertySet* pSet )
                 pSet->setPropertyValue( nHandleTextGroupingAuto, makeAny( fTextGroupingAuto ) );
         }
     }
+    //bug 120049
+    //[crash] Aoo crash when modify the "Random effects" animation effect's trigger condition to "Start effect on click of" .
+    //If this control is disabled, we should ignore its value
+    if (maCBXAnimateForm.IsEnabled())
+    {
+        sal_Bool bAnimateForm = maCBXAnimateForm.IsChecked();
+        sal_Bool bOldAnimateForm = !bAnimateForm;
 
-    sal_Bool bAnimateForm = maCBXAnimateForm.IsChecked();
-    sal_Bool bOldAnimateForm = !bAnimateForm;
-
-    if(mpSet->getPropertyState( nHandleAnimateForm ) != STLPropertyState_AMBIGUOUS)
-        mpSet->getPropertyValue( nHandleAnimateForm ) >>= bOldAnimateForm;
+        if(mpSet->getPropertyState( nHandleAnimateForm ) != STLPropertyState_AMBIGUOUS)
+            mpSet->getPropertyValue( nHandleAnimateForm ) >>= bOldAnimateForm;
 
-    if( bAnimateForm != bOldAnimateForm )
-        pSet->setPropertyValue( nHandleAnimateForm, makeAny( bAnimateForm ) );
+        if( bAnimateForm != bOldAnimateForm )
+            pSet->setPropertyValue( nHandleAnimateForm, makeAny( bAnimateForm ) );
+    }
 }
 
 void CustomAnimationTextAnimTabPage::updateControlStates()
commit 7ec7a9a68b4a9c5600840a34434fc800cda3d815
Author: Lei De Bin <leidb at apache.org>
Date:   Thu Jul 19 01:26:26 2012 +0000

    Fix #120224# Mapping the text rotation in Writer table cell with MSO
    
    Reported by: Yan Ji
    Patch by: Chen Zuo Jun
    Review by: Lei De Bin
    Conflicts:
    	sw/source/filter/ww8/wrtww8.cxx
    
    Change-Id: I4d830cbedc033ec7abb6d0d1d4e1572ce5f45c26

diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx
index 550e1af..e997d61 100644
--- a/sw/source/filter/ww8/wrtww8.cxx
+++ b/sw/source/filter/ww8/wrtww8.cxx
@@ -109,6 +109,7 @@
 #include <rtl/random.h>
 #include <vcl/svapp.hxx>
 #include "WW8Sttbf.hxx"
+#include <editeng/charrotateitem.hxx>
 #include "WW8FibData.hxx"
 #include "numrule.hxx"//For i120928
 
@@ -1969,7 +1970,7 @@ void WW8AttributeOutput::TableInfoRow( ww8::WW8TableNodeInfoInner::Pointer_t pTa
     }
 }
 
-static sal_uInt16 lcl_TCFlags(const SwTableBox * pBox, sal_Int32 nRowSpan)
+static sal_uInt16 lcl_TCFlags(SwDoc &rDoc, const SwTableBox * pBox, sal_Int32 nRowSpan)
 {
     sal_uInt16 nFlags = 0;
 
@@ -1992,6 +1993,31 @@ static sal_uInt16 lcl_TCFlags(const SwTableBox * pBox, sal_Int32 nRowSpan)
             default:
                 break;
         }
+        const SwStartNode * pSttNd = pBox->GetSttNd();
+        if(pSttNd)
+        {
+            SwNodeIndex aIdx( *pSttNd );
+            const SwCntntNode * pCNd = pSttNd->GetNodes().GoNext( &aIdx );
+            if( pCNd && pCNd->IsTxtNode())
+            {
+                SfxItemSet aCoreSet(rDoc.GetAttrPool(), RES_CHRATR_ROTATE, RES_CHRATR_ROTATE);
+                ((SwTxtNode*)pCNd)->GetAttr( aCoreSet, 0, !((SwTxtNode*)pCNd)->GetTxt().isEmpty());
+                const SvxCharRotateItem * pRotate = NULL;
+                const SfxPoolItem * pRotItem;
+                if ( SFX_ITEM_SET == aCoreSet.GetItemState(RES_CHRATR_ROTATE, sal_True, &pRotItem))
+                {
+                    pRotate = (SvxCharRotateItem*)pRotItem;
+                    if(pRotate && pRotate->GetValue() == 900)
+                    {
+                        nFlags = nFlags | 0x0004 | 0x0008;
+                    }
+                    else if(pRotate && pRotate->GetValue() == 2700 )
+                    {
+                        nFlags = nFlags | 0x0004 | 0x0010;
+                    }
+                }
+            }
+        }
     }
 
     return nFlags;
@@ -2264,7 +2290,7 @@ void WW8AttributeOutput::TableDefinition( ww8::WW8TableNodeInfoInner::Pointer_t
         if ( m_rWW8Export.bWrtWW8 )
         {
             sal_uInt16 nFlags =
-                lcl_TCFlags(pTabBox1, *aItRowSpans);
+                lcl_TCFlags(*m_rWW8Export.pDoc, pTabBox1, *aItRowSpans);
              m_rWW8Export.InsUInt16( nFlags );
         }
 
commit ad2651af85181235a0c3a44bf93d7ecb08dd9353
Author: Lei De Bin <leidb at apache.org>
Date:   Fri Jul 20 01:11:03 2012 +0000

    Fix #120233# fix ppt import bullet size error
    
    Reported by: liu ping tan
    Patch by: Sun Ying
    Review by: Lei De Bin(cherry picked from commit 7025f6c6441b49093504874925f37ca0e61f34f9)
    
    Conflicts:
    	filter/inc/filter/msfilter/svdfppt.hxx
    
    Change-Id: I6f72599bc897d5d7bf46fa88c8b2899b3a2e0c15

diff --git a/filter/inc/filter/msfilter/svdfppt.hxx b/filter/inc/filter/msfilter/svdfppt.hxx
index fcc704f..fffcc86b 100644
--- a/filter/inc/filter/msfilter/svdfppt.hxx
+++ b/filter/inc/filter/msfilter/svdfppt.hxx
@@ -786,6 +786,7 @@ public:
                         sal_uInt32 nLevel,
                         sal_Bool bFirst
                     );
+    void        UpdateBulletRelSize(  sal_uInt32 nLevel, sal_uInt16 nFontHeight );
 };
 
 class PPTParagraphObj;
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
index 0921f64..4301299 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -4002,6 +4002,18 @@ void PPTParaSheet::Read( SdrPowerPointImport&
     }
 }
 
+void PPTParaSheet::UpdateBulletRelSize(  sal_uInt32 nLevel, sal_uInt16 nFontHeight )
+{
+    if ( maParaLevel[ nLevel ].mnBulletHeight > 0x7fff ) // a negative value is the absolute bullet height
+    {
+        sal_Int16  nBulletRelSize = ( sal_Int16 )maParaLevel[ nLevel ].mnBulletHeight;
+        nBulletRelSize = nFontHeight ? ((-nBulletRelSize) * 100 ) / nFontHeight : 100;
+        if ( nBulletRelSize < 0 ) //bullet size over flow
+            nBulletRelSize = 100;
+        maParaLevel[ nLevel ].mnBulletHeight = nBulletRelSize;
+    }
+}
+
 PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, SdrPowerPointImport& rManager,
                                 const PPTTextCharacterStyleAtomInterpreter& /*rTxCFStyle*/, const PPTTextParagraphStyleAtomInterpreter& rTxPFStyle,
                                     const PPTTextSpecInfo& rTextSpecInfo ) :
@@ -4072,6 +4084,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd
                         }
                     }
                     mpCharSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->Read( rIn, sal_True, nLev, bFirst );
+                    mpParaSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->UpdateBulletRelSize(  nLev, mpCharSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->maCharLevel[ nLev ].mnFontHeight );
                     bFirst = sal_False;
                     nLev++;
                 }
@@ -4160,6 +4173,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd
                 }
                 mpParaSheet[ nInstance ]->Read( rManager, rIn, sal_True, nLev, bFirst );
                 mpCharSheet[ nInstance ]->Read( rIn, sal_True, nLev, bFirst );
+                mpParaSheet[ nInstance ]->UpdateBulletRelSize(  nLev, mpCharSheet[ nInstance ]->maCharLevel[ nLev ].mnFontHeight );
                 bFirst = sal_False;
                 nLev++;
             }
@@ -4254,6 +4268,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd
                             }
                         }
                         mpCharSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->Read( rIn, sal_True, nLev, bFirst );
+                        mpParaSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->UpdateBulletRelSize(  nLev, mpCharSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->maCharLevel[ nLev ].mnFontHeight );
                         bFirst = sal_False;
                         nLev++;
                     }
commit 8b5cd38aae487dc2a84a1ee0f56e25daca851b02
Author: Jian Hong Cheng <chengjh at apache.org>
Date:   Wed Aug 22 04:35:05 2012 +0000

    Fix issue #i119650: Font size increased if saved by AOO
    
    * sw/source/filter/ww8/ww8atr.cxx
    MS Word Binary compatibility
    
    Patch by: Chen Peng,<chenpeng2006 at gmail.com>
    Found by: Yan Ji,<yanji.yj at gmail.com>
    Review by: Jian Hong Cheng,<chengjh at apache.org>(cherry picked from commit 980ee15bad53f765a0df1a4507befc9184fc0c63)
    
    Conflicts:
    	sw/source/filter/ww8/ww8atr.cxx
    
    Change-Id: I6f2d3bcd4cea6718e1291c3297fd4a3681c07ee8

diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx
index 7c8560c..b212337 100644
--- a/sw/source/filter/ww8/ww8atr.cxx
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -937,6 +937,8 @@ void WW8AttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pTe
             TableInfoRow( pTextNodeInfoInner );
             m_rWW8Export.pPapPlc->AppendFkpEntry( m_rWW8Export.Strm().Tell(), m_rWW8Export.pO->size(), m_rWW8Export.pO->data());
             m_rWW8Export.pO->clear();
+            //For Bug 119650, should break the properties of CHP PLC after a paragraph end.
+            m_rWW8Export.pChpPlc->AppendFkpEntry( m_rWW8Export.Strm().Tell(), m_rWW8Export.pO->size(), m_rWW8Export.pO->data());
         }
     }
 }
commit 844e62d5ab9ddc77a1ea859653549ea71bcb6656
Author: Sun Ying <sunying at apache.org>
Date:   Thu Aug 16 04:20:44 2012 +0000

    Fix #119523# fix the indent and left margin attribute lost when save as .ppt
    
    Reported by: liupingtan
    Patch by: Ying Sun
    Review by: Jian Yuan Li(cherry picked from commit 6fa2e38b9cd3ce0df5876d849bcba7d879a6e329)
    
    Conflicts:
    	sd/source/filter/eppt/epptso.cxx
    
    Change-Id: I41150838d153c3b99e603924127787f5556ef383

diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
index cb8cce6..0921f64 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -4876,9 +4876,15 @@ void PPTStyleTextPropReader::ReadParaProps( SvStream& rIn, SdrPowerPointImport&
             if ( nMask & 0x4000 )   // pfSpaceAfter
                 rIn >> aSet.mpArry[ PPT_ParaAttr_LowerDist ];
             if ( nMask & 0x100 )    // pfLeftMargin
-                rIn >> nDummy16;
+            {
+                rIn >> aSet.mpArry[ PPT_ParaAttr_TextOfs ];
+                aSet.mnAttrSet |= 1 << PPT_ParaAttr_TextOfs;
+            }
             if ( nMask & 0x400 )    // pfIndent
-                rIn >> nDummy16;
+            {
+                rIn >> aSet.mpArry[ PPT_ParaAttr_BulletOfs ];
+                aSet.mnAttrSet |= 1 << PPT_ParaAttr_BulletOfs;
+            }
             if ( nMask & 0x8000 )   // pfDefaultTabSize
                 rIn >> nDummy16;
             if ( nMask & 0x100000 ) // pfTabStops
@@ -4910,9 +4916,10 @@ void PPTStyleTextPropReader::ReadParaProps( SvStream& rIn, SdrPowerPointImport&
         else
             nCharCount = nStringLen;
 
-        if ( rRuler.GetTextOfs( aParaPropSet.pParaSet->mnDepth, aSet.mpArry[ PPT_ParaAttr_TextOfs ] ) )
+        //if the textofs attr has been read at above, need not to reset.
+        if ( ( !( aSet.mnAttrSet & 1 << PPT_ParaAttr_TextOfs ) ) && rRuler.GetTextOfs( aParaPropSet.pParaSet->mnDepth, aSet.mpArry[ PPT_ParaAttr_TextOfs ] ) )
             aSet.mnAttrSet |= 1 << PPT_ParaAttr_TextOfs;
-        if ( rRuler.GetBulletOfs( aParaPropSet.pParaSet->mnDepth, aSet.mpArry[ PPT_ParaAttr_BulletOfs ] ) )
+        if ( ( !( aSet.mnAttrSet & 1 << PPT_ParaAttr_BulletOfs ) ) && rRuler.GetBulletOfs( aParaPropSet.pParaSet->mnDepth, aSet.mpArry[ PPT_ParaAttr_BulletOfs ] ) )
             aSet.mnAttrSet |= 1 << PPT_ParaAttr_BulletOfs;
         if ( rRuler.GetDefaultTab( aParaPropSet.pParaSet->mnDepth, aSet.mpArry[ PPT_ParaAttr_DefaultTab ] ) )
             aSet.mnAttrSet |= 1 << PPT_ParaAttr_DefaultTab;
diff --git a/sd/source/filter/eppt/epptso.cxx b/sd/source/filter/eppt/epptso.cxx
index 0533283..16f9ae0 100644
--- a/sd/source/filter/eppt/epptso.cxx
+++ b/sd/source/filter/eppt/epptso.cxx
@@ -798,6 +798,13 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj )
             nPropertyFlags |= 1;            // turn off bullet explicit
             nBulletFlags = 0;
         }
+
+        // Write nTextOfs and nBullets
+        if ( mpStyleSheet->IsHardAttribute( nInstance, nDepth, ParaAttr_TextOfs, pPara->nTextOfs ) )
+            nPropertyFlags |= 0x100;
+        if ( mpStyleSheet->IsHardAttribute( nInstance, nDepth, ParaAttr_BulletOfs, pPara->nBulletOfs ))
+            nPropertyFlags |= 0x400;
+
         FontCollectionEntry aFontDescEntry( pPara->aFontDesc.Name, pPara->aFontDesc.Family, pPara->aFontDesc.Pitch, pPara->aFontDesc.CharSet );
         sal_uInt16  nFontId = (sal_uInt16)maFontCollection.GetId( aFontDescEntry );
 
@@ -836,6 +843,10 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj )
             rOut << (sal_uInt16)( pPara->mnLineSpacingTop );
         if ( nPropertyFlags & 0x00004000 )
             rOut << (sal_uInt16)( pPara->mnLineSpacingBottom );
+        if ( nPropertyFlags & 0x100 )
+            rOut << (sal_uInt16)(pPara->nTextOfs);
+        if (  nPropertyFlags & 0x400 )
+            rOut << (sal_uInt16)(pPara->nBulletOfs);
         if ( nPropertyFlags & 0x000e0000 )
         {
             sal_uInt16 nAsianSettings = 0;
commit b619ffdbb3656bc01a603afb26caea8a483bc5ec
Author: Sun Ying <sunying at apache.org>
Date:   Thu Aug 16 02:22:49 2012 +0000

    #119515# fix the numbering bullet in table cell changed when saved to .ppt file
    
    Reported by: liupingtan
    Patch by: Ying Sun
    Review by: Jian Yuan Li

diff --git a/sd/source/filter/eppt/epptso.cxx b/sd/source/filter/eppt/epptso.cxx
index a67fbdf..0533283 100644
--- a/sd/source/filter/eppt/epptso.cxx
+++ b/sd/source/filter/eppt/epptso.cxx
@@ -3701,15 +3701,27 @@ void PPTWriter::ImplCreateTable( uno::Reference< drawing::XShape >& rXShape, Esc
 
                             ImplWriteTextStyleAtom( aClientTextBox, EPP_TEXTTYPE_Other, 0, NULL, aExtBu, &aPropOptSp );
 
+                            // need write client data for extend bullet
+                            if ( aExtBu.Tell() )
+                            {
+                                SvMemoryStream* pClientData = new SvMemoryStream( 0x200, 0x200 );
+                                ImplProgTagContainer( pClientData, &aExtBu );
+                                *mpStrm << (sal_uInt32)( ( ESCHER_ClientData << 16 ) | 0xf )
+                                    << (sal_uInt32)pClientData->Tell();
+
+                                mpStrm->Write( pClientData->GetData(), pClientData->Tell() );
+                                delete pClientData, pClientData = NULL;
+                            }
+
                             aPropOptSp.Commit( *mpStrm );
                             mpPptEscherEx->AddAtom( 16, ESCHER_ChildAnchor );
                             *mpStrm     << nLeft
-                                        << nTop
-                                        << nRight
-                                        << nBottom;
+                                << nTop
+                                << nRight
+                                << nBottom;
 
                             *mpStrm << (sal_uInt32)( ( ESCHER_ClientTextbox << 16 ) | 0xf )
-                                    << (sal_uInt32)aClientTextBox.Tell();
+                                << (sal_uInt32)aClientTextBox.Tell();
 
                             mpStrm->Write( aClientTextBox.GetData(), aClientTextBox.Tell() );
                             mpPptEscherEx->CloseContainer();
commit 461c262eb93412b46cc73a28932afdcbaeb34748
Author: Jian Hong Cheng <chengjh at apache.org>
Date:   Fri Aug 24 02:14:25 2012 +0000

    Fix issue #i120568: Hyperlink of Graphihc with Anchor Type "As Character"
    
    lost after save as doc format
    
    * main/sw/source/filter/ww8/wrtww8gr.cxx
    MS Word Binary compatibility
    
    Patch by: Huaidong Qiu,<qiuhuaidong at gmail.com>
    Found by: Huaidong Qiu,<qiuhuaidong at gmail.com>
    Review by: Jian Hong Cheng,<chengjh at apache.org>           (cherry picked from commit bf1449731638d6432fb9adfef3a8a303ad9bf76b)
    
    Conflicts:
    	sw/source/filter/ww8/wrtww8gr.cxx
    
    Change-Id: I6a5923a015eefc8aaadeacd897848cf1a2f15362

diff --git a/sw/source/filter/ww8/wrtww8gr.cxx b/sw/source/filter/ww8/wrtww8gr.cxx
index 61632d5..74f46da 100644
--- a/sw/source/filter/ww8/wrtww8gr.cxx
+++ b/sw/source/filter/ww8/wrtww8gr.cxx
@@ -60,6 +60,9 @@
 #include "wrtww8.hxx"
 #include "ww8par.hxx"
 #include "escher.hxx"
+//Added for i120568
+#include "ww8attributeoutput.hxx"
+#include "fmturl.hxx"
 
 #include "docsh.hxx"
 #include <cstdio>
@@ -381,6 +384,16 @@ void WW8Export::OutputLinkedOLE( const OUString& rOleId )
 
 void WW8Export::OutGrf(const sw::Frame &rFrame)
 {
+    //Added for i120568,the hyperlink info within a graphic whose anchor type is "As character"
+    //will be exported to ensure the fidelity
+    const SwFmtURL& rURL = rFrame.GetFrmFmt().GetAttrSet().GetURL();
+    bool bURLStarted = false;
+    if( rURL.GetURL().Len() && rFrame.GetWriterType() == sw::Frame::eGraphic)
+    {
+        bURLStarted = true;
+        m_pAttrOutput->StartURL( rURL.GetURL(), rURL.GetTargetFrameName() );
+    }
+
     // Store the graphic settings in GrfNode so they may be written-out later
     pGrf->Insert(rFrame);
 
@@ -498,6 +511,10 @@ void WW8Export::OutGrf(const sw::Frame &rFrame)
     {
         OutputField( 0, ww::eINCLUDEPICTURE, String(), WRITEFIELD_CLOSE );
     }
+    //Added for i120568,the hyperlink info within a graphic whose anchor type is
+    //"As character" will be exported to ensure the fidelity
+    if( bURLStarted )
+        m_pAttrOutput->EndURL();
 }
 
 GraphicDetails& GraphicDetails::operator=(const GraphicDetails &rOther)
commit 67f9ccaebf0f79f9e51717d5365aee1b9bcbd486
Author: Jian Hong Cheng <chengjh at apache.org>
Date:   Tue Sep 4 06:09:46 2012 +0000

    Fix issue #i120769: Color of underline display wrongly
    
    * sw/source/core/text/itrpaint.cxx
    Core function and MS Word Binary compatibility
    
    Patch by: Jane Kang,<kangjane2012 at gmail.com>
    Found by: Yan Ji,<yanji.yj at gmail.com>
    Review by: Jian Hong Cheng,<chengjh at apache.org>           (cherry picked from commit 70f7599d7ec5f3c14a42cd5dc94519fead070cfd)

diff --git a/sw/source/core/text/itrpaint.cxx b/sw/source/core/text/itrpaint.cxx
index 981c2df..3043bf4 100644
--- a/sw/source/core/text/itrpaint.cxx
+++ b/sw/source/core/text/itrpaint.cxx
@@ -497,11 +497,13 @@ void SwTxtPainter::CheckSpecialUnderline( const SwLinePortion* pPor,
 
     // If current underline matches the common underline font, we continue
     // to use the common underline font.
+    //Bug 120769:Color of underline display wrongly
+        Color aAutoCo(COL_AUTO);
     if ( GetInfo().GetUnderFnt() &&
-         GetInfo().GetUnderFnt()->GetFont().GetUnderline() ==
-         GetFnt()->GetUnderline() )
-         return;
-
+        GetInfo().GetUnderFnt()->GetFont().GetUnderline() == GetFnt()->GetUnderline() &&
+        GetInfo().GetFont() && GetInfo().GetFont()->GetUnderColor() != aAutoCo )
+        return;
+    //Bug 120769(End)
     // calculate the new common underline font
     SwFont* pUnderlineFnt = 0;
     Point aCommonBaseLine;
commit 7a90044df279e1ec2336e7c398fa938a6fa3ad56
Author: Armin Le Grand <alg at apache.org>
Date:   Thu Sep 6 11:41:07 2012 +0000

    #120650# truncate mis-sized bullet sizes to useful values
    
    Patch by: Tang Meng
    Review by: alg(cherry picked from commit e5720990bd3691222363bb2d674b7d39a0d8829f)

diff --git a/editeng/source/uno/unonrule.cxx b/editeng/source/uno/unonrule.cxx
index a69fdc7..ea028e1 100644
--- a/editeng/source/uno/unonrule.cxx
+++ b/editeng/source/uno/unonrule.cxx
@@ -439,6 +439,12 @@ void SvxUnoNumberingRules::setNumberingRuleByIndex( const Sequence< beans::Prope
             sal_Int16 nSize = sal_Int16();
             if( aVal >>= nSize )
             {
+                // [Bug 120650] the slide content corrupt when open in Aoo
+                if ((nSize>250)||(nSize<=0))
+                {
+                    nSize = 100;
+                }
+
                 aFmt.SetBulletRelSize( (short)nSize );
                 continue;
             }


More information about the Libreoffice-commits mailing list