summaryrefslogtreecommitdiff
path: root/xmloff
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2013-09-16 16:03:32 +0300
committerTor Lillqvist <tml@collabora.com>2013-09-16 18:32:36 +0300
commit69f08eda0bd999c827c76d3bf0b9c925b7eb25f7 (patch)
tree6122c62941f2f1e62ba4dbb46afcc07f2882dd01 /xmloff
parent2770de8b66e2f2a628ad0b6b00a66002c26b3cd7 (diff)
Insert impastp4.cxx into impastpl.cxx
Change-Id: Iccd059e2d09666775f8391a1ac2a074518a5c111
Diffstat (limited to 'xmloff')
-rw-r--r--xmloff/Library_xo.mk1
-rw-r--r--xmloff/source/style/impastp4.cxx404
-rw-r--r--xmloff/source/style/impastpl.cxx381
3 files changed, 380 insertions, 406 deletions
diff --git a/xmloff/Library_xo.mk b/xmloff/Library_xo.mk
index d2d52a7d629f..b72172b8cb3a 100644
--- a/xmloff/Library_xo.mk
+++ b/xmloff/Library_xo.mk
@@ -247,7 +247,6 @@ $(eval $(call gb_Library_add_exception_objects,xo,\
xmloff/source/style/escphdl \
xmloff/source/style/fonthdl \
xmloff/source/style/impastpl \
- xmloff/source/style/impastp4 \
xmloff/source/style/kernihdl \
xmloff/source/style/lspachdl \
xmloff/source/style/numehelp \
diff --git a/xmloff/source/style/impastp4.cxx b/xmloff/source/style/impastp4.cxx
deleted file mode 100644
index 8aa7214d747a..000000000000
--- a/xmloff/source/style/impastp4.cxx
+++ /dev/null
@@ -1,404 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include <tools/debug.hxx>
-#include <xmloff/xmlaustp.hxx>
-#include <xmloff/xmltoken.hxx>
-#include <xmloff/nmspmap.hxx>
-#include "xmloff/xmlnmspe.hxx"
-#include <xmloff/attrlist.hxx>
-#include "impastpl.hxx"
-#include <xmloff/xmlexppr.hxx>
-#include <xmloff/xmlexp.hxx>
-#include <xmloff/families.hxx>
-#include <xmloff/PageMasterStyleMap.hxx>
-
-using namespace ::std;
-
-using namespace ::com::sun::star;
-using namespace ::xmloff::token;
-
-// Class SvXMLAutoStylePool_Impl
-// ctor/dtor class SvXMLAutoStylePool_Impl
-
-SvXMLAutoStylePoolP_Impl::SvXMLAutoStylePoolP_Impl( SvXMLExport& rExp)
- : rExport( rExp )
-{
-}
-
-SvXMLAutoStylePoolP_Impl::~SvXMLAutoStylePoolP_Impl()
-{
-}
-
-// Adds stylefamily-information to sorted list
-
-void SvXMLAutoStylePoolP_Impl::AddFamily(
- sal_Int32 nFamily,
- const OUString& rStrName,
- const UniReference < SvXMLExportPropertyMapper > & rMapper,
- const OUString& rStrPrefix,
- sal_Bool bAsFamily )
-{
- // store family in a list if not already stored
- sal_uInt16 nExportFlags = GetExport().getExportFlags();
- sal_Bool bStylesOnly = (nExportFlags & EXPORT_STYLES) != 0 && (nExportFlags & EXPORT_CONTENT) == 0;
-
- OUString aPrefix( rStrPrefix );
- if( bStylesOnly )
- {
- aPrefix = OUString( 'M' );
- aPrefix += rStrPrefix;
- }
-
-#if OSL_DEBUG_LEVEL > 0
- XMLAutoStyleFamily aTemporary( nFamily );
- FamilyListType::iterator aFind = maFamilyList.find(aTemporary);
- if( aFind != maFamilyList.end() )
- {
- // FIXME: do we really intend to replace the previous nFamily
- // entry in this case ?
- SAL_WARN_IF( aFind->mxMapper != rMapper, "xmloff",
- "Adding duplicate family " << rStrName <<
- " with mismatching mapper ! " <<
- typeid(*aFind->mxMapper.get()).name() << " " <<
- typeid(*rMapper.get()).name() );
- }
-#endif
-
- XMLAutoStyleFamily *pFamily = new XMLAutoStyleFamily( nFamily, rStrName, rMapper, aPrefix, bAsFamily );
- maFamilyList.insert(pFamily);
-}
-
-void SvXMLAutoStylePoolP_Impl::SetFamilyPropSetMapper(
- sal_Int32 nFamily,
- const UniReference < SvXMLExportPropertyMapper > & rMapper )
-{
-
- XMLAutoStyleFamily aTemporary( nFamily );
- FamilyListType::iterator aFind = maFamilyList.find(aTemporary);
- if (aFind != maFamilyList.end())
- aFind->mxMapper = rMapper;
-}
-
-// Adds a name to list
-void SvXMLAutoStylePoolP_Impl::RegisterName( sal_Int32 nFamily, const OUString& rName )
-{
- XMLAutoStyleFamily aTmp( nFamily );
- FamilyListType::iterator aFind = maFamilyList.find(aTmp);
- DBG_ASSERT( aFind != maFamilyList.end(),
- "SvXMLAutoStylePool_Impl::RegisterName: unknown family" );
- if (aFind != maFamilyList.end())
- aFind->maNameList.insert(rName);
-}
-
-//
-// Retrieve the list of registered names
-//
-
-void SvXMLAutoStylePoolP_Impl::GetRegisteredNames(
- uno::Sequence<sal_Int32>& rFamilies,
- uno::Sequence<OUString>& rNames )
-{
- // collect registered names + families
- vector<sal_Int32> aFamilies;
- vector<OUString> aNames;
-
- // iterate over families
- for (FamilyListType::iterator aJ = maFamilyList.begin(); aJ != maFamilyList.end(); ++aJ)
- {
- XMLAutoStyleFamily &rFamily = *aJ;
-
- // iterate over names
- for (XMLAutoStyleFamily::NameSetType::const_iterator aI = rFamily.maNameList.begin(); aI != rFamily.maNameList.end(); ++aI)
- {
- aFamilies.push_back( rFamily.mnFamily );
- aNames.push_back( *aI );
- }
- }
-
- // copy the families + names into the sequence types
- DBG_ASSERT( aFamilies.size() == aNames.size(), "families != names" );
-
- rFamilies.realloc( aFamilies.size() );
- std::copy( aFamilies.begin(), aFamilies.end(), rFamilies.getArray() );
-
- rNames.realloc( aNames.size() );
- std::copy( aNames.begin(), aNames.end(), rNames.getArray() );
-}
-
-// Adds a array of XMLPropertyState ( vector< XMLPropertyState > ) to list
-// if not added, yet.
-
-bool SvXMLAutoStylePoolP_Impl::Add(
- OUString& rName, sal_Int32 nFamily, const OUString& rParentName,
- const ::std::vector< XMLPropertyState >& rProperties, bool bDontSeek )
-{
- XMLAutoStyleFamily aTemporary( nFamily );
- FamilyListType::iterator aFind = maFamilyList.find(aTemporary);
- DBG_ASSERT(aFind != maFamilyList.end(), "SvXMLAutoStylePool_Impl::Add: unknown family");
-
- if (aFind == maFamilyList.end())
- return false;
-
- XMLAutoStyleFamily &rFamily = *aFind;
-
- XMLAutoStylePoolParent aTmp(rParentName);
- XMLAutoStyleFamily::ParentsType::iterator it2 = rFamily.maParents.find(aTmp);
- if (it2 == rFamily.maParents.end())
- {
- std::pair<XMLAutoStyleFamily::ParentsType::iterator,bool> r =
- rFamily.maParents.insert(new XMLAutoStylePoolParent(rParentName));
- it2 = r.first;
- }
-
- XMLAutoStylePoolParent& rParent = *it2;
-
- bool bRet = false;
- if (rParent.Add(rFamily, rProperties, rName, bDontSeek))
- {
- rFamily.mnCount++;
- bRet = true;
- }
-
- return bRet;
-}
-
-bool SvXMLAutoStylePoolP_Impl::AddNamed(
- const OUString& rName, sal_Int32 nFamily, const OUString& rParentName,
- const ::std::vector< XMLPropertyState >& rProperties )
-{
- // get family and parent the same way as in Add()
-
- XMLAutoStyleFamily aTemporary( nFamily );
- FamilyListType::iterator aFind = maFamilyList.find(aTemporary);
- DBG_ASSERT(aFind != maFamilyList.end(), "SvXMLAutoStylePool_Impl::Add: unknown family");
-
- if (aFind == maFamilyList.end())
- return false;
-
- XMLAutoStyleFamily &rFamily = *aFind;
-
- XMLAutoStylePoolParent aTmp(rParentName);
- XMLAutoStyleFamily::ParentsType::iterator it2 = rFamily.maParents.find(aTmp);
- if (it2 == rFamily.maParents.end())
- {
- std::pair<XMLAutoStyleFamily::ParentsType::iterator,bool> r =
- rFamily.maParents.insert(new XMLAutoStylePoolParent(rParentName));
- it2 = r.first;
- }
-
- XMLAutoStylePoolParent& rParent = *it2;
-
- bool bRet = false;
- if (rParent.AddNamed(rFamily, rProperties, rName))
- {
- rFamily.mnCount++;
- bRet = true;
- }
-
- return bRet;
-}
-
-//
-// Search for a array of XMLPropertyState ( vector< XMLPropertyState > ) in list
-//
-
-OUString SvXMLAutoStylePoolP_Impl::Find( sal_Int32 nFamily,
- const OUString& rParent,
- const vector< XMLPropertyState >& rProperties ) const
-{
- OUString sName;
-
- XMLAutoStyleFamily aTemporary( nFamily );
- FamilyListType::const_iterator const iter = maFamilyList.find(aTemporary);
- OSL_ENSURE(iter != maFamilyList.end(), "SvXMLAutoStylePool_Impl::Find: unknown family");
-
- if (iter != maFamilyList.end())
- {
- XMLAutoStyleFamily const& rFamily = *iter;
- XMLAutoStylePoolParent aTmp( rParent );
- XMLAutoStyleFamily::ParentsType::const_iterator it2 = rFamily.maParents.find(aTmp);
- if (it2 != rFamily.maParents.end())
- {
- sName = it2->Find(rFamily, rProperties);
- }
- }
-
- return sName;
-}
-
-namespace {
-
-struct AutoStylePoolExport
-{
- const OUString* mpParent;
- const XMLAutoStylePoolProperties* mpProperties;
-
- AutoStylePoolExport() : mpParent(NULL), mpProperties(NULL) {}
-};
-
-}
-
-void SvXMLAutoStylePoolP_Impl::exportXML(
- sal_Int32 nFamily,
- const uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > &,
- const SvXMLUnitConverter&,
- const SvXMLNamespaceMap&,
- const SvXMLAutoStylePoolP *pAntiImpl) const
-{
- // Get list of parents for current family (nFamily)
- XMLAutoStyleFamily aTmp( nFamily );
- FamilyListType::const_iterator aFind = maFamilyList.find(aTmp);
- DBG_ASSERT( aFind != maFamilyList.end(),
- "SvXMLAutoStylePool_Impl::exportXML: unknown family" );
- if (aFind == maFamilyList.end())
- return;
-
- const XMLAutoStyleFamily &rFamily = *aFind;
- sal_uInt32 nCount = rFamily.mnCount;
-
- if (!nCount)
- return;
-
- // create, initialize and fill helper-structure (SvXMLAutoStylePoolProperties_Impl)
- // which contains a parent-name and a SvXMLAutoStylePoolProperties_Impl
- std::vector<AutoStylePoolExport> aExpStyles(nCount);
-
- sal_uInt32 i;
- for( i=0; i < nCount; i++ )
- {
- aExpStyles[i].mpParent = 0;
- aExpStyles[i].mpProperties = 0;
- }
-
- XMLAutoStyleFamily::ParentsType::const_iterator it = rFamily.maParents.begin(), itEnd = rFamily.maParents.end();
- for (; it != itEnd; ++it)
- {
- const XMLAutoStylePoolParent& rParent = *it;
- size_t nProperties = rParent.GetPropertiesList().size();
- for( size_t j = 0; j < nProperties; j++ )
- {
- const XMLAutoStylePoolProperties* pProperties =
- &rParent.GetPropertiesList()[j];
- sal_uLong nPos = pProperties->GetPos();
- DBG_ASSERT( nPos < nCount,
- "SvXMLAutoStylePool_Impl::exportXML: wrong position" );
- if( nPos < nCount )
- {
- DBG_ASSERT( !aExpStyles[nPos].mpProperties,
- "SvXMLAutoStylePool_Impl::exportXML: double position" );
- aExpStyles[nPos].mpProperties = pProperties;
- aExpStyles[nPos].mpParent = &rParent.GetParent();
- }
- }
- }
-
- //
- // create string to export for each XML-style. That means for each property-list
- //
- OUString aStrFamilyName = rFamily.maStrFamilyName;
-
- for( i=0; i<nCount; i++ )
- {
- DBG_ASSERT( aExpStyles[i].mpProperties,
- "SvXMLAutoStylePool_Impl::exportXML: empty position" );
-
- if( aExpStyles[i].mpProperties )
- {
- GetExport().AddAttribute(
- XML_NAMESPACE_STYLE, XML_NAME,
- aExpStyles[i].mpProperties->GetName() );
-
- if( rFamily.mbAsFamily )
- {
- GetExport().AddAttribute(
- XML_NAMESPACE_STYLE, XML_FAMILY, aStrFamilyName );
- }
-
- if( !aExpStyles[i].mpParent->isEmpty() )
- {
- GetExport().AddAttribute(
- XML_NAMESPACE_STYLE, XML_PARENT_STYLE_NAME,
- GetExport().EncodeStyleName(
- *aExpStyles[i].mpParent ) );
- }
-
- OUString sName;
- if( rFamily.mbAsFamily )
- sName = GetXMLToken(XML_STYLE);
- else
- sName = rFamily.maStrFamilyName;
-
- pAntiImpl->exportStyleAttributes(
- GetExport().GetAttrList(),
- nFamily,
- aExpStyles[i].mpProperties->GetProperties(),
- *rFamily.mxMapper.get()
- , GetExport().GetMM100UnitConverter(),
- GetExport().GetNamespaceMap()
- );
-
- SvXMLElementExport aElem( GetExport(),
- XML_NAMESPACE_STYLE, sName,
- sal_True, sal_True );
-
- sal_Int32 nStart(-1);
- sal_Int32 nEnd(-1);
- if (nFamily == XML_STYLE_FAMILY_PAGE_MASTER)
- {
- nStart = 0;
- sal_Int32 nIndex = 0;
- UniReference< XMLPropertySetMapper > aPropMapper =
- rFamily.mxMapper->getPropertySetMapper();
- sal_Int16 nContextID;
- while(nIndex < aPropMapper->GetEntryCount() && nEnd == -1)
- {
- nContextID = aPropMapper->GetEntryContextId( nIndex );
- if (nContextID && ((nContextID & CTF_PM_FLAGMASK) != XML_PM_CTF_START))
- nEnd = nIndex;
- nIndex++;
- }
- if (nEnd == -1)
- nEnd = nIndex;
- }
-
- rFamily.mxMapper->exportXML(
- GetExport(),
- aExpStyles[i].mpProperties->GetProperties(),
- nStart, nEnd, XML_EXPORT_FLAG_IGN_WS );
-
- pAntiImpl->exportStyleContent(
- GetExport().GetDocHandler(),
- nFamily,
- aExpStyles[i].mpProperties->GetProperties(),
- *rFamily.mxMapper.get(),
- GetExport().GetMM100UnitConverter(),
- GetExport().GetNamespaceMap()
- );
- }
- }
-}
-
-void SvXMLAutoStylePoolP_Impl::ClearEntries()
-{
- for (FamilyListType::iterator aI = maFamilyList.begin(); aI != maFamilyList.end(); ++aI)
- aI->ClearEntries();
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmloff/source/style/impastpl.cxx b/xmloff/source/style/impastpl.cxx
index 608575f839fc..d03ca3175ffa 100644
--- a/xmloff/source/style/impastpl.cxx
+++ b/xmloff/source/style/impastpl.cxx
@@ -19,11 +19,23 @@
#include <rtl/ustrbuf.hxx>
#include <tools/debug.hxx>
+#include <xmloff/PageMasterStyleMap.hxx>
+#include <xmloff/attrlist.hxx>
+#include <xmloff/families.hxx>
+#include <xmloff/nmspmap.hxx>
+#include <xmloff/xmlaustp.hxx>
+#include <xmloff/xmlexp.hxx>
+#include <xmloff/xmlexppr.hxx>
+#include <xmloff/xmlnmspe.hxx>
#include <xmloff/xmlprmap.hxx>
+#include <xmloff/xmltoken.hxx>
#include "impastpl.hxx"
-using namespace std;
+using namespace ::std;
+
+using namespace ::com::sun::star;
+using namespace ::xmloff::token;
// Class XMLAutoStyleFamily
// ctor/dtor class XMLAutoStyleFamily
@@ -192,4 +204,371 @@ bool XMLAutoStylePoolParent::operator< (const XMLAutoStylePoolParent& rOther) co
return msParent < rOther.msParent;
}
+// Class SvXMLAutoStylePool_Impl
+// ctor/dtor class SvXMLAutoStylePool_Impl
+
+SvXMLAutoStylePoolP_Impl::SvXMLAutoStylePoolP_Impl( SvXMLExport& rExp)
+ : rExport( rExp )
+{
+}
+
+SvXMLAutoStylePoolP_Impl::~SvXMLAutoStylePoolP_Impl()
+{
+}
+
+// Adds stylefamily-information to sorted list
+
+void SvXMLAutoStylePoolP_Impl::AddFamily(
+ sal_Int32 nFamily,
+ const OUString& rStrName,
+ const UniReference < SvXMLExportPropertyMapper > & rMapper,
+ const OUString& rStrPrefix,
+ sal_Bool bAsFamily )
+{
+ // store family in a list if not already stored
+ sal_uInt16 nExportFlags = GetExport().getExportFlags();
+ sal_Bool bStylesOnly = (nExportFlags & EXPORT_STYLES) != 0 && (nExportFlags & EXPORT_CONTENT) == 0;
+
+ OUString aPrefix( rStrPrefix );
+ if( bStylesOnly )
+ {
+ aPrefix = OUString( 'M' );
+ aPrefix += rStrPrefix;
+ }
+
+#if OSL_DEBUG_LEVEL > 0
+ XMLAutoStyleFamily aTemporary( nFamily );
+ FamilyListType::iterator aFind = maFamilyList.find(aTemporary);
+ if( aFind != maFamilyList.end() )
+ {
+ // FIXME: do we really intend to replace the previous nFamily
+ // entry in this case ?
+ SAL_WARN_IF( aFind->mxMapper != rMapper, "xmloff",
+ "Adding duplicate family " << rStrName <<
+ " with mismatching mapper ! " <<
+ typeid(*aFind->mxMapper.get()).name() << " " <<
+ typeid(*rMapper.get()).name() );
+ }
+#endif
+
+ XMLAutoStyleFamily *pFamily = new XMLAutoStyleFamily( nFamily, rStrName, rMapper, aPrefix, bAsFamily );
+ maFamilyList.insert(pFamily);
+}
+
+void SvXMLAutoStylePoolP_Impl::SetFamilyPropSetMapper(
+ sal_Int32 nFamily,
+ const UniReference < SvXMLExportPropertyMapper > & rMapper )
+{
+
+ XMLAutoStyleFamily aTemporary( nFamily );
+ FamilyListType::iterator aFind = maFamilyList.find(aTemporary);
+ if (aFind != maFamilyList.end())
+ aFind->mxMapper = rMapper;
+}
+
+// Adds a name to list
+void SvXMLAutoStylePoolP_Impl::RegisterName( sal_Int32 nFamily, const OUString& rName )
+{
+ XMLAutoStyleFamily aTmp( nFamily );
+ FamilyListType::iterator aFind = maFamilyList.find(aTmp);
+ DBG_ASSERT( aFind != maFamilyList.end(),
+ "SvXMLAutoStylePool_Impl::RegisterName: unknown family" );
+ if (aFind != maFamilyList.end())
+ aFind->maNameList.insert(rName);
+}
+
+//
+// Retrieve the list of registered names
+//
+
+void SvXMLAutoStylePoolP_Impl::GetRegisteredNames(
+ uno::Sequence<sal_Int32>& rFamilies,
+ uno::Sequence<OUString>& rNames )
+{
+ // collect registered names + families
+ vector<sal_Int32> aFamilies;
+ vector<OUString> aNames;
+
+ // iterate over families
+ for (FamilyListType::iterator aJ = maFamilyList.begin(); aJ != maFamilyList.end(); ++aJ)
+ {
+ XMLAutoStyleFamily &rFamily = *aJ;
+
+ // iterate over names
+ for (XMLAutoStyleFamily::NameSetType::const_iterator aI = rFamily.maNameList.begin(); aI != rFamily.maNameList.end(); ++aI)
+ {
+ aFamilies.push_back( rFamily.mnFamily );
+ aNames.push_back( *aI );
+ }
+ }
+
+ // copy the families + names into the sequence types
+ DBG_ASSERT( aFamilies.size() == aNames.size(), "families != names" );
+
+ rFamilies.realloc( aFamilies.size() );
+ std::copy( aFamilies.begin(), aFamilies.end(), rFamilies.getArray() );
+
+ rNames.realloc( aNames.size() );
+ std::copy( aNames.begin(), aNames.end(), rNames.getArray() );
+}
+
+// Adds a array of XMLPropertyState ( vector< XMLPropertyState > ) to list
+// if not added, yet.
+
+bool SvXMLAutoStylePoolP_Impl::Add(
+ OUString& rName, sal_Int32 nFamily, const OUString& rParentName,
+ const ::std::vector< XMLPropertyState >& rProperties, bool bDontSeek )
+{
+ XMLAutoStyleFamily aTemporary( nFamily );
+ FamilyListType::iterator aFind = maFamilyList.find(aTemporary);
+ DBG_ASSERT(aFind != maFamilyList.end(), "SvXMLAutoStylePool_Impl::Add: unknown family");
+
+ if (aFind == maFamilyList.end())
+ return false;
+
+ XMLAutoStyleFamily &rFamily = *aFind;
+
+ XMLAutoStylePoolParent aTmp(rParentName);
+ XMLAutoStyleFamily::ParentsType::iterator it2 = rFamily.maParents.find(aTmp);
+ if (it2 == rFamily.maParents.end())
+ {
+ std::pair<XMLAutoStyleFamily::ParentsType::iterator,bool> r =
+ rFamily.maParents.insert(new XMLAutoStylePoolParent(rParentName));
+ it2 = r.first;
+ }
+
+ XMLAutoStylePoolParent& rParent = *it2;
+
+ bool bRet = false;
+ if (rParent.Add(rFamily, rProperties, rName, bDontSeek))
+ {
+ rFamily.mnCount++;
+ bRet = true;
+ }
+
+ return bRet;
+}
+
+bool SvXMLAutoStylePoolP_Impl::AddNamed(
+ const OUString& rName, sal_Int32 nFamily, const OUString& rParentName,
+ const ::std::vector< XMLPropertyState >& rProperties )
+{
+ // get family and parent the same way as in Add()
+
+ XMLAutoStyleFamily aTemporary( nFamily );
+ FamilyListType::iterator aFind = maFamilyList.find(aTemporary);
+ DBG_ASSERT(aFind != maFamilyList.end(), "SvXMLAutoStylePool_Impl::Add: unknown family");
+
+ if (aFind == maFamilyList.end())
+ return false;
+
+ XMLAutoStyleFamily &rFamily = *aFind;
+
+ XMLAutoStylePoolParent aTmp(rParentName);
+ XMLAutoStyleFamily::ParentsType::iterator it2 = rFamily.maParents.find(aTmp);
+ if (it2 == rFamily.maParents.end())
+ {
+ std::pair<XMLAutoStyleFamily::ParentsType::iterator,bool> r =
+ rFamily.maParents.insert(new XMLAutoStylePoolParent(rParentName));
+ it2 = r.first;
+ }
+
+ XMLAutoStylePoolParent& rParent = *it2;
+
+ bool bRet = false;
+ if (rParent.AddNamed(rFamily, rProperties, rName))
+ {
+ rFamily.mnCount++;
+ bRet = true;
+ }
+
+ return bRet;
+}
+
+//
+// Search for a array of XMLPropertyState ( vector< XMLPropertyState > ) in list
+//
+
+OUString SvXMLAutoStylePoolP_Impl::Find( sal_Int32 nFamily,
+ const OUString& rParent,
+ const vector< XMLPropertyState >& rProperties ) const
+{
+ OUString sName;
+
+ XMLAutoStyleFamily aTemporary( nFamily );
+ FamilyListType::const_iterator const iter = maFamilyList.find(aTemporary);
+ OSL_ENSURE(iter != maFamilyList.end(), "SvXMLAutoStylePool_Impl::Find: unknown family");
+
+ if (iter != maFamilyList.end())
+ {
+ XMLAutoStyleFamily const& rFamily = *iter;
+ XMLAutoStylePoolParent aTmp( rParent );
+ XMLAutoStyleFamily::ParentsType::const_iterator it2 = rFamily.maParents.find(aTmp);
+ if (it2 != rFamily.maParents.end())
+ {
+ sName = it2->Find(rFamily, rProperties);
+ }
+ }
+
+ return sName;
+}
+
+namespace {
+
+struct AutoStylePoolExport
+{
+ const OUString* mpParent;
+ const XMLAutoStylePoolProperties* mpProperties;
+
+ AutoStylePoolExport() : mpParent(NULL), mpProperties(NULL) {}
+};
+
+}
+
+void SvXMLAutoStylePoolP_Impl::exportXML(
+ sal_Int32 nFamily,
+ const uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > &,
+ const SvXMLUnitConverter&,
+ const SvXMLNamespaceMap&,
+ const SvXMLAutoStylePoolP *pAntiImpl) const
+{
+ // Get list of parents for current family (nFamily)
+ XMLAutoStyleFamily aTmp( nFamily );
+ FamilyListType::const_iterator aFind = maFamilyList.find(aTmp);
+ DBG_ASSERT( aFind != maFamilyList.end(),
+ "SvXMLAutoStylePool_Impl::exportXML: unknown family" );
+ if (aFind == maFamilyList.end())
+ return;
+
+ const XMLAutoStyleFamily &rFamily = *aFind;
+ sal_uInt32 nCount = rFamily.mnCount;
+
+ if (!nCount)
+ return;
+
+ // create, initialize and fill helper-structure (SvXMLAutoStylePoolProperties_Impl)
+ // which contains a parent-name and a SvXMLAutoStylePoolProperties_Impl
+ std::vector<AutoStylePoolExport> aExpStyles(nCount);
+
+ sal_uInt32 i;
+ for( i=0; i < nCount; i++ )
+ {
+ aExpStyles[i].mpParent = 0;
+ aExpStyles[i].mpProperties = 0;
+ }
+
+ XMLAutoStyleFamily::ParentsType::const_iterator it = rFamily.maParents.begin(), itEnd = rFamily.maParents.end();
+ for (; it != itEnd; ++it)
+ {
+ const XMLAutoStylePoolParent& rParent = *it;
+ size_t nProperties = rParent.GetPropertiesList().size();
+ for( size_t j = 0; j < nProperties; j++ )
+ {
+ const XMLAutoStylePoolProperties* pProperties =
+ &rParent.GetPropertiesList()[j];
+ sal_uLong nPos = pProperties->GetPos();
+ DBG_ASSERT( nPos < nCount,
+ "SvXMLAutoStylePool_Impl::exportXML: wrong position" );
+ if( nPos < nCount )
+ {
+ DBG_ASSERT( !aExpStyles[nPos].mpProperties,
+ "SvXMLAutoStylePool_Impl::exportXML: double position" );
+ aExpStyles[nPos].mpProperties = pProperties;
+ aExpStyles[nPos].mpParent = &rParent.GetParent();
+ }
+ }
+ }
+
+ //
+ // create string to export for each XML-style. That means for each property-list
+ //
+ OUString aStrFamilyName = rFamily.maStrFamilyName;
+
+ for( i=0; i<nCount; i++ )
+ {
+ DBG_ASSERT( aExpStyles[i].mpProperties,
+ "SvXMLAutoStylePool_Impl::exportXML: empty position" );
+
+ if( aExpStyles[i].mpProperties )
+ {
+ GetExport().AddAttribute(
+ XML_NAMESPACE_STYLE, XML_NAME,
+ aExpStyles[i].mpProperties->GetName() );
+
+ if( rFamily.mbAsFamily )
+ {
+ GetExport().AddAttribute(
+ XML_NAMESPACE_STYLE, XML_FAMILY, aStrFamilyName );
+ }
+
+ if( !aExpStyles[i].mpParent->isEmpty() )
+ {
+ GetExport().AddAttribute(
+ XML_NAMESPACE_STYLE, XML_PARENT_STYLE_NAME,
+ GetExport().EncodeStyleName(
+ *aExpStyles[i].mpParent ) );
+ }
+
+ OUString sName;
+ if( rFamily.mbAsFamily )
+ sName = GetXMLToken(XML_STYLE);
+ else
+ sName = rFamily.maStrFamilyName;
+
+ pAntiImpl->exportStyleAttributes(
+ GetExport().GetAttrList(),
+ nFamily,
+ aExpStyles[i].mpProperties->GetProperties(),
+ *rFamily.mxMapper.get()
+ , GetExport().GetMM100UnitConverter(),
+ GetExport().GetNamespaceMap()
+ );
+
+ SvXMLElementExport aElem( GetExport(),
+ XML_NAMESPACE_STYLE, sName,
+ sal_True, sal_True );
+
+ sal_Int32 nStart(-1);
+ sal_Int32 nEnd(-1);
+ if (nFamily == XML_STYLE_FAMILY_PAGE_MASTER)
+ {
+ nStart = 0;
+ sal_Int32 nIndex = 0;
+ UniReference< XMLPropertySetMapper > aPropMapper =
+ rFamily.mxMapper->getPropertySetMapper();
+ sal_Int16 nContextID;
+ while(nIndex < aPropMapper->GetEntryCount() && nEnd == -1)
+ {
+ nContextID = aPropMapper->GetEntryContextId( nIndex );
+ if (nContextID && ((nContextID & CTF_PM_FLAGMASK) != XML_PM_CTF_START))
+ nEnd = nIndex;
+ nIndex++;
+ }
+ if (nEnd == -1)
+ nEnd = nIndex;
+ }
+
+ rFamily.mxMapper->exportXML(
+ GetExport(),
+ aExpStyles[i].mpProperties->GetProperties(),
+ nStart, nEnd, XML_EXPORT_FLAG_IGN_WS );
+
+ pAntiImpl->exportStyleContent(
+ GetExport().GetDocHandler(),
+ nFamily,
+ aExpStyles[i].mpProperties->GetProperties(),
+ *rFamily.mxMapper.get(),
+ GetExport().GetMM100UnitConverter(),
+ GetExport().GetNamespaceMap()
+ );
+ }
+ }
+}
+
+void SvXMLAutoStylePoolP_Impl::ClearEntries()
+{
+ for (FamilyListType::iterator aI = maFamilyList.begin(); aI != maFamilyList.end(); ++aI)
+ aI->ClearEntries();
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */