summaryrefslogtreecommitdiff
path: root/xmloff/source/style/impastp3.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xmloff/source/style/impastp3.cxx')
-rw-r--r--xmloff/source/style/impastp3.cxx185
1 files changed, 185 insertions, 0 deletions
diff --git a/xmloff/source/style/impastp3.cxx b/xmloff/source/style/impastp3.cxx
new file mode 100644
index 000000000000..6e4607ef0b89
--- /dev/null
+++ b/xmloff/source/style/impastp3.cxx
@@ -0,0 +1,185 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_xmloff.hxx"
+#include "impastpl.hxx"
+#include <xmloff/xmlprmap.hxx>
+
+using namespace std;
+using namespace rtl;
+
+//#############################################################################
+//
+// Class SvXMLAutoStylePoolParent_Impl
+//
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// dtor class SvXMLAutoStylePoolParent_Impl
+//
+
+SvXMLAutoStylePoolParentP_Impl::~SvXMLAutoStylePoolParentP_Impl()
+{
+ while( maPropertiesList.Count() )
+ delete maPropertiesList.Remove( maPropertiesList.Count() -1 );
+}
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Adds a array of XMLPropertyState ( vector< XMLPropertyState > ) to list
+// if not added, yet.
+//
+
+sal_Bool SvXMLAutoStylePoolParentP_Impl::Add( XMLFamilyData_Impl* pFamilyData, const vector< XMLPropertyState >& rProperties, OUString& rName, bool bDontSeek )
+{
+ sal_Bool bAdded = sal_False;
+ SvXMLAutoStylePoolPropertiesP_Impl *pProperties = 0;
+ sal_uInt32 i = 0;
+ sal_Int32 nProperties = rProperties.size();
+ sal_uInt32 nCount = maPropertiesList.Count();
+
+ for( i = 0; i < nCount; i++ )
+ {
+ SvXMLAutoStylePoolPropertiesP_Impl *pIS = maPropertiesList.GetObject( i );
+ if( nProperties > (sal_Int32)pIS->GetProperties().size() )
+ {
+ continue;
+ }
+ else if( nProperties < (sal_Int32)pIS->GetProperties().size() )
+ {
+ break;
+ }
+ else if( !bDontSeek && pFamilyData->mxMapper->Equals( pIS->GetProperties(), rProperties ) )
+ {
+ pProperties = pIS;
+ break;
+ }
+ }
+
+ if( !pProperties )
+ {
+ pProperties = new SvXMLAutoStylePoolPropertiesP_Impl( pFamilyData, rProperties );
+ maPropertiesList.Insert( pProperties, i );
+ bAdded = sal_True;
+ }
+
+ rName = pProperties->GetName();
+
+ return bAdded;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Adds a array of XMLPropertyState ( vector< XMLPropertyState > ) with a given name.
+// If the name exists already, nothing is done. If a style with a different name and
+// the same properties exists, a new one is added (like with bDontSeek).
+//
+
+sal_Bool SvXMLAutoStylePoolParentP_Impl::AddNamed( XMLFamilyData_Impl* pFamilyData, const vector< XMLPropertyState >& rProperties, const OUString& rName )
+{
+ sal_Bool bAdded = sal_False;
+ sal_uInt32 i = 0;
+ sal_Int32 nProperties = rProperties.size();
+ sal_uInt32 nCount = maPropertiesList.Count();
+
+ for( i = 0; i < nCount; i++ )
+ {
+ SvXMLAutoStylePoolPropertiesP_Impl *pIS = maPropertiesList.GetObject( i );
+ if( nProperties > (sal_Int32)pIS->GetProperties().size() )
+ {
+ continue;
+ }
+ else if( nProperties < (sal_Int32)pIS->GetProperties().size() )
+ {
+ break;
+ }
+ }
+
+ if( !pFamilyData->mpNameList->Seek_Entry( &rName, 0 ) )
+ {
+ SvXMLAutoStylePoolPropertiesP_Impl* pProperties =
+ new SvXMLAutoStylePoolPropertiesP_Impl( pFamilyData, rProperties );
+ // ignore the generated name
+ pProperties->SetName( rName );
+ maPropertiesList.Insert( pProperties, i );
+ bAdded = sal_True;
+ }
+
+ return bAdded;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Search for a array of XMLPropertyState ( vector< XMLPropertyState > ) in list
+//
+
+OUString SvXMLAutoStylePoolParentP_Impl::Find( const XMLFamilyData_Impl* pFamilyData, const vector< XMLPropertyState >& rProperties ) const
+{
+ OUString sName;
+ vector< XMLPropertyState>::size_type nItems = rProperties.size();
+ sal_uInt32 nCount = maPropertiesList.Count();
+ for( sal_uInt32 i=0; i < nCount; i++ )
+ {
+ SvXMLAutoStylePoolPropertiesP_Impl *pIS = maPropertiesList.GetObject( i );
+ if( nItems > pIS->GetProperties().size() )
+ {
+ continue;
+ }
+ else if( nItems < pIS->GetProperties().size() )
+ {
+ break;
+ }
+ else if( pFamilyData->mxMapper->Equals( pIS->GetProperties(), rProperties ) )
+ {
+ sName = pIS->GetName();
+ break;
+ }
+ }
+
+ return sName;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Sort-function for sorted list of SvXMLAutoStylePoolParent_Impl-elements
+//
+
+int SvXMLAutoStylePoolParentPCmp_Impl( const SvXMLAutoStylePoolParentP_Impl& r1,
+ const SvXMLAutoStylePoolParentP_Impl& r2)
+{
+ return (int)r1.GetParent().compareTo( r2.GetParent() );
+}
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Implementation of sorted list of SvXMLAutoStylePoolParent_Impl-elements
+//
+
+IMPL_CONTAINER_SORT( SvXMLAutoStylePoolParentsP_Impl,
+ SvXMLAutoStylePoolParentP_Impl,
+ SvXMLAutoStylePoolParentPCmp_Impl )