writerfilter/source/dmapper/DomainMapper.cxx      |   13 +++++++++++++
 writerfilter/source/dmapper/StyleSheetTable.cxx   |    2 ++
 writerfilter/source/dmapper/TblStylePrHandler.cxx |   21 +++++++++++++++++++++
 3 files changed, 36 insertions(+)

New commits:
commit 97e9eda0cec15e4d8e8d86010b98f303cbf4fd02
Author: Miklos Vajna <vmik...@collabora.co.uk>
Date:   Tue Oct 29 16:40:51 2013 +0100

    DOCX import: read tblStylePr into InteropGrabBag
    
    Change-Id: I0217b76c8e2447c9053611f7d187251bf76c58e4

diff --git a/writerfilter/source/dmapper/DomainMapper.cxx 
b/writerfilter/source/dmapper/DomainMapper.cxx
index 75fbe65..1139671 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -58,6 +58,7 @@
 #include <com/sun/star/text/XFootnote.hpp>
 #include <comphelper/types.hxx>
 #include <comphelper/storagehelper.hxx>
+#include <filter/msfilter/util.hxx>
 
 #include <CellColorHandler.hxx>
 #include <SectionColumnHandler.hxx>
@@ -914,6 +915,7 @@ void DomainMapper::lcl_attribute(Id nName, Value & val)
         case NS_ooxml::LN_CT_Color_val:
             if (m_pImpl->GetTopContext())
                 m_pImpl->GetTopContext()->Insert(PROP_CHAR_COLOR, 
uno::makeAny( nIntValue ) );
+            m_pImpl->appendGrabBag(m_pImpl->m_aSubInteropGrabBag, "val", 
OStringToOUString(msfilter::util::ConvertColor(nIntValue), 
RTL_TEXTENCODING_UTF8));
             break;
         case NS_ooxml::LN_CT_Underline_color:
             if (m_pImpl->GetTopContext())
@@ -2152,6 +2154,8 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, 
PropertyMapPtr rContext, SprmType
                         uno::Reference<beans::XPropertySet> 
xCharStyle(m_pImpl->GetCurrentNumberingCharStyle());
                         if (xCharStyle.is())
                             
xCharStyle->setPropertyValue(rPropNameSupplier.GetName(PROP_CHAR_WEIGHT), 
aBold);
+                        if (nSprmId == NS_sprm::LN_CFBold)
+                            m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, 
"b", OUString::number(nIntValue));
                     }
                     break;
                     case 61: /*sprmCFItalic*/
@@ -2162,6 +2166,8 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, 
PropertyMapPtr rContext, SprmType
                         rContext->Insert( ePropertyId, aPosture );
                         if( nSprmId != NS_sprm::LN_CFItalicBi ) // 
sprmCFItalicBi
                             rContext->Insert(PROP_CHAR_POSTURE_ASIAN, aPosture 
);
+                        if (nSprmId == NS_sprm::LN_CFItalic)
+                            m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, 
"i", OUString::number(nIntValue));
                     }
                     break;
                     case NS_sprm::LN_CFStrike: /*sprmCFStrike*/
@@ -2239,6 +2245,8 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, 
PropertyMapPtr rContext, SprmType
             // Make sure char sizes defined in the stylesheets don't affect 
char props from direct formatting.
             if (!m_pImpl->IsStyleSheetImport())
                 m_pImpl->deferCharacterProperty( nSprmId, uno::makeAny( 
nIntValue ));
+            if (nSprmId == NS_sprm::LN_CHps)
+                m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "sz", 
OUString::number(nIntValue));
         }
         break;
     case NS_sprm::LN_CHpsInc:
@@ -3005,6 +3013,11 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, 
PropertyMapPtr rContext, SprmType
             m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "rFonts", 
m_pImpl->m_aSubInteropGrabBag);
         else if (nSprmId == NS_ooxml::LN_EG_RPrBase_lang)
             m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "lang", 
m_pImpl->m_aSubInteropGrabBag);
+        else if (nSprmId == NS_ooxml::LN_EG_RPrBase_color)
+            m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "color", 
m_pImpl->m_aSubInteropGrabBag);
+    break;
+    case NS_ooxml::LN_CT_PPrBase_wordWrap:
+        m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "wordWrap", "");
     break;
     case NS_ooxml::LN_EG_SectPrContents_footnotePr:
     case NS_ooxml::LN_EG_SectPrContents_endnotePr:
diff --git a/writerfilter/source/dmapper/StyleSheetTable.cxx 
b/writerfilter/source/dmapper/StyleSheetTable.cxx
index 45adc73..4506b69 100644
--- a/writerfilter/source/dmapper/StyleSheetTable.cxx
+++ b/writerfilter/source/dmapper/StyleSheetTable.cxx
@@ -663,6 +663,8 @@ void StyleSheetTable::lcl_sprm(Sprm & rSprm)
                 {
                     
pTableEntry->AppendInteropGrabBag(pTblStylePrHandler->getInteropGrabBag("tblPr"));
                 }
+                else if (nSprmId == NS_ooxml::LN_CT_Style_tblStylePr)
+                    
pTableEntry->AppendInteropGrabBag(pTblStylePrHandler->getInteropGrabBag("tblStylePr"));
             }
             break;
         }
diff --git a/writerfilter/source/dmapper/TblStylePrHandler.cxx 
b/writerfilter/source/dmapper/TblStylePrHandler.cxx
index 7884cbc..faedeba 100644
--- a/writerfilter/source/dmapper/TblStylePrHandler.cxx
+++ b/writerfilter/source/dmapper/TblStylePrHandler.cxx
@@ -78,7 +78,23 @@ void TblStylePrHandler::lcl_sprm(Sprm & rSprm)
         case NS_ooxml::LN_CT_TblPrBase:
         case NS_ooxml::LN_CT_TrPrBase:
         case NS_ooxml::LN_CT_TcPrBase:
+        {
+            std::vector<beans::PropertyValue> aSavedGrabBag;
+            if (rSprm.getId() == NS_ooxml::LN_CT_PPrBase || rSprm.getId() == 
NS_ooxml::LN_EG_RPrBase)
+            {
+                aSavedGrabBag = m_aInteropGrabBag;
+                m_aInteropGrabBag.clear();
+            }
             resolveSprmProps( rSprm );
+            if (rSprm.getId() == NS_ooxml::LN_CT_PPrBase || rSprm.getId() == 
NS_ooxml::LN_EG_RPrBase)
+            {
+                if (rSprm.getId() == NS_ooxml::LN_CT_PPrBase)
+                    aSavedGrabBag.push_back(getInteropGrabBag("pPr"));
+                else if (rSprm.getId() == NS_ooxml::LN_EG_RPrBase)
+                    aSavedGrabBag.push_back(getInteropGrabBag("rPr"));
+                m_aInteropGrabBag = aSavedGrabBag;
+            }
+        }
             break;
         default:
             // Tables specific properties have to handled here
@@ -90,7 +106,12 @@ void TblStylePrHandler::lcl_sprm(Sprm & rSprm)
             {
                 // The DomainMapper can handle some of the properties
                 m_rDMapper.PushStyleSheetProperties( m_pProperties, true );
+                // Just pass a non-empty string, the array will have a single 
element anyway.
+                m_rDMapper.enableInteropGrabBag("TblStylePrHandler");
                 m_rDMapper.sprm( rSprm );
+                uno::Sequence<beans::PropertyValue> aGrabBag = 
m_rDMapper.getInteropGrabBag().Value.get< uno::Sequence<beans::PropertyValue> 
>();
+                if (aGrabBag.hasElements())
+                    m_aInteropGrabBag.push_back(aGrabBag[0]);
                 m_rDMapper.PopStyleSheetProperties( true );
             }
     }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to