[Libreoffice-commits] core.git: Branch 'aoo/trunk' - 4 commits - apple_remote/RemoteControl.m vcl/aqua writerfilter/inc writerfilter/source
Herbert Dürr
hdu at apache.org
Fri Feb 7 08:09:01 PST 2014
apple_remote/RemoteControl.m | 2
vcl/aqua/source/app/salinst.cxx | 9
writerfilter/inc/resourcemodel/TableManager.hxx | 97 ++++-----
writerfilter/source/dmapper/DomainMapperTableHandler.cxx | 31 ++-
writerfilter/source/dmapper/DomainMapperTableHandler.hxx | 57 +++--
writerfilter/source/dmapper/DomainMapperTableManager.cxx | 155 +++++----------
writerfilter/source/dmapper/DomainMapperTableManager.hxx | 30 +-
writerfilter/source/dmapper/DomainMapper_Impl.cxx | 9
writerfilter/source/dmapper/DomainMapper_Impl.hxx | 2
writerfilter/source/dmapper/TablePropertiesHandler.cxx | 1
writerfilter/source/doctok/WW8ResourceModelImpl.cxx | 12 -
writerfilter/source/resourcemodel/resourcemodel.cxx | 6
12 files changed, 195 insertions(+), 216 deletions(-)
New commits:
commit f8eebff890810dc4cc507db875c3402ce073765d
Author: Herbert Dürr <hdu at apache.org>
Date: Fri Feb 7 14:35:43 2014 +0000
#i124201# re-enable the AppleRemote again
now that its nasty stability problems on 64bit AOO for OSX are fixed
diff --git a/vcl/aqua/source/app/salinst.cxx b/vcl/aqua/source/app/salinst.cxx
index 42afa6e..46e367d 100644
--- a/vcl/aqua/source/app/salinst.cxx
+++ b/vcl/aqua/source/app/salinst.cxx
@@ -191,9 +191,7 @@ static void initNSApp()
NSLog(@"Unable to obtain system version: %ld", (long)err);
// Initialize Apple Remote
-#if 0 // disabled for now for stability problems
- GetSalData()->mpMainController = [[MainController alloc] init];
-#endif
+ GetSalData()->mpMainController = [[MainController alloc] init]; // TODO: rename MainController to AppleRemoteController
[[NSDistributedNotificationCenter defaultCenter] addObserver: NSApp
selector: @selector(applicationWillBecomeActive:)
commit 77a3b588293e8c86131158c21aede3cbebf0ff2d
Author: Herbert Dürr <hdu at apache.org>
Date: Fri Feb 7 14:34:14 2014 +0000
#i124201# prevent a NSException in AppleRemote's sendDistributedNotification method
the RemoteControl is already initialized anyway
diff --git a/apple_remote/RemoteControl.m b/apple_remote/RemoteControl.m
index d0812d3..b74decb 100644
--- a/apple_remote/RemoteControl.m
+++ b/apple_remote/RemoteControl.m
@@ -97,7 +97,6 @@ NSString* kTargetApplicationIdentifier = @"TargetBundleIdentifier";
+ (void) sendDistributedNotification: (NSString*) notificationName targetBundleIdentifier: (NSString*) targetIdentifier
{
- if ( (self = [super init]) ) {
NSDictionary* userInfo = [NSDictionary dictionaryWithObjectsAndKeys: [NSString stringWithCString:[self remoteControlDeviceName] encoding:NSASCIIStringEncoding],
kRemoteControlDeviceName /* key = RemoteControlDeviceName -> OK */,
[[NSBundle mainBundle] bundleIdentifier] /* value = org.openoffice.script -> OK */,
@@ -123,7 +122,6 @@ NSString* kTargetApplicationIdentifier = @"TargetBundleIdentifier";
object:nil
userInfo:userInfo
deliverImmediately:YES];
- }
}
+ (void) sendFinishedNotifcationForAppIdentifier: (NSString*) identifier {
commit 2d6f7c351fd53de62af5262778173538942aa4b1
Author: Herbert Dürr <hdu at apache.org>
Date: Fri Feb 7 14:29:20 2014 +0000
#i124201# fix frame-list handling with AppleRemote events
iterating beyond the end of a frame-list must be avoided
diff --git a/vcl/aqua/source/app/salinst.cxx b/vcl/aqua/source/app/salinst.cxx
index 26cccd4..42afa6e 100644
--- a/vcl/aqua/source/app/salinst.cxx
+++ b/vcl/aqua/source/app/salinst.cxx
@@ -622,11 +622,10 @@ void AquaSalInstance::handleAppDefinedEvent( NSEvent* pEvent )
bool bIsFullScreenMode = false;
std::list<AquaSalFrame*>::iterator it = pSalData->maFrames.begin();
- while( (*it) && ( (it != pSalData->maFrames.end() ) || ( (*it)->mbFullScreen == false ) ) )
+ for(; it != pSalData->maFrames.end(); ++it )
{
if( (*it)->mbFullScreen )
bIsFullScreenMode = true;
- it++;
}
switch ([pEvent data1])
@@ -663,7 +662,7 @@ void AquaSalInstance::handleAppDefinedEvent( NSEvent* pEvent )
break;
}
AquaSalFrame* pFrame = pSalData->maFrames.front();
- Window * pWindow = pFrame->GetWindow() ? pSalData->maFrames.front()->GetWindow() : NULL;
+ Window* pWindow = pFrame ? pFrame->GetWindow() : NULL;
if( pWindow )
{
commit f60d1e36194e2fe6d479b6f747e158efd4ba9e2b
Author: Oliver-Rainer Wittmann <orw at apache.org>
Date: Fri Feb 7 14:22:16 2014 +0000
123345: import - correct handling of sub tables
import - import table's left margin
import - set table's bottom margin explicitly
diff --git a/writerfilter/inc/resourcemodel/TableManager.hxx b/writerfilter/inc/resourcemodel/TableManager.hxx
index 06af670..b013ed9 100644
--- a/writerfilter/inc/resourcemodel/TableManager.hxx
+++ b/writerfilter/inc/resourcemodel/TableManager.hxx
@@ -24,17 +24,9 @@
#ifndef INCLUDED_TABLE_MANAGER_HXX
#define INCLUDED_TABLE_MANAGER_HXX
-#ifndef INCLUDED_TABLE_DATA_HXX
#include <resourcemodel/TableData.hxx>
-#endif
-
-#ifndef INCLUDED_WW8_RESOURCE_MODEL_HXX
#include <resourcemodel/WW8ResourceModel.hxx>
-#endif
-
-#ifndef INCLUDED_SPRMIDS_HXX
#include <doctok/sprmids.hxx>
-#endif
#include <boost/shared_ptr.hpp>
#include <stack>
@@ -62,13 +54,16 @@ public:
@param nDepth depth of the table in surrounding table hierarchy
@param pProps properties of the table
*/
- virtual void startTable(unsigned int nRows, unsigned int nDepth,
- PropertiesPointer pProps) = 0;
+ virtual void startTable(
+ unsigned int nRows,
+ unsigned int nDepth,
+ PropertiesPointer pProps ) = 0;
/**
Handle end of table.
*/
- virtual void endTable() = 0;
+ virtual void endTable(
+ const unsigned int nDepth ) = 0;
/**
Handle start of row.
@@ -76,8 +71,9 @@ public:
@param nCols number of columns in the table
@param pProps properties of the row
*/
- virtual void startRow(unsigned int nCols,
- PropertiesPointer pProps) = 0;
+ virtual void startRow(
+ unsigned int nCols,
+ PropertiesPointer pProps ) = 0;
/**
Handle end of row.
@@ -90,14 +86,17 @@ public:
@param rT start handle of the cell
@param pProps properties of the cell
*/
- virtual void startCell(const T & rT, PropertiesPointer pProps) = 0;
+ virtual void startCell(
+ const T & rT,
+ PropertiesPointer pProps ) = 0;
/**
Handle end of cell.
@param rT end handle of cell
*/
- virtual void endCell(const T & rT) = 0;
+ virtual void endCell(
+ const T & rT ) = 0;
};
template <typename T, typename PropertiesPointer>
@@ -297,9 +296,10 @@ protected:
return mState.getProps();
}
- void setProps(PropertiesPointer pProps)
+ void setProps(
+ PropertiesPointer pProps )
{
- mState.setProps(pProps);
+ mState.setProps( pProps );
}
void resetProps()
@@ -312,9 +312,10 @@ protected:
return mState.getCellProps();
}
- void setCellProps(PropertiesPointer pProps)
+ void setCellProps(
+ PropertiesPointer pProps )
{
- mState.setCellProps(pProps);
+ mState.setCellProps( pProps );
}
void resetCellProps()
@@ -327,9 +328,10 @@ protected:
return mState.getRowProps();
}
- void setRowProps(PropertiesPointer pProps)
+ void setRowProps(
+ PropertiesPointer pProps )
{
- mState.setRowProps(pProps);
+ mState.setRowProps( pProps );
}
void resetRowProps()
@@ -337,9 +339,10 @@ protected:
mState.resetRowProps();
}
- void setInCell(bool bInCell)
+ void setInCell(
+ bool bInCell )
{
- mState.setInCell(bInCell);
+ mState.setInCell( bInCell );
}
bool isInCell() const
@@ -347,9 +350,10 @@ protected:
return mState.isInCell();
}
- void setCellEnd(bool bCellEnd)
+ void setCellEnd(
+ bool bCellEnd )
{
- mState.setCellEnd(bCellEnd);
+ mState.setCellEnd( bCellEnd );
}
bool isCellEnd() const
@@ -357,9 +361,10 @@ protected:
return mState.isCellEnd();
}
- void setRowEnd(bool bRowEnd)
+ void setRowEnd(
+ bool bRowEnd )
{
- mState.setRowEnd(bRowEnd);
+ mState.setRowEnd( bRowEnd );
}
bool isRowEnd() const
@@ -372,9 +377,10 @@ protected:
return mState.getTableProps();
}
- void setTableProps(PropertiesPointer pProps)
+ void setTableProps(
+ PropertiesPointer pProps )
{
- mState.setTableProps(pProps);
+ mState.setTableProps( pProps );
}
void resetTableProps()
@@ -387,7 +393,8 @@ protected:
return mCurHandle;
}
- void setHandle(const T & rHandle)
+ void setHandle(
+ const T & rHandle )
{
mCurHandle = rHandle;
}
@@ -480,9 +487,6 @@ protected:
paragraph.
*/
virtual void endOfRowAction();
- /** let the derived class clear their table related data
- */
- virtual void clearData();
public:
@@ -778,26 +782,25 @@ void TableManager<T, PropertiesPointer>::endParagraphGroup()
mnTableDepth = mnTableDepthNew;
- if (mnTableDepth > 0)
+ if ( mnTableDepth > 0 )
{
- typename TableData<T, PropertiesPointer>::Pointer_t pTableData =
- mTableDataStack.top();
+ typename TableData< T, PropertiesPointer >::Pointer_t pTableData = mTableDataStack.top();
- if (isRowEnd())
+ if ( isRowEnd() )
{
endOfRowAction();
- pTableData->endRow(getRowProps());
+ pTableData->endRow( getRowProps() );
resetRowProps();
}
- else if (isInCell())
+ else if ( isInCell() )
{
- ensureOpenCell(getCellProps());
+ ensureOpenCell( getCellProps() );
- if (isCellEnd())
+ if ( isCellEnd() )
{
endOfCellAction();
- closeCell(getHandle());
+ closeCell( getHandle() );
}
}
resetCellProps();
@@ -971,7 +974,7 @@ void TableManager<T, PropertiesPointer>::resolveCurrentTable()
typename TableData<T, PropertiesPointer>::Pointer_t
pTableData = mTableDataStack.top();
- unsigned int nRows = pTableData->getRowCount();
+ const unsigned int nRows = pTableData->getRowCount();
mpTableDataHandler->startTable(nRows, pTableData->getDepth(), getTableProps());
@@ -995,10 +998,9 @@ void TableManager<T, PropertiesPointer>::resolveCurrentTable()
mpTableDataHandler->endRow();
}
- mpTableDataHandler->endTable();
+ mpTableDataHandler->endTable( pTableData->getDepth() );
}
resetTableProps();
- clearData();
#ifdef DEBUG_TABLE
if (mpTableLogger.get() != NULL)
@@ -1023,11 +1025,6 @@ bool TableManager<T, PropertiesPointer>::isIgnore() const
}
template <typename T, typename PropertiesPointer>
-void TableManager<T, PropertiesPointer>::clearData()
-{
-}
-
-template <typename T, typename PropertiesPointer>
void TableManager<T, PropertiesPointer>::openCell
(const T & rHandle, PropertiesPointer pProps)
{
diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
index cf480f8..15b49a8 100644
--- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
@@ -285,7 +285,9 @@ struct WRITERFILTER_DLLPRIVATE TableInfo
};
-TableStyleSheetEntry * DomainMapperTableHandler::endTableGetTableStyle(TableInfo & rInfo)
+TableStyleSheetEntry * DomainMapperTableHandler::endTableGetTableStyle(
+ TableInfo & rInfo,
+ const bool bAdjustLeftMarginByDefaultValue )
{
// will receive the table style if any
TableStyleSheetEntry* pTableStyle = NULL;
@@ -463,7 +465,14 @@ TableStyleSheetEntry * DomainMapperTableHandler::endTableGetTableStyle(TableInfo
lcl_debug_TableBorder(aTableBorder);
#endif
- m_aTableProperties->Insert( PROP_LEFT_MARGIN, false, uno::makeAny( nLeftMargin - nGapHalf - rInfo.nLeftBorderDistance));
+ m_aTableProperties->Insert(
+ PROP_LEFT_MARGIN,
+ false,
+ uno::makeAny( nLeftMargin - nGapHalf - ( bAdjustLeftMarginByDefaultValue ? rInfo.nLeftBorderDistance : 0 ) ) );
+
+ // no bottom margin - set it explicitly to avoid inheritance from a set dynamic pool default
+ // which might be provided via document default paragraph properties.
+ m_aTableProperties->Insert( PROP_BOTTOM_MARGIN, false, uno::makeAny( (sal_Int32)0 ) );
m_aTableProperties->getValue( TablePropertyMap::TABLE_WIDTH, nTableWidth );
if( nTableWidth > 0 )
@@ -702,14 +711,18 @@ RowPropertyValuesSeq_t DomainMapperTableHandler::endTableGetRowProperties()
return aRowProperties;
}
-void DomainMapperTableHandler::endTable()
+void DomainMapperTableHandler::endTable(
+ const unsigned int nDepth )
{
#ifdef DEBUG_DMAPPER_TABLE_HANDLER
dmapper_logger->startElement("tablehandler.endTable");
#endif
TableInfo aTableInfo;
- aTableInfo.pTableStyle = endTableGetTableStyle(aTableInfo);
+ // adjust left margin only for tables in the body text, not for sub tables.
+ const bool bAdjustLeftMarginByDefaultValue = (nDepth == 0);
+ aTableInfo.pTableStyle =
+ endTableGetTableStyle( aTableInfo, bAdjustLeftMarginByDefaultValue );
// expands to uno::Sequence< Sequence< beans::PropertyValues > >
CellPropertyValuesSeq_t aCellProperties = endTableGetCellProperties(aTableInfo);
@@ -724,10 +737,12 @@ void DomainMapperTableHandler::endTable()
{
try
{
- uno::Reference<text::XTextTable> xTable = m_xText->convertToTable(*m_pTableSeq,
- aCellProperties,
- aRowProperties,
- aTableInfo.aTableProperties);
+ uno::Reference< text::XTextTable > xTable =
+ m_xText->convertToTable(
+ *m_pTableSeq,
+ aCellProperties,
+ aRowProperties,
+ aTableInfo.aTableProperties );
m_xTableRange = xTable->getAnchor( );
}
diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.hxx b/writerfilter/source/dmapper/DomainMapperTableHandler.hxx
index 8a13782..b82e748 100644
--- a/writerfilter/source/dmapper/DomainMapperTableHandler.hxx
+++ b/writerfilter/source/dmapper/DomainMapperTableHandler.hxx
@@ -54,6 +54,38 @@ class TableStyleSheetEntry;
struct TableInfo;
class DomainMapperTableHandler : public TableDataHandler<Handle_t , TablePropertyMapPtr >
{
+public:
+ typedef boost::shared_ptr<DomainMapperTableHandler> Pointer_t;
+
+ DomainMapperTableHandler(TextReference_t xText, DomainMapper_Impl& rDMapper_Impl);
+ virtual ~DomainMapperTableHandler();
+
+ virtual void startTable(
+ unsigned int nRows,
+ unsigned int nDepth,
+ TablePropertyMapPtr pProps );
+
+ virtual void endTable(
+ const unsigned int nDepth );
+
+ virtual void startRow(
+ unsigned int nCells,
+ TablePropertyMapPtr pProps );
+
+ virtual void endRow();
+
+ virtual void startCell(
+ const Handle_t & start,
+ TablePropertyMapPtr pProps );
+
+ virtual void endCell( const Handle_t & end );
+
+ virtual Handle_t* getTable( )
+ {
+ return &m_xTableRange;
+ };
+
+private:
TextReference_t m_xText;
DomainMapper_Impl& m_rDMapper_Impl;
CellSequencePointer_t m_pCellSeq;
@@ -70,28 +102,13 @@ class DomainMapperTableHandler : public TableDataHandler<Handle_t , TablePropert
sal_Int32 m_nCellIndex;
sal_Int32 m_nRowIndex;
- TableStyleSheetEntry * endTableGetTableStyle(TableInfo & rInfo);
- CellPropertyValuesSeq_t endTableGetCellProperties(TableInfo & rInfo);
- RowPropertyValuesSeq_t endTableGetRowProperties();
-
-public:
- typedef boost::shared_ptr<DomainMapperTableHandler> Pointer_t;
-
- DomainMapperTableHandler(TextReference_t xText, DomainMapper_Impl& rDMapper_Impl);
- virtual ~DomainMapperTableHandler();
+ TableStyleSheetEntry * endTableGetTableStyle(
+ TableInfo & rInfo,
+ const bool bAdjustLeftMarginByDefaultValue );
- virtual void startTable(unsigned int nRows, unsigned int nDepth,
- TablePropertyMapPtr pProps);
- virtual void endTable();
- virtual void startRow(unsigned int nCells, TablePropertyMapPtr pProps);
- virtual void endRow();
- virtual void startCell(const Handle_t & start, TablePropertyMapPtr pProps);
- virtual void endCell(const Handle_t & end);
+ CellPropertyValuesSeq_t endTableGetCellProperties(TableInfo & rInfo);
- virtual Handle_t* getTable( )
- {
- return &m_xTableRange;
- };
+ RowPropertyValuesSeq_t endTableGetRowProperties();
};
}}
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.cxx b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
index ee10b17..bc23e69 100644
--- a/writerfilter/source/dmapper/DomainMapperTableManager.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
@@ -45,12 +45,11 @@ using namespace ::std;
-----------------------------------------------------------------------*/
DomainMapperTableManager::DomainMapperTableManager(bool bOOXML) :
- m_nRow(0),
- m_nCell(0),
- m_nGridSpan(1),
- m_nCellBorderIndex(0),
- m_nHeaderRepeat(0),
- m_nTableWidth(0),
+ m_nCellCounterForCurrentRow(),
+ m_nGridSpanOfCurrentCell( 1 ),
+ m_nCurrentCellBorderIndex(),
+ m_nCurrentHeaderRepeatCount(),
+ m_nTableWidthOfCurrentTable(),
m_bOOXML( bOOXML ),
m_pTablePropsHandler( new TablePropertiesHandler( bOOXML ) )
{
@@ -117,9 +116,9 @@ bool DomainMapperTableManager::sprm(Sprm & rSprm)
}
else
{
- m_nTableWidth = pMeasureHandler->getMeasureValue();
- if( m_nTableWidth )
- pPropMap->setValue( TablePropertyMap::TABLE_WIDTH, m_nTableWidth );
+ m_nTableWidthOfCurrentTable.top() = pMeasureHandler->getMeasureValue();
+ if( m_nTableWidthOfCurrentTable.top() > 0 )
+ pPropMap->setValue( TablePropertyMap::TABLE_WIDTH, m_nTableWidthOfCurrentTable.top() );
}
#ifdef DEBUG_DOMAINMAPPER
dmapper_logger->addTag(pPropMap->toTag());
@@ -133,15 +132,15 @@ bool DomainMapperTableManager::sprm(Sprm & rSprm)
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
// if nIntValue == 1 then the row is a repeated header line
// to prevent later rows from increasing the repeating m_nHeaderRepeat is set to NULL when repeating stops
- if( nIntValue > 0 && m_nHeaderRepeat >= 0 )
+ if( nIntValue > 0 && m_nCurrentHeaderRepeatCount.top() >= 0 )
{
- ++m_nHeaderRepeat;
+ ++(m_nCurrentHeaderRepeatCount.top());
TablePropertyMapPtr pPropMap( new TablePropertyMap );
- pPropMap->Insert( PROP_HEADER_ROW_COUNT, false, uno::makeAny( m_nHeaderRepeat ));
+ pPropMap->Insert( PROP_HEADER_ROW_COUNT, false, uno::makeAny( m_nCurrentHeaderRepeatCount.top() ));
insertTableProps(pPropMap);
}
else
- m_nHeaderRepeat = -1;
+ m_nCurrentHeaderRepeatCount.top() = -1;
break;
case 0xd608: // TDefTable
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
@@ -155,13 +154,13 @@ bool DomainMapperTableManager::sprm(Sprm & rSprm)
TablePropertyMapPtr pRowPropMap( new TablePropertyMap );
pRowPropMap->insert( pTDefTableHandler->getRowProperties() );
insertRowProps( pRowPropMap );
- if( !m_nTableWidth )
+ if( m_nTableWidthOfCurrentTable.top() == 0 )
{
- m_nTableWidth= pTDefTableHandler->getTableWidth();
- if( m_nTableWidth )
+ m_nTableWidthOfCurrentTable.top() = pTDefTableHandler->getTableWidth();
+ if( m_nTableWidthOfCurrentTable.top() > 0 )
{
TablePropertyMapPtr pPropMap( new TablePropertyMap );
- pPropMap->setValue( TablePropertyMap::TABLE_WIDTH, m_nTableWidth );
+ pPropMap->setValue( TablePropertyMap::TABLE_WIDTH, m_nTableWidthOfCurrentTable.top() );
insertTableProps(pPropMap);
}
}
@@ -184,8 +183,8 @@ bool DomainMapperTableManager::sprm(Sprm & rSprm)
pProperties->resolve(*pBorderHandler);
TablePropertyMapPtr pCellPropMap( new TablePropertyMap() );
pCellPropMap->insert( pBorderHandler->getProperties() );
- cellPropsByCell( m_nCellBorderIndex, pCellPropMap );
- ++m_nCellBorderIndex;
+ cellPropsByCell( m_nCurrentCellBorderIndex.top(), pCellPropMap );
+ ++(m_nCurrentCellBorderIndex.top());
}
}
break;
@@ -229,9 +228,8 @@ bool DomainMapperTableManager::sprm(Sprm & rSprm)
case NS_ooxml::LN_CT_TblPrBase_tblStyle: //table style name
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
{
- m_sTableStyleName = pValue->getString();
TablePropertyMapPtr pPropMap( new TablePropertyMap );
- pPropMap->Insert( META_PROP_TABLE_STYLE_NAME, false, uno::makeAny( m_sTableStyleName ));
+ pPropMap->Insert( META_PROP_TABLE_STYLE_NAME, false, uno::makeAny( pValue->getString() ));
insertTableProps(pPropMap);
}
break;
@@ -258,7 +256,7 @@ bool DomainMapperTableManager::sprm(Sprm & rSprm)
dmapper_logger->attribute("gridSpan", nIntValue);
dmapper_logger->endElement("tablemanager.GridSpan");
#endif
- m_nGridSpan = nIntValue;
+ m_nGridSpanOfCurrentCell = nIntValue;
}
break;
case NS_ooxml::LN_CT_TblPrBase_tblLook:
@@ -298,34 +296,42 @@ bool DomainMapperTableManager::sprm(Sprm & rSprm)
return bRet;
}
-boost::shared_ptr< vector<sal_Int32> > DomainMapperTableManager::getCurrentGrid( )
+boost::shared_ptr< vector<sal_Int32> > DomainMapperTableManager::getCurrentGrid()
{
- return m_aTableGrid.back( );
+ return m_aTableGrid.top();
}
-boost::shared_ptr< vector< sal_Int32 > > DomainMapperTableManager::getCurrentSpans( )
+boost::shared_ptr< vector< sal_Int32 > > DomainMapperTableManager::getCurrentSpans()
{
- return m_aGridSpans.back( );
+ return m_aGridSpans.top();
}
-void DomainMapperTableManager::startLevel( )
+void DomainMapperTableManager::startLevel()
{
- DomainMapperTableManager_Base_t::startLevel( );
+ DomainMapperTableManager_Base_t::startLevel();
+
+ m_nCellCounterForCurrentRow.push( 0 );
+ m_nCurrentCellBorderIndex.push( 0 );
+ m_nCurrentHeaderRepeatCount.push( 0 );
+ m_nTableWidthOfCurrentTable.push( 0 );
IntVectorPtr pNewGrid( new vector<sal_Int32> );
IntVectorPtr pNewSpans( new vector<sal_Int32> );
- m_aTableGrid.push_back( pNewGrid );
- m_aGridSpans.push_back( pNewSpans );
- m_nTableWidth = 0;
+ m_aTableGrid.push( pNewGrid );
+ m_aGridSpans.push( pNewSpans );
}
-void DomainMapperTableManager::endLevel( )
+void DomainMapperTableManager::endLevel()
{
- m_aTableGrid.pop_back( );
- m_aGridSpans.pop_back( );
- m_nTableWidth = 0;
+ m_nCellCounterForCurrentRow.pop();
+ m_nCurrentCellBorderIndex.pop();
+ m_nCurrentHeaderRepeatCount.pop();
+ m_nTableWidthOfCurrentTable.pop();
+
+ m_aTableGrid.pop();
+ m_aGridSpans.pop();
- DomainMapperTableManager_Base_t::endLevel( );
+ DomainMapperTableManager_Base_t::endLevel();
#ifdef DEBUG_DOMAINMAPPER
dmapper_logger->startElement("dmappertablemanager.endLevel");
PropertyMapPtr pProps = getTableProps();
@@ -345,9 +351,9 @@ void DomainMapperTableManager::endOfCellAction()
dmapper_logger->element("endOFCellAction");
#endif
- getCurrentSpans()->push_back(m_nGridSpan);
- m_nGridSpan = 1;
- ++m_nCell;
+ getCurrentSpans()->push_back( m_nGridSpanOfCurrentCell );
+ m_nGridSpanOfCurrentCell = 1;
+ ++(m_nCellCounterForCurrentRow.top());
}
/*-- 02.05.2007 14:36:26---------------------------------------------------
@@ -359,7 +365,8 @@ void DomainMapperTableManager::endOfRowAction()
#endif
IntVectorPtr pTableGrid = getCurrentGrid( );
- if(!m_nTableWidth && pTableGrid->size())
+ if( m_nTableWidthOfCurrentTable.top() == 0
+ && pTableGrid->size() > 0 )
{
::std::vector<sal_Int32>::const_iterator aCellIter = pTableGrid->begin();
@@ -375,14 +382,14 @@ void DomainMapperTableManager::endOfRowAction()
dmapper_logger->endElement("col");
#endif
- m_nTableWidth += *aCellIter++;
+ m_nTableWidthOfCurrentTable.top() += *aCellIter++;
}
- if( m_nTableWidth > 0)
+ if( m_nTableWidthOfCurrentTable.top() > 0)
{
TablePropertyMapPtr pPropMap( new TablePropertyMap );
// pPropMap->Insert( PROP_WIDTH, false, uno::makeAny( m_nTableWidth ));
- pPropMap->setValue( TablePropertyMap::TABLE_WIDTH, m_nTableWidth );
+ pPropMap->setValue( TablePropertyMap::TABLE_WIDTH, m_nTableWidthOfCurrentTable.top() );
insertTableProps(pPropMap);
}
@@ -392,10 +399,10 @@ void DomainMapperTableManager::endOfRowAction()
}
IntVectorPtr pCurrentSpans = getCurrentSpans( );
- if( pCurrentSpans->size() < m_nCell)
+ if( pCurrentSpans->size() < m_nCellCounterForCurrentRow.top() )
{
//fill missing elements with '1'
- pCurrentSpans->insert( pCurrentSpans->end( ), m_nCell - pCurrentSpans->size(), 1 );
+ pCurrentSpans->insert( pCurrentSpans->end( ), m_nCellCounterForCurrentRow.top() - pCurrentSpans->size(), 1 );
}
#ifdef DEBUG_DOMAINMAPPER
@@ -425,16 +432,16 @@ void DomainMapperTableManager::endOfRowAction()
if( pTableGrid->size() == nGrids )
{
//determine table width
- double nFullWidth = m_nTableWidth;
+ double nFullWidth = m_nTableWidthOfCurrentTable.top();
//the positions have to be distibuted in a range of 10000
const double nFullWidthRelative = 10000.;
- uno::Sequence< text::TableColumnSeparator > aSeparators( m_nCell - 1 );
+ uno::Sequence< text::TableColumnSeparator > aSeparators( m_nCellCounterForCurrentRow.top() - 1 );
text::TableColumnSeparator* pSeparators = aSeparators.getArray();
sal_Int16 nLastRelPos = 0;
sal_uInt32 nBorderGridIndex = 0;
::std::vector< sal_Int32 >::const_iterator aSpansIter = pCurrentSpans->begin( );
- for( sal_uInt32 nBorder = 0; nBorder < m_nCell - 1; ++nBorder )
+ for( sal_uInt32 nBorder = 0; nBorder < m_nCellCounterForCurrentRow.top() - 1; ++nBorder )
{
sal_Int32 nGridCount = *aSpansIter;
double fGridWidth = 0.;
@@ -462,62 +469,14 @@ void DomainMapperTableManager::endOfRowAction()
insertRowProps(pPropMap);
}
- ++m_nRow;
- m_nCell = 0;
- m_nCellBorderIndex = 0;
+ m_nCellCounterForCurrentRow.top() = 0;
+ m_nCurrentCellBorderIndex.top() = 0;
pCurrentSpans->clear();
#ifdef DEBUG_DOMAINMAPPER
dmapper_logger->endElement("endOfRowAction");
#endif
}
-/*-- 18.06.2007 10:34:37---------------------------------------------------
-
- -----------------------------------------------------------------------*/
-void DomainMapperTableManager::clearData()
-{
- m_nRow = m_nCell = m_nCellBorderIndex = m_nHeaderRepeat = m_nTableWidth = 0;
- m_sTableStyleName = ::rtl::OUString();
- m_pTableStyleTextProperies.reset();
-}
-/*-- 27.06.2007 14:19:50---------------------------------------------------
-
- -----------------------------------------------------------------------*/
-void lcl_CopyTextProperties(PropertyMapPtr pToFill,
- const StyleSheetEntry* pStyleSheetEntry, StyleSheetTablePtr pStyleSheetTable)
-{
- if( !pStyleSheetEntry )
- return;
- //fill base style properties first, recursively
- if( pStyleSheetEntry->sBaseStyleIdentifier.getLength())
- {
- const StyleSheetEntryPtr pParentStyleSheet =
- pStyleSheetTable->FindStyleSheetByISTD(pStyleSheetEntry->sBaseStyleIdentifier);
- OSL_ENSURE( pParentStyleSheet, "table style not found" );
- lcl_CopyTextProperties( pToFill, pParentStyleSheet.get( ), pStyleSheetTable);
- }
-
- PropertyMap::const_iterator aPropIter = pStyleSheetEntry->pProperties->begin();
- while(aPropIter != pStyleSheetEntry->pProperties->end())
- {
- //copy all text properties form the table style to the current run attributes
- if( aPropIter->first.bIsTextProperty )
- pToFill->insert(*aPropIter);
- ++aPropIter;
- }
-}
-void DomainMapperTableManager::CopyTextProperties(PropertyMapPtr pContext, StyleSheetTablePtr pStyleSheetTable)
-{
- if( !m_pTableStyleTextProperies.get())
- {
- m_pTableStyleTextProperies.reset( new PropertyMap );
- const StyleSheetEntryPtr pStyleSheetEntry = pStyleSheetTable->FindStyleSheetByISTD(
- m_sTableStyleName);
- OSL_ENSURE( pStyleSheetEntry, "table style not found" );
- lcl_CopyTextProperties(m_pTableStyleTextProperies, pStyleSheetEntry.get( ), pStyleSheetTable);
- }
- pContext->insert( m_pTableStyleTextProperies );
-}
}}
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.hxx b/writerfilter/source/dmapper/DomainMapperTableManager.hxx
index ecefdfc..520fb60 100644
--- a/writerfilter/source/dmapper/DomainMapperTableManager.hxx
+++ b/writerfilter/source/dmapper/DomainMapperTableManager.hxx
@@ -30,6 +30,7 @@
#include <StyleSheetTable.hxx>
#include <com/sun/star/text/XTextRange.hpp>
#include <vector>
+#include <stack>
namespace writerfilter {
namespace dmapper {
@@ -38,24 +39,19 @@ class DomainMapperTableManager : public DomainMapperTableManager_Base_t
{
typedef boost::shared_ptr< std::vector<sal_Int32> > IntVectorPtr;
- sal_uInt32 m_nRow;
- sal_uInt32 m_nCell;
- sal_uInt32 m_nGridSpan;
- sal_uInt32 m_nCellBorderIndex; //borders are provided for all cells and need counting
- sal_Int32 m_nHeaderRepeat; //counter of repeated headers - if == -1 then the repeating stops
- sal_Int32 m_nTableWidth; //might be set directly or has to be calculated from the column positions
+ ::std::stack< sal_uInt32 > m_nCellCounterForCurrentRow;
+ sal_uInt32 m_nGridSpanOfCurrentCell;
+ ::std::stack< sal_uInt32 > m_nCurrentCellBorderIndex; //borders are provided for all cells and need counting
+ ::std::stack< sal_Int32 > m_nCurrentHeaderRepeatCount; //counter of repeated headers - if == -1 then the repeating stops
+ ::std::stack< sal_Int32 > m_nTableWidthOfCurrentTable; //might be set directly or has to be calculated from the column positions
bool m_bOOXML;
- ::rtl::OUString m_sTableStyleName;
- PropertyMapPtr m_pTableStyleTextProperies;
- ::std::vector< IntVectorPtr > m_aTableGrid;
- ::std::vector< IntVectorPtr > m_aGridSpans;
+ ::std::stack< IntVectorPtr > m_aTableGrid;
+ ::std::stack< IntVectorPtr > m_aGridSpans;
TablePropertiesHandler *m_pTablePropsHandler;
PropertyMapPtr m_pStyleProps;
- virtual void clearData();
-
public:
DomainMapperTableManager(bool bOOXML);
@@ -67,19 +63,15 @@ public:
virtual bool sprm(Sprm & rSprm);
- virtual void startLevel( );
- virtual void endLevel( );
+ virtual void startLevel();
+ virtual void endLevel();
virtual void endOfCellAction();
virtual void endOfRowAction();
- IntVectorPtr getCurrentGrid( );
+ IntVectorPtr getCurrentGrid();
IntVectorPtr getCurrentSpans( );
- const ::rtl::OUString& getTableStyleName() const { return m_sTableStyleName; }
- /// copy the text properties of the table style and its parent into pContext
- void CopyTextProperties(PropertyMapPtr pContext, StyleSheetTablePtr pStyleSheetTable);
-
inline virtual void cellProps(TablePropertyMapPtr pProps)
{
if ( m_pStyleProps.get( ) )
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index eab3b0b..95ebf70 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -161,18 +161,15 @@ DomainMapper_Impl::DomainMapper_Impl(
uno::Reference< text::XTextAppendAndConvert > xBodyTextAppendAndConvert( m_xBodyText, uno::UNO_QUERY );
TableDataHandler_t::Pointer_t pTableHandler
(new DomainMapperTableHandler(xBodyTextAppendAndConvert, *this));
- getTableManager( ).setHandler(pTableHandler);
-
- getTableManager( ).startLevel();
+ getTableManager().setHandler(pTableHandler);
}
/*-- 01.09.2006 10:22:28---------------------------------------------------
-----------------------------------------------------------------------*/
DomainMapper_Impl::~DomainMapper_Impl()
{
- RemoveLastParagraph( );
- getTableManager( ).endLevel();
- popTableManager( );
+ RemoveLastParagraph();
+ popTableManager();
}
/*-------------------------------------------------------------------------
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index 9e3774f..314d772 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -566,7 +566,7 @@ public:
return *pMngr.get( );
}
- void appendTableManager( )
+ void appendTableManager()
{
boost::shared_ptr< DomainMapperTableManager > pMngr(
new DomainMapperTableManager( m_eDocumentType == DOCUMENT_OOXML ) );
diff --git a/writerfilter/source/dmapper/TablePropertiesHandler.cxx b/writerfilter/source/dmapper/TablePropertiesHandler.cxx
index fa88db5..eae1def 100644
--- a/writerfilter/source/dmapper/TablePropertiesHandler.cxx
+++ b/writerfilter/source/dmapper/TablePropertiesHandler.cxx
@@ -247,6 +247,7 @@ namespace dmapper {
if (pProperties.get())
{
MeasureHandlerPtr pHandler(new MeasureHandler);
+ pProperties->resolve(*pHandler);
TablePropertyMapPtr pTblIndMap(new TablePropertyMap);
sal_uInt32 nTblInd = pHandler->getMeasureValue();
pTblIndMap->setValue( TablePropertyMap::LEFT_MARGIN, nTblInd);
diff --git a/writerfilter/source/doctok/WW8ResourceModelImpl.cxx b/writerfilter/source/doctok/WW8ResourceModelImpl.cxx
index 4fc94f0..2e8a126 100644
--- a/writerfilter/source/doctok/WW8ResourceModelImpl.cxx
+++ b/writerfilter/source/doctok/WW8ResourceModelImpl.cxx
@@ -44,9 +44,12 @@ class WW8TableDataHandler : public TableDataHandler<string,
{
public:
typedef boost::shared_ptr<WW8TableDataHandler> Pointer_t;
- virtual void startTable(unsigned int nRows, unsigned int nDepth,
- TablePropsPointer_t pProps);
- virtual void endTable();
+ virtual void startTable(
+ unsigned int nRows,
+ unsigned int nDepth,
+ TablePropsPointer_t pProps );
+ virtual void endTable(
+ const unsigned int nDepth );
virtual void startRow(unsigned int nCols,
TablePropsPointer_t pProps);
virtual void endRow();
@@ -70,7 +73,8 @@ void WW8TableDataHandler::startTable(unsigned int nRows, unsigned int nDepth,
output.addItem(tmpStr);
}
-void WW8TableDataHandler::endTable()
+void WW8TableDataHandler::endTable(
+ const unsigned int /*nTableDepth*/ )
{
output.addItem("</tabledata.table>");
}
diff --git a/writerfilter/source/resourcemodel/resourcemodel.cxx b/writerfilter/source/resourcemodel/resourcemodel.cxx
index a2f1664..4e56bdc 100644
--- a/writerfilter/source/resourcemodel/resourcemodel.cxx
+++ b/writerfilter/source/resourcemodel/resourcemodel.cxx
@@ -103,7 +103,8 @@ public:
typedef boost::shared_ptr<WW8TableDataHandler> Pointer_t;
virtual void startTable(unsigned int nRows, unsigned int nDepth,
TablePropsRef_t pProps);
- virtual void endTable();
+ virtual void endTable(
+ const unsigned int nDepth );
virtual void startRow(unsigned int nCols,
TablePropsRef_t pProps);
virtual void endRow();
@@ -127,7 +128,8 @@ void WW8TableDataHandler::startTable(unsigned int nRows, unsigned int nDepth,
output.addItem(tmpStr);
}
-void WW8TableDataHandler::endTable()
+void WW8TableDataHandler::endTable(
+ const unsigned int /*nDepth*/ )
{
output.addItem("</tabledata.table>");
}
More information about the Libreoffice-commits
mailing list