diff options
Diffstat (limited to 'writerfilter/source/dmapper/DomainMapperTableManager.hxx')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapperTableManager.hxx | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.hxx b/writerfilter/source/dmapper/DomainMapperTableManager.hxx new file mode 100644 index 000000000000..6b20f026b725 --- /dev/null +++ b/writerfilter/source/dmapper/DomainMapperTableManager.hxx @@ -0,0 +1,126 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef INCLUDED_DOMAIN_MAPPER_TABLE_MANAGER_HXX +#define INCLUDED_DOMAIN_MAPPER_TABLE_MANAGER_HXX + +#include "TablePropertiesHandler.hxx" + +#include <resourcemodel/TableManager.hxx> +#include <PropertyMap.hxx> +#include <StyleSheetTable.hxx> +#include <com/sun/star/text/XTextRange.hpp> +#include <vector> + +namespace writerfilter { +namespace dmapper { + +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 + bool m_bOOXML; + ::rtl::OUString m_sTableStyleName; + PropertyMapPtr m_pTableStyleTextProperies; + + ::std::vector< IntVectorPtr > m_aTableGrid; + ::std::vector< IntVectorPtr > m_aGridSpans; + + TablePropertiesHandler *m_pTablePropsHandler; + PropertyMapPtr m_pStyleProps; + + virtual void clearData(); + +public: + + DomainMapperTableManager(bool bOOXML); + virtual ~DomainMapperTableManager(); + + // use this method to avoid adding the properties for the table + // but in the provided properties map. + inline void SetStyleProperties( PropertyMapPtr pProperties ) { m_pStyleProps = pProperties; }; + + virtual bool sprm(Sprm & rSprm); + + virtual void startLevel( ); + virtual void endLevel( ); + + virtual void endOfCellAction(); + virtual void endOfRowAction(); + + 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( ) ) + m_pStyleProps->insert( pProps, true ); + else + DomainMapperTableManager_Base_t::cellProps( pProps ); + }; + + inline virtual void cellPropsByCell(unsigned int i, TablePropertyMapPtr pProps) + { + if ( m_pStyleProps.get( ) ) + m_pStyleProps->insert( pProps, true ); + else + DomainMapperTableManager_Base_t::cellPropsByCell( i, pProps ); + }; + + inline virtual void insertRowProps(TablePropertyMapPtr pProps) + { + if ( m_pStyleProps.get( ) ) + m_pStyleProps->insert( pProps, true ); + else + DomainMapperTableManager_Base_t::insertRowProps( pProps ); + }; + + inline virtual void insertTableProps(TablePropertyMapPtr pProps) + { + if ( m_pStyleProps.get( ) ) + m_pStyleProps->insert( pProps, true ); + else + DomainMapperTableManager_Base_t::insertTableProps( pProps ); + }; + +}; + +}} + +#endif // INCLUDED_DOMAIN_MAPPER_TABLE_MANAGER_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |