You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by zh...@apache.org on 2012/08/26 14:55:17 UTC
svn commit: r1377430 - in /incubator/ooo/trunk/main/writerfilter:
inc/resourcemodel/TableManager.hxx source/dmapper/StyleSheetTable.cxx
source/dmapper/StyleSheetTable.hxx
Author: zhangjf
Date: Sun Aug 26 12:55:17 2012
New Revision: 1377430
URL: http://svn.apache.org/viewvc?rev=1377430&view=rev
Log:
#i120576#, the background color from table style are lost for table in the docx file
Refer to wiki document http://wiki.openoffice.org/wiki/Table_Style_in_Writerfilter
The change is composed of below parts:
1. For the w:tcPr under w:style, it's used for whole table. It should be sprmed.
2. On how to apply different kinds of table styles, it follows the sequence from wiki as below. That means ne/nw/se/sw table style can overwrite all other types if existing.
wholeTable
band1Horz band2Horz
band1Vert band2Vert
firstCol lastCol
firstRow lastRow
neCell nwCell seCell swCell
3. Fix a typo for resetRowProp. It's related to all row properties.
Found by: bjcheny
Patch by: bjcheny
Review by: zhangjf
Modified:
incubator/ooo/trunk/main/writerfilter/inc/resourcemodel/TableManager.hxx
incubator/ooo/trunk/main/writerfilter/source/dmapper/StyleSheetTable.cxx
incubator/ooo/trunk/main/writerfilter/source/dmapper/StyleSheetTable.hxx
Modified: incubator/ooo/trunk/main/writerfilter/inc/resourcemodel/TableManager.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/writerfilter/inc/resourcemodel/TableManager.hxx?rev=1377430&r1=1377429&r2=1377430&view=diff
==============================================================================
--- incubator/ooo/trunk/main/writerfilter/inc/resourcemodel/TableManager.hxx (original)
+++ incubator/ooo/trunk/main/writerfilter/inc/resourcemodel/TableManager.hxx Sun Aug 26 12:55:17 2012
@@ -218,7 +218,7 @@ class TableManager
void resetRowProps()
{
- mpCellProps.reset();
+ mpRowProps.reset();
}
void setRowProps(PropertiesPointer pProps)
Modified: incubator/ooo/trunk/main/writerfilter/source/dmapper/StyleSheetTable.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/writerfilter/source/dmapper/StyleSheetTable.cxx?rev=1377430&r1=1377429&r2=1377430&view=diff
==============================================================================
--- incubator/ooo/trunk/main/writerfilter/source/dmapper/StyleSheetTable.cxx (original)
+++ incubator/ooo/trunk/main/writerfilter/source/dmapper/StyleSheetTable.cxx Sun Aug 26 12:55:17 2012
@@ -221,7 +221,19 @@ void lcl_mergeProps( PropertyMapPtr pToF
pToFill->insert( pToAdd );
}
-PropertyMapPtr TableStyleSheetEntry::GetLocalPropertiesFromMask( sal_Int32 nMask )
+void TableStyleSheetEntry::MergePropertiesFromMask(const short nBit, const sal_Int32 nMask,
+ const TblStyleType nStyleId,
+ PropertyMapPtr pToFill)
+{
+ TblStylePrs::iterator pIt = m_aStyles.find( nStyleId );
+
+ short nTestBit = 1 << nBit;
+ sal_Int32 nBitMask = sal_Int32( nTestBit );
+ if ( ( nMask & nBitMask ) && ( pIt != m_aStyles.end( ) ) )
+ lcl_mergeProps( pToFill, pIt->second, nStyleId );
+}
+
+PropertyMapPtr TableStyleSheetEntry::GetLocalPropertiesFromMask( const sal_Int32 nMask )
{
// Order from right to left
static TblStyleType aBitsOrder[] =
@@ -243,21 +255,22 @@ PropertyMapPtr TableStyleSheetEntry::Get
// Get the properties applying according to the mask
PropertyMapPtr pProps( new PropertyMap( ) );
- short nBit = 0;
+ short nBit = 4;
do
{
- TblStyleType nStyleId = aBitsOrder[nBit];
- TblStylePrs::iterator pIt = m_aStyles.find( nStyleId );
-
- short nTestBit = 1 << nBit;
- sal_Int32 nBitMask = sal_Int32( nTestBit );
- if ( ( nMask & nBitMask ) && ( pIt != m_aStyles.end( ) ) )
- lcl_mergeProps( pProps, pIt->second, nStyleId );
-
+ MergePropertiesFromMask(nBit, nMask, aBitsOrder[nBit], pProps);
nBit++;
}
while ( nBit < 13 );
+ nBit = 0;
+ do
+ {
+ MergePropertiesFromMask(nBit, nMask, aBitsOrder[nBit], pProps);
+ nBit++;
+ }
+ while ( nBit < 4 ); // nw/ne/sw/se overwrite others
+
return pProps;
}
@@ -543,9 +556,13 @@ void StyleSheetTable::lcl_sprm(Sprm & rS
case NS_ooxml::LN_CT_Style_personalReply:
case NS_ooxml::LN_CT_Style_rsid:
case NS_ooxml::LN_CT_Style_trPr:
- case NS_ooxml::LN_CT_Style_tcPr:
/* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
break;
+ case NS_ooxml::LN_CT_Style_tcPr:
+ {
+ resolveSprmProps(rSprm);
+ }
+ break;
case NS_ooxml::LN_CT_Style_tblPr: //contains table properties
case NS_ooxml::LN_CT_Style_tblStylePr: //contains to table properties
Modified: incubator/ooo/trunk/main/writerfilter/source/dmapper/StyleSheetTable.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/writerfilter/source/dmapper/StyleSheetTable.hxx?rev=1377430&r1=1377429&r2=1377430&view=diff
==============================================================================
--- incubator/ooo/trunk/main/writerfilter/source/dmapper/StyleSheetTable.hxx (original)
+++ incubator/ooo/trunk/main/writerfilter/source/dmapper/StyleSheetTable.hxx Sun Aug 26 12:55:17 2012
@@ -145,7 +145,9 @@ public:
virtual ~TableStyleSheetEntry( );
protected:
- PropertyMapPtr GetLocalPropertiesFromMask( sal_Int32 nMask );
+ PropertyMapPtr GetLocalPropertiesFromMask( const sal_Int32 nMask );
+ void MergePropertiesFromMask(const short nBit, const sal_Int32 nMask,
+ const TblStyleType nStyleId, PropertyMapPtr pToFill);
};
typedef boost::shared_ptr<TableStyleSheetEntry> TableStyleSheetEntryPtr;