From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- include/xmloff/maptype.hxx | 152 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 include/xmloff/maptype.hxx (limited to 'include/xmloff/maptype.hxx') diff --git a/include/xmloff/maptype.hxx b/include/xmloff/maptype.hxx new file mode 100644 index 000000000..a4b105b65 --- /dev/null +++ b/include/xmloff/maptype.hxx @@ -0,0 +1,152 @@ +/* -*- 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 . + */ + +#ifndef INCLUDED_XMLOFF_MAPTYPE_HXX +#define INCLUDED_XMLOFF_MAPTYPE_HXX + +#include +#include +#include + + +/** Represents a property with its API-name, its XML-name and the type of + its value. +*/ +struct XMLPropertyMapEntry +{ + const char* msApiName; /// Property-Name + sal_Int32 nApiNameLength; /// length of property name + enum ::xmloff::token::XMLTokenEnum meXMLName; /// XML-Name + sal_uInt16 mnNameSpace; /** declares the Namespace in which this + property exists */ + + /** + * The lowest 14 bits specify the basic XML type of the property value, of + * which the 11th bit specifies the application type. The basic type has + * the 11th bit off and the 14th bit on. For the most part, the lower 14 + * bits are used as a single value. + * + *

The next 4 bits specify the family type of the property value. This + * can be one of the following:

+ * + *
    + *
  • XML_TYPE_PROP_GRAPHIC
  • + *
  • XML_TYPE_PROP_DRAWING_PAGE
  • + *
  • XML_TYPE_PROP_PAGE_LAYOUT
  • + *
  • XML_TYPE_PROP_HEADER_FOOTER
  • + *
  • XML_TYPE_PROP_TEXT
  • + *
  • XML_TYPE_PROP_PARAGRAPH
  • + *
  • XML_TYPE_PROP_RUBY
  • + *
  • XML_TYPE_PROP_SECTION
  • + *
  • XML_TYPE_PROP_TABLE
  • + *
  • XML_TYPE_PROP_TABLE_COLUMN
  • + *
  • XML_TYPE_PROP_TABLE_ROW
  • + *
  • XML_TYPE_PROP_TABLE_CELL
  • + *
  • XML_TYPE_PROP_LIST_LEVEL
  • + *
  • XML_TYPE_PROP_CHART
  • + *
+ * + *

The next 2 bits are not used.

+ * + *

The last 12 bits specify additional rules on how to special-case the + * value during import and export. This value may be a combination of the + * following flags:

+ * + *
    + *
  • MID_FLAG_PROPERTY_MAY_THROW
  • + *
  • MID_FLAG_DEFAULT_ITEM_EXPORT
  • + *
  • MID_FLAG_MUST_EXIST
  • + *
  • MID_FLAG_MERGE_ATTRIBUTE
  • + *
  • MID_FLAG_MERGE_PROPERTY
  • + *
  • MID_FLAG_MULTI_PROPERTY
  • + *
  • MID_FLAG_ELEMENT_ITEM_IMPORT
  • + *
  • MID_FLAG_ELEMENT_ITEM_EXPORT
  • + *
  • MID_FLAG_SPECIAL_ITEM_IMPORT
  • + *
  • MID_FLAG_SPECIAL_ITEM_EXPORT
  • + *
  • MID_FLAG_NO_PROPERTY_IMPORT
  • + *
  • MID_FLAG_NO_PROPERTY_EXPORT
  • + *
+ */ + sal_uInt32 mnType; + + sal_Int16 mnContextId; /// User defined id for context filtering + /** no export to standard namespace when the used ODF version is lower than this; + no export to extension namespace when the used ODF version is at least this + */ + SvtSaveOptions::ODFSaneDefaultVersion mnEarliestODFVersionForExport; + + /** Flag to specify whether entry is only used during import. + + Allows to handle more than one Namespace/XML-Name to Property-Name + mapping, i.e. for extensions. If several entries for the same + Property-Name exist, all except one must have this flag set. + */ + bool mbImportOnly; + + template< std::size_t N > + XMLPropertyMapEntry( + const char (&sApiName)[N], + sal_uInt16 nNameSpace, + enum ::xmloff::token::XMLTokenEnum eXMLName, + sal_uInt32 nType, + sal_Int16 nContextId, + SvtSaveOptions::ODFSaneDefaultVersion nEarliestODFVersionForExport, + bool bImportOnly) + : + msApiName(sApiName), + nApiNameLength(N-1), + meXMLName(eXMLName), mnNameSpace(nNameSpace), mnType(nType), + mnContextId(nContextId), mnEarliestODFVersionForExport(nEarliestODFVersionForExport), + mbImportOnly(bImportOnly) + {} + XMLPropertyMapEntry( + std::nullptr_t , + sal_uInt16 nNameSpace, + enum ::xmloff::token::XMLTokenEnum eXMLName, + sal_uInt32 nType, + sal_Int16 nContextId, + SvtSaveOptions::ODFSaneDefaultVersion nEarliestODFVersionForExport, + bool bImportOnly) + : + msApiName(nullptr), + nApiNameLength(0), + meXMLName(eXMLName), mnNameSpace(nNameSpace), mnType(nType), + mnContextId(nContextId), mnEarliestODFVersionForExport(nEarliestODFVersionForExport), + mbImportOnly(bImportOnly) + {} +}; + + +/** Smart struct to transport an Any with an index to the appropriate + property-name +*/ +struct XMLPropertyState +{ + sal_Int32 mnIndex; + css::uno::Any maValue; + + XMLPropertyState( sal_Int32 nIndex ) + : mnIndex( nIndex ) {} + XMLPropertyState( sal_Int32 nIndex, const css::uno::Any& rValue ) + : mnIndex( nIndex ), maValue( rValue ) {} +}; + +#endif // INCLUDED_XMLOFF_MAPTYPE_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3