xref: /trunk/main/sw/source/filter/xml/xmlexpit.hxx (revision 1d2dbeb0)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _XMLITMPR_HXX
25 #define _XMLITMPR_HXX
26 
27 #include <tools/solar.h>
28 #include <tools/ref.hxx>
29 #include "xmlitmap.hxx"
30 
31 #define XML_EXPORT_FLAG_DEFAULTS	0x0001		// export also default items
32 #define XML_EXPORT_FLAG_DEEP		0x0002		// export also items from
33 												// parent item sets
34 #define XML_EXPORT_FLAG_EMPTY		0x0004		// export attribs element
35 												// even if its empty
36 #define XML_EXPORT_FLAG_IGN_WS		0x0008
37 
38 namespace rtl { class OUString; }
39 class SvXMLUnitConverter;
40 class SfxPoolItem;
41 class SfxItemSet;
42 class SvXMLAttributeList;
43 class SvXMLNamespaceMap;
44 class SvUShorts;
45 class SvXMLExport;
46 
47 
48 class SvXMLExportItemMapper
49 {
50 protected:
51 	SvXMLItemMapEntriesRef mrMapEntries;
52 
53 	/** fills the given attribute list with the items in the given set */
54 	void exportXML( const SvXMLExport& rExport,
55 					SvXMLAttributeList& rAttrList,
56 					const SfxItemSet& rSet,
57 					const SvXMLUnitConverter& rUnitConverter,
58 					const SvXMLNamespaceMap& rNamespaceMap,
59 					sal_uInt16 nFlags,
60 					SvUShorts* pIndexArray ) const;
61 
62 	void exportXML( const SvXMLExport& rExport,
63 					SvXMLAttributeList& rAttrList,
64 					const SfxPoolItem& rItem,
65 					const SvXMLItemMapEntry &rEntry,
66 					const SvXMLUnitConverter& rUnitConverter,
67 					const SvXMLNamespaceMap& rNamespaceMap,
68 					sal_uInt16 nFlags,
69 				    const SfxItemSet *pSet ) const;
70 
71 
72 	void exportElementItems(  SvXMLExport& rExport,
73 							  const SvXMLUnitConverter& rUnitConverter,
74 							  const SfxItemSet &rSet,
75 							  sal_uInt16 nFlags,
76 							  const SvUShorts& rIndexArray ) const;
77 
78 	static const SfxPoolItem* GetItem( const SfxItemSet &rSet,
79 									   sal_uInt16 nWhichId,
80 									   sal_uInt16 nFlags );
81 
82 public:
83 	SvXMLExportItemMapper( SvXMLItemMapEntriesRef rMapEntries );
84 	virtual ~SvXMLExportItemMapper();
85 
86 	void exportXML( SvXMLExport& rExport,
87 					const SfxItemSet& rSet,
88 					const SvXMLUnitConverter& rUnitConverter,
89 					::xmloff::token::XMLTokenEnum ePropToken,
90 					sal_uInt16 nFlags = 0 ) const;
91 
92 	/** this method is called for every item that has the
93 		MID_SW_FLAG_SPECIAL_ITEM_EXPORT flag set */
94 	virtual void handleSpecialItem( SvXMLAttributeList& rAttrList,
95 									const SvXMLItemMapEntry& rEntry,
96 									const SfxPoolItem& rItem,
97 									const SvXMLUnitConverter& rUnitConverter,
98 									const SvXMLNamespaceMap& rNamespaceMap,
99 									const SfxItemSet *pSet = NULL ) const;
100 
101 
102 	/** this method is called for every item that has the
103 		MID_SW_FLAG_NO_ITEM_EXPORT flag set */
104 	virtual void handleNoItem( SvXMLAttributeList& rAttrList,
105 							   const SvXMLItemMapEntry& rEntry,
106 							   const SvXMLUnitConverter& rUnitConverter,
107 							   const SvXMLNamespaceMap& rNamespaceMap,
108 							   const SfxItemSet& rSet ) const;
109 
110 	/** this method is called for every item that has the
111 		MID_SW_FLAG_ELEMENT_EXPORT flag set */
112 	virtual void handleElementItem( SvXMLExport& rExport,
113 									const SvXMLItemMapEntry& rEntry,
114 									const SfxPoolItem& rItem,
115 									const SvXMLUnitConverter& rUnitConverter,
116 									const SfxItemSet& rSet,
117 									sal_uInt16 nFlags ) const;
118 
119 	inline void setMapEntries( SvXMLItemMapEntriesRef rMapEntries );
120 
121     static sal_Bool QueryXMLValue( const SfxPoolItem& rItem,
122                                  ::rtl::OUString& rValue, sal_uInt16 nMemberId,
123                                  const SvXMLUnitConverter& rUnitConverter );
124 };
125 
126 inline void
setMapEntries(SvXMLItemMapEntriesRef rMapEntries)127 SvXMLExportItemMapper::setMapEntries( SvXMLItemMapEntriesRef rMapEntries )
128 {
129 	mrMapEntries = rMapEntries;
130 }
131 
132 #endif	//  _XMLITMPR_HXX
133