2007-04-11 12:31:05 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-10 20:10:05 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2007-04-11 12:31:05 +00:00
|
|
|
*
|
2008-04-10 20:10:05 +00:00
|
|
|
* Copyright 2008 by Sun Microsystems, Inc.
|
2007-04-11 12:31:05 +00:00
|
|
|
*
|
2008-04-10 20:10:05 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2007-04-11 12:31:05 +00:00
|
|
|
*
|
2008-04-10 20:10:05 +00:00
|
|
|
* $RCSfile: xmlaustp.hxx,v $
|
|
|
|
* $Revision: 1.3 $
|
2007-04-11 12:31:05 +00:00
|
|
|
*
|
2008-04-10 20:10:05 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2007-04-11 12:31:05 +00:00
|
|
|
*
|
2008-04-10 20:10:05 +00:00
|
|
|
* 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.
|
2007-04-11 12:31:05 +00:00
|
|
|
*
|
2008-04-10 20:10:05 +00:00
|
|
|
* 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).
|
2007-04-11 12:31:05 +00:00
|
|
|
*
|
2008-04-10 20:10:05 +00:00
|
|
|
* 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.
|
2007-04-11 12:31:05 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
|
|
|
#ifndef _XMLOFF_XMLASTPLP_HXX
|
|
|
|
#define _XMLOFF_XMLASTPLP_HXX
|
|
|
|
|
|
|
|
#include "sal/config.h"
|
|
|
|
#include "xmloff/dllapi.h"
|
|
|
|
#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
|
|
|
|
#include <xmloff/xmlprmap.hxx>
|
|
|
|
#include <xmloff/uniref.hxx>
|
|
|
|
|
|
|
|
class SvXMLExportPropertyMapper;
|
|
|
|
class SvXMLNamespaceMap;
|
|
|
|
class SvXMLAutoStylePoolP_Impl;
|
|
|
|
class SvXMLAttributeList;
|
|
|
|
class SvXMLExport;
|
|
|
|
namespace com { namespace sun { namespace star { namespace uno
|
|
|
|
{ template<typename A> class Sequence; }
|
|
|
|
} } }
|
|
|
|
|
|
|
|
class XMLOFF_DLLPUBLIC SvXMLAutoStylePoolP : public UniRefBase
|
|
|
|
{
|
|
|
|
friend class SvXMLAutoStylePoolP_Impl;
|
|
|
|
|
|
|
|
SvXMLAutoStylePoolP_Impl *pImpl;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
virtual void exportStyleAttributes(
|
|
|
|
SvXMLAttributeList& rAttrList,
|
|
|
|
sal_Int32 nFamily,
|
|
|
|
const ::std::vector< XMLPropertyState >& rProperties,
|
|
|
|
const SvXMLExportPropertyMapper& rPropExp
|
|
|
|
, const SvXMLUnitConverter& rUnitConverter,
|
|
|
|
const SvXMLNamespaceMap& rNamespaceMap
|
|
|
|
) const;
|
|
|
|
|
|
|
|
// this methode is executed after Properties Export, so you can e.g. export a map or so on
|
|
|
|
virtual void exportStyleContent(
|
|
|
|
const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > & rHandler,
|
|
|
|
sal_Int32 nFamily,
|
|
|
|
const ::std::vector< XMLPropertyState >& rProperties,
|
|
|
|
const SvXMLExportPropertyMapper& rPropExp
|
|
|
|
, const SvXMLUnitConverter& rUnitConverter,
|
|
|
|
const SvXMLNamespaceMap& rNamespaceMap
|
|
|
|
) const;
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
SvXMLAutoStylePoolP( SvXMLExport& rExport);
|
|
|
|
|
|
|
|
SvXMLAutoStylePoolP();
|
|
|
|
virtual ~SvXMLAutoStylePoolP();
|
|
|
|
|
|
|
|
SvXMLExport& GetExport() const;
|
|
|
|
|
|
|
|
/** register a new family with its appropriate instance of a derivation of XMLPropertySetMapper
|
|
|
|
for family numbers see families.hxx
|
|
|
|
if bAsFamily is sal_False, the family name is used as element name
|
|
|
|
*/
|
|
|
|
// TODO: Remove this ugly method as soon as possible
|
|
|
|
void AddFamily( sal_Int32 nFamily, const ::rtl::OUString& rStrName, SvXMLExportPropertyMapper* pMapper, ::rtl::OUString aStrPrefix, sal_Bool bAsFamily = sal_True );
|
|
|
|
void AddFamily( sal_Int32 nFamily, const ::rtl::OUString& rStrName,
|
|
|
|
const UniReference< SvXMLExportPropertyMapper >& rMapper,
|
|
|
|
const ::rtl::OUString& rStrPrefix, sal_Bool bAsFamily = sal_True );
|
|
|
|
|
|
|
|
/// Register a name that must not be used as a generated name.
|
|
|
|
void RegisterName( sal_Int32 nFamily, const ::rtl::OUString& rName );
|
|
|
|
|
|
|
|
/// retrieve the registered names (names + families)
|
|
|
|
void GetRegisteredNames(
|
|
|
|
com::sun::star::uno::Sequence<sal_Int32>& aFamilies,
|
|
|
|
com::sun::star::uno::Sequence<rtl::OUString>& aNames );
|
|
|
|
|
|
|
|
/// register (families + names)
|
|
|
|
void RegisterNames(
|
|
|
|
com::sun::star::uno::Sequence<sal_Int32>& aFamilies,
|
|
|
|
com::sun::star::uno::Sequence<rtl::OUString>& aNames );
|
|
|
|
|
|
|
|
/// Add an item set to the pool and return its generated name.
|
|
|
|
::rtl::OUString Add( sal_Int32 nFamily, const ::std::vector< XMLPropertyState >& rProperties );
|
|
|
|
::rtl::OUString Add( sal_Int32 nFamily, const ::rtl::OUString& rParent, const ::std::vector< XMLPropertyState >& rProperties, bool bDontSeek = false );
|
|
|
|
sal_Bool Add( ::rtl::OUString& rName, sal_Int32 nFamily, const ::std::vector< XMLPropertyState >& rProperties );
|
|
|
|
sal_Bool Add( ::rtl::OUString& rName, sal_Int32 nFamily, const ::rtl::OUString& rParent, const ::std::vector< XMLPropertyState >& rProperties );
|
|
|
|
|
|
|
|
/// Find an item set's name.
|
|
|
|
::rtl::OUString Find( sal_Int32 nFamily, const ::std::vector< XMLPropertyState >& rProperties ) const;
|
|
|
|
::rtl::OUString Find( sal_Int32 nFamily, const ::rtl::OUString& rParent, const ::std::vector< XMLPropertyState >& rProperties ) const;
|
|
|
|
|
|
|
|
// Add a property set to the pool and cache its name.
|
|
|
|
::rtl::OUString AddAndCache( sal_Int32 nFamily, const ::std::vector< XMLPropertyState >& rProperties );
|
|
|
|
::rtl::OUString AddAndCache( sal_Int32 nFamily, const ::rtl::OUString& rParent, const ::std::vector< XMLPropertyState >& rProperties );
|
|
|
|
::rtl::OUString AddAndCache( sal_Int32 nFamily, const ::rtl::OUString& rParent );
|
|
|
|
|
|
|
|
::rtl::OUString FindAndRemoveCached( sal_Int32 nFamily ) const;
|
|
|
|
|
|
|
|
/** Export all item sets ofs a certain class in the order in that they have been added. */
|
|
|
|
void exportXML( sal_Int32 nFamily
|
|
|
|
, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > & rHandler,
|
|
|
|
const SvXMLUnitConverter& rUnitConverter,
|
|
|
|
const SvXMLNamespaceMap& rNamespaceMap
|
|
|
|
) const;
|
|
|
|
|
|
|
|
void ClearEntries();
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // _XMLOFF_XMLASTPLP_HXX
|