xref: /aoo42x/main/xmloff/source/text/txtprmap.cxx (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_xmloff.hxx"
30 
31 #include <xmloff/txtprmap.hxx>
32 
33 #include <tools/debug.hxx>
34 
35 #include <xmloff/xmlnmspe.hxx>
36 #include <xmloff/xmltoken.hxx>
37 #include "txtprhdl.hxx"
38 
39 using namespace ::com::sun::star;
40 using namespace ::com::sun::star::uno;
41 using namespace ::xmloff::token;
42 
43 #define _M_E( a, p, l, t, c ) \
44 	{ a, sizeof(a)-1, XML_NAMESPACE_##p, XML_##l, t, c, SvtSaveOptions::ODFVER_010 }
45 
46 #define _M_EV( a, p, l, t, c, v ) \
47 	{ a, sizeof(a)-1, XML_NAMESPACE_##p, XML_##l, t, c, v }
48 
49 #define _M_ED( a, p, l, t, c ) \
50 	{ a, sizeof(a)-1, XML_NAMESPACE_##p, XML_##l, (t) | MID_FLAG_DEFAULT_ITEM_EXPORT, c, SvtSaveOptions::ODFVER_010 }
51 
52 // text properties
53 #define MT_E( a, p, l, t, c ) \
54 	_M_E( a, p, l, (t|XML_TYPE_PROP_TEXT), c )
55 #define MT_ED( a, p, l, t, c ) \
56 	_M_ED( a, p, l, (t|XML_TYPE_PROP_TEXT), c )
57 
58 // paragraph properties
59 #define MP_E( a, p, l, t, c ) \
60 	_M_E( a, p, l, (t|XML_TYPE_PROP_PARAGRAPH), c )
61 #define MP_ED( a, p, l, t, c ) \
62 	_M_ED( a, p, l, (t|XML_TYPE_PROP_PARAGRAPH), c )
63 
64 // graphic properties
65 #define MG_E( a, p, l, t, c ) \
66 	_M_E( a, p, l, (t|XML_TYPE_PROP_GRAPHIC), c )
67 #define MG_ED( a, p, l, t, c ) \
68 	_M_ED( a, p, l, (t|XML_TYPE_PROP_GRAPHIC), c )
69 #define MG_EV( a, p, l, t, c, v ) \
70 	_M_EV( a, p, l, (t|XML_TYPE_PROP_GRAPHIC), c, v )
71 
72 // section properties
73 #define MS_E( a, p, l, t, c ) \
74 	_M_E( a, p, l, (t|XML_TYPE_PROP_SECTION), c )
75 #define MS_ED( a, p, l, t, c ) \
76 	_M_ED( a, p, l, (t|XML_TYPE_PROP_SECTION), c )
77 
78 // ruby properties
79 #define MR_E( a, p, l, t, c ) \
80 	_M_E( a, p, l, (t|XML_TYPE_PROP_RUBY), c )
81 #define MR_ED( a, p, l, t, c ) \
82 	_M_ED( a, p, l, (t|XML_TYPE_PROP_RUBY), c )
83 
84 #define M_END() \
85 	{ NULL, 0, 0, XML_TOKEN_INVALID, 0, 0, SvtSaveOptions::ODFVER_010 }
86 
87 
88 XMLPropertyMapEntry aXMLParaPropMap[] =
89 {
90 	// RES_UNKNOWNATR_CONTAINER
91 	MP_E( "ParaUserDefinedAttributes", TEXT, XMLNS, XML_TYPE_ATTRIBUTE_CONTAINER | MID_FLAG_SPECIAL_ITEM, 0 ),
92 	// RES_LR_SPACE
93     // !!! DO NOT REORDER THE MARGINS !!!
94 	MP_E( "ParaLeftMargin",			FO,	MARGIN,		XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARAMARGINALL ),
95 	MP_E( "ParaLeftMarginRelative",	FO,	MARGIN,		XML_TYPE_PERCENT16, CTF_PARAMARGINALL_REL ),
96 	MP_E( "ParaLeftMargin",			FO,	MARGIN_LEFT,		XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARALEFTMARGIN ),
97 	MP_E( "ParaLeftMarginRelative",	FO,	MARGIN_LEFT,		XML_TYPE_PERCENT16, CTF_PARALEFTMARGIN_REL ),
98 	MP_E( "ParaRightMargin",			FO,	MARGIN_RIGHT,		XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARARIGHTMARGIN ),
99 	MP_E( "ParaRightMarginRelative",	FO,	MARGIN_RIGHT,		XML_TYPE_PERCENT16, CTF_PARARIGHTMARGIN_REL ),
100 	// RES_UL_SPACE
101 	MP_E( "ParaTopMargin",			FO,	MARGIN_TOP,			XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARATOPMARGIN ),
102 	MP_E( "ParaTopMarginRelative",	FO,	MARGIN_TOP,			XML_TYPE_PERCENT16, CTF_PARATOPMARGIN_REL ),
103 	MP_E( "ParaBottomMargin",		FO,	MARGIN_BOTTOM,		XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARABOTTOMMARGIN ),
104 	MP_E( "ParaBottomMarginRelative",FO,	MARGIN_BOTTOM,		XML_TYPE_PERCENT16, CTF_PARABOTTOMMARGIN_REL ),
105 	// RES_CHRATR_CASEMAP
106 	MT_E( "CharCaseMap",		FO,		FONT_VARIANT,	 	XML_TYPE_TEXT_CASEMAP_VAR,	0 ),
107 	MT_E( "CharCaseMap",		FO,		TEXT_TRANSFORM, 	XML_TYPE_TEXT_CASEMAP,	0 ),
108 	// RES_CHRATR_COLOR
109 	MT_ED( "CharColor",		FO,		COLOR, 				XML_TYPE_COLORAUTO|MID_FLAG_MERGE_PROPERTY,	0 ),
110 	MT_ED( "CharColor",		STYLE,	USE_WINDOW_FONT_COLOR,	XML_TYPE_ISAUTOCOLOR|MID_FLAG_MERGE_PROPERTY,	0 ),
111 	// RES_CHRATR_CONTOUR
112 	MT_E( "CharContoured",	STYLE,	TEXT_OUTLINE, 		XML_TYPE_BOOL,	0 ),
113 	// RES_CHRATR_CROSSEDOUT
114 	MT_E( "CharStrikeout",	STYLE,	TEXT_LINE_THROUGH_STYLE, 	XML_TYPE_TEXT_CROSSEDOUT_STYLE|MID_FLAG_MERGE_PROPERTY,	0),
115 	MT_E( "CharStrikeout",	STYLE,	TEXT_LINE_THROUGH_TYPE, 	XML_TYPE_TEXT_CROSSEDOUT_TYPE|MID_FLAG_MERGE_PROPERTY,	0),
116 	MT_E( "CharStrikeout",	STYLE,	TEXT_LINE_THROUGH_WIDTH, 	XML_TYPE_TEXT_CROSSEDOUT_WIDTH|MID_FLAG_MERGE_PROPERTY,	0),
117 	MT_E( "CharStrikeout",	STYLE,	TEXT_LINE_THROUGH_TEXT, 	XML_TYPE_TEXT_CROSSEDOUT_TEXT|MID_FLAG_MERGE_PROPERTY,	0),
118 	// RES_CHRATR_ESCAPEMENT
119 	MT_E( "CharEscapement",		 STYLE, TEXT_POSITION,	XML_TYPE_TEXT_ESCAPEMENT|MID_FLAG_MERGE_ATTRIBUTE|MID_FLAG_MULTI_PROPERTY, 0 ),
120 	MT_E( "CharEscapementHeight", STYLE, TEXT_POSITION,	XML_TYPE_TEXT_ESCAPEMENT_HEIGHT|MID_FLAG_MERGE_ATTRIBUTE|MID_FLAG_MULTI_PROPERTY, 0 ),
121 	// RES_CHRATR_FONT
122 	MT_ED( "CharFontName",	STYLE,	FONT_NAME, 			XML_TYPE_STRING|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_FONTNAME ),
123 	MT_ED( "CharFontName",	FO,		FONT_FAMILY, 		XML_TYPE_TEXT_FONTFAMILYNAME|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_FONTFAMILYNAME ),
124 	MT_ED( "CharFontStyleName",STYLE,	FONT_STYLE_NAME,	XML_TYPE_STRING, CTF_FONTSTYLENAME ),
125 	MT_ED( "CharFontFamily",	STYLE,	FONT_FAMILY_GENERIC,XML_TYPE_TEXT_FONTFAMILY, CTF_FONTFAMILY ),
126 	MT_ED( "CharFontPitch",	STYLE,	FONT_PITCH,			XML_TYPE_TEXT_FONTPITCH, CTF_FONTPITCH ),
127 	MT_ED( "CharFontCharSet",	STYLE,	FONT_CHARSET,		XML_TYPE_TEXT_FONTENCODING, CTF_FONTCHARSET ),
128 	// RES_CHRATR_FONTSIZE
129 	MT_ED( "CharHeight",		  FO,	FONT_SIZE,			XML_TYPE_CHAR_HEIGHT|MID_FLAG_MULTI_PROPERTY, CTF_CHARHEIGHT ),
130 	MT_ED( "CharPropHeight",FO,	FONT_SIZE,			XML_TYPE_CHAR_HEIGHT_PROP|MID_FLAG_MULTI_PROPERTY, CTF_CHARHEIGHT_REL ),
131 	MT_ED( "CharDiffHeight",STYLE,FONT_SIZE_REL,		XML_TYPE_CHAR_HEIGHT_DIFF, CTF_CHARHEIGHT_DIFF ),
132 	// RES_CHRATR_KERNING
133 	MT_E( "CharKerning",		FO,		LETTER_SPACING,		XML_TYPE_TEXT_KERNING, 0 ),
134 	// RES_CHRATR_LANGUAGE
135 	MT_ED( "CharLocale",		FO,		LANGUAGE, 			XML_TYPE_CHAR_LANGUAGE|MID_FLAG_MERGE_PROPERTY, 0 ),
136 	MT_ED( "CharLocale",		FO,		COUNTRY, 			XML_TYPE_CHAR_COUNTRY|MID_FLAG_MERGE_PROPERTY, 0 ),
137 	// RES_CHRATR_POSTURE
138 	MT_E( "CharPosture",		FO,		FONT_STYLE,			XML_TYPE_TEXT_POSTURE, 0 ),
139 	// RES_CHRATR_PROPORTIONALFONTSIZE
140 	// TODO: not used?
141 	// RES_CHRATR_SHADOWED
142 	MT_E( "CharShadowed",	FO,		TEXT_SHADOW,		XML_TYPE_TEXT_SHADOWED, 0 ),
143 	// RES_CHRATR_UNDERLINE
144 	MT_E( "CharUnderline",	STYLE,	TEXT_UNDERLINE_STYLE,		XML_TYPE_TEXT_UNDERLINE_STYLE|MID_FLAG_MERGE_PROPERTY, CTF_UNDERLINE ),
145 	MT_E( "CharUnderline",	STYLE,	TEXT_UNDERLINE_TYPE,		XML_TYPE_TEXT_UNDERLINE_TYPE|MID_FLAG_MERGE_PROPERTY, 0 ),
146 	MT_E( "CharUnderline",	STYLE,	TEXT_UNDERLINE_WIDTH,		XML_TYPE_TEXT_UNDERLINE_WIDTH|MID_FLAG_MERGE_PROPERTY, 0 ),
147 	MT_E( "CharUnderlineColor",	STYLE,	TEXT_UNDERLINE_COLOR,		XML_TYPE_TEXT_UNDERLINE_COLOR|MID_FLAG_MULTI_PROPERTY, CTF_UNDERLINE_COLOR	),
148 	MT_E( "CharUnderlineHasColor",	STYLE,	TEXT_UNDERLINE_COLOR,		XML_TYPE_TEXT_UNDERLINE_HASCOLOR|MID_FLAG_MERGE_ATTRIBUTE, CTF_UNDERLINE_HASCOLOR	),
149 	// RES_CHRATR_WEIGHT
150 	MT_E( "CharWeight",		FO,		FONT_WEIGHT,		XML_TYPE_TEXT_WEIGHT, 0 ),
151 	// RES_CHRATR_WORDLINEMODE
152 	MT_E( "CharWordMode",	STYLE,	TEXT_UNDERLINE_MODE,		XML_TYPE_TEXT_LINE_MODE|MID_FLAG_MERGE_PROPERTY, 0 ),
153     MT_E( "CharWordMode",   STYLE,  TEXT_OVERLINE_MODE,     XML_TYPE_TEXT_LINE_MODE|MID_FLAG_MERGE_PROPERTY, 0 ),
154     MT_E( "CharWordMode",   STYLE,  TEXT_LINE_THROUGH_MODE,     XML_TYPE_TEXT_LINE_MODE|MID_FLAG_MERGE_PROPERTY, 0 ),
155 	// RES_CHRATR_AUTOKERN
156 	MT_E( "CharAutoKerning",	STYLE,	LETTER_KERNING,		XML_TYPE_BOOL, 0 ),
157 	// RES_CHRATR_BLINK
158 	MT_E( "CharFlash",		STYLE,	TEXT_BLINKING,		XML_TYPE_BOOL, 0 ),
159 	// RES_CHRATR_NOHYPHEN
160 	// TODO: not used?
161 	// RES_CHRATR_NOLINEBREAK
162 	// TODO: not used?
163 	// RES_CHRATR_BACKGROUND
164 	MT_E( "CharBackColor",	FO,	BACKGROUND_COLOR, XML_TYPE_COLORTRANSPARENT|MID_FLAG_MULTI_PROPERTY, 0 ),
165 	MT_E( "CharBackTransparent",	FO,	BACKGROUND_COLOR, XML_TYPE_ISTRANSPARENT|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
166 	MT_E( "CharBackColor",	FO,	TEXT_BACKGROUND_COLOR, XML_TYPE_COLOR|MID_FLAG_SPECIAL_ITEM_EXPORT, CTF_OLDTEXTBACKGROUND ),
167 	// RES_CHRATR_CJK_FONT
168 	MT_ED( "CharFontNameAsian",	STYLE,	FONT_NAME_ASIAN, 			XML_TYPE_STRING|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_FONTNAME_CJK ),
169 	MT_ED( "CharFontNameAsian",	STYLE,		FONT_FAMILY_ASIAN, 		XML_TYPE_TEXT_FONTFAMILYNAME|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_FONTFAMILYNAME_CJK ),
170 	MT_ED( "CharFontStyleNameAsian",STYLE,	FONT_STYLE_NAME_ASIAN,	XML_TYPE_STRING, CTF_FONTSTYLENAME_CJK ),
171 	MT_ED( "CharFontFamilyAsian",	STYLE,	FONT_FAMILY_GENERIC_ASIAN,XML_TYPE_TEXT_FONTFAMILY, CTF_FONTFAMILY_CJK ),
172 	MT_ED( "CharFontPitchAsian",	STYLE,	FONT_PITCH_ASIAN,			XML_TYPE_TEXT_FONTPITCH, CTF_FONTPITCH_CJK ),
173 	MT_ED( "CharFontCharSetAsian",	STYLE,	FONT_CHARSET_ASIAN,		XML_TYPE_TEXT_FONTENCODING, CTF_FONTCHARSET_CJK ),
174 	// RES_CHRATR_CJK_FONTSIZE
175 	MT_ED( "CharHeightAsian",		  STYLE,	FONT_SIZE_ASIAN,			XML_TYPE_CHAR_HEIGHT|MID_FLAG_MULTI_PROPERTY, CTF_CHARHEIGHT_CJK ),
176 	MT_ED( "CharPropHeightAsian",STYLE,	FONT_SIZE_ASIAN,			XML_TYPE_CHAR_HEIGHT_PROP|MID_FLAG_MULTI_PROPERTY, CTF_CHARHEIGHT_REL_CJK ),
177 	MT_ED( "CharDiffHeightAsian",STYLE,FONT_SIZE_REL_ASIAN,		XML_TYPE_CHAR_HEIGHT_DIFF, CTF_CHARHEIGHT_DIFF_CJK ),
178 	// RES_CHRATR_CJK_LANGUAGE
179 	MT_ED( "CharLocaleAsian",		STYLE,		LANGUAGE_ASIAN, 			XML_TYPE_CHAR_LANGUAGE|MID_FLAG_MERGE_PROPERTY, 0 ),
180 	MT_ED( "CharLocaleAsian",		STYLE,		COUNTRY_ASIAN, 			XML_TYPE_CHAR_COUNTRY|MID_FLAG_MERGE_PROPERTY, 0 ),
181 	// RES_CHRATR_CJK_POSTURE
182 	MT_E( "CharPostureAsian",		STYLE,		FONT_STYLE_ASIAN,			XML_TYPE_TEXT_POSTURE, 0 ),
183 	// RES_CHRATR_CJK_WEIGHT
184 	MT_E( "CharWeightAsian",		STYLE,		FONT_WEIGHT_ASIAN,		XML_TYPE_TEXT_WEIGHT, 0 ),
185 	// RES_CHRATR_CTL_FONT
186 	MT_ED( "CharFontNameComplex",	STYLE,	FONT_NAME_COMPLEX, 			XML_TYPE_STRING|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_FONTNAME_CTL ),
187 	MT_ED( "CharFontNameComplex",	STYLE,		FONT_FAMILY_COMPLEX, 		XML_TYPE_TEXT_FONTFAMILYNAME|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_FONTFAMILYNAME_CTL ),
188 	MT_ED( "CharFontStyleNameComplex",STYLE,	FONT_STYLE_NAME_COMPLEX,	XML_TYPE_STRING, CTF_FONTSTYLENAME_CTL ),
189 	MT_ED( "CharFontFamilyComplex",	STYLE,	FONT_FAMILY_GENERIC_COMPLEX,XML_TYPE_TEXT_FONTFAMILY, CTF_FONTFAMILY_CTL ),
190 	MT_ED( "CharFontPitchComplex",	STYLE,	FONT_PITCH_COMPLEX,			XML_TYPE_TEXT_FONTPITCH, CTF_FONTPITCH_CTL ),
191 	MT_ED( "CharFontCharSetComplex",	STYLE,	FONT_CHARSET_COMPLEX,		XML_TYPE_TEXT_FONTENCODING, CTF_FONTCHARSET_CTL ),
192 	// RES_CHRATR_CTL_FONTSIZE
193 	MT_ED( "CharHeightComplex",		  STYLE,	FONT_SIZE_COMPLEX,			XML_TYPE_CHAR_HEIGHT|MID_FLAG_MULTI_PROPERTY, CTF_CHARHEIGHT_CTL ),
194 	MT_ED( "CharPropHeightComplex",STYLE,	FONT_SIZE_COMPLEX,			XML_TYPE_CHAR_HEIGHT_PROP|MID_FLAG_MULTI_PROPERTY, CTF_CHARHEIGHT_REL_CTL ),
195 	MT_ED( "CharDiffHeightComplex",STYLE,FONT_SIZE_REL_COMPLEX,		XML_TYPE_CHAR_HEIGHT_DIFF, CTF_CHARHEIGHT_DIFF_CTL ),
196 	// RES_CHRATR_CTL_LANGUAGE
197 	MT_ED( "CharLocaleComplex",		STYLE,		LANGUAGE_COMPLEX, 			XML_TYPE_CHAR_LANGUAGE|MID_FLAG_MERGE_PROPERTY, 0 ),
198 	MT_ED( "CharLocaleComplex",		STYLE,		COUNTRY_COMPLEX, 			XML_TYPE_CHAR_COUNTRY|MID_FLAG_MERGE_PROPERTY, 0 ),
199 	// RES_CHRATR_CTL_POSTURE
200 	MT_E( "CharPostureComplex",		STYLE,		FONT_STYLE_COMPLEX,			XML_TYPE_TEXT_POSTURE, 0 ),
201 	// RES_CHRATR_CTL_WEIGHT
202 	MT_E( "CharWeightComplex",		STYLE,		FONT_WEIGHT_COMPLEX,		XML_TYPE_TEXT_WEIGHT, 0 ),
203 	// RES_CHRATR_ROTATE
204 	MT_E( "CharRotation",			STYLE,		TEXT_ROTATION_ANGLE,		XML_TYPE_TEXT_ROTATION_ANGLE, 0 ),
205 	MT_E( "CharRotationIsFitToLine",	STYLE,		TEXT_ROTATION_SCALE,		XML_TYPE_TEXT_ROTATION_SCALE, 0 ),
206 	// RES_CHRATR_EMPHASIS_MARK
207 	MT_E( "CharEmphasis",			STYLE,		TEXT_EMPHASIZE,				XML_TYPE_TEXT_EMPHASIZE, 0 ),
208 	// RES_CHRATR_TWO_LINES
209 	MT_E( "CharCombineIsOn",			STYLE,		TEXT_COMBINE,				XML_TYPE_TEXT_COMBINE, 0 ),
210 	MT_E( "CharCombinePrefix",		STYLE,		TEXT_COMBINE_START_CHAR,	XML_TYPE_TEXT_COMBINECHAR, 0 ),
211 	MT_E( "CharCombineSuffix",		STYLE,		TEXT_COMBINE_END_CHAR,		XML_TYPE_TEXT_COMBINECHAR, 0 ),
212 	// RES_CHRATR_SCALEW
213 	MT_E( "CharScaleWidth",			STYLE,		TEXT_SCALE,					XML_TYPE_PERCENT16, 0 ),
214 	//RES_CHRATR_RELIEF
215 	MT_E( "CharRelief",				STYLE,		FONT_RELIEF,				XML_TYPE_TEXT_FONT_RELIEF, 0 ),
216     // RES_CHRATR_HIDDEN
217     MT_E( "CharHidden",              TEXT,       DISPLAY,                    XML_TYPE_TEXT_HIDDEN_AS_DISPLAY|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_TEXT_DISPLAY ),
218     // RES_CHRATR_OVERLINE
219     MT_E( "CharOverline",   STYLE,  TEXT_OVERLINE_STYLE,        XML_TYPE_TEXT_OVERLINE_STYLE|MID_FLAG_MERGE_PROPERTY, 0 ),
220     MT_E( "CharOverline",   STYLE,  TEXT_OVERLINE_TYPE,     XML_TYPE_TEXT_OVERLINE_TYPE|MID_FLAG_MERGE_PROPERTY, 0 ),
221     MT_E( "CharOverline",   STYLE,  TEXT_OVERLINE_WIDTH,        XML_TYPE_TEXT_OVERLINE_WIDTH|MID_FLAG_MERGE_PROPERTY, 0 ),
222     MT_E( "CharOverlineColor",  STYLE,  TEXT_OVERLINE_COLOR,        XML_TYPE_TEXT_OVERLINE_COLOR|MID_FLAG_MULTI_PROPERTY, 0 ),
223     MT_E( "CharOverlineHasColor",   STYLE,  TEXT_OVERLINE_COLOR,        XML_TYPE_TEXT_OVERLINE_HASCOLOR|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
224 
225     // RES_TXTATR_INETFMT
226 	// TODO
227 	// RES_TXTATR_REFMARK
228 	// TODO
229 	// RES_TXTATR_TOXMARK
230 	// TODO
231 	// RES_TXTATR_CHARFMT
232 //	M_E_SI( TEXT,	style_name,			RES_TXTATR_CHARFMT, 0 ),
233 	// RES_TXTATR_CJK_RUBY
234 	// TODO
235 	// RES_TXTATR_FIELD
236 	// TODO
237 	// RES_TXTATR_FLYCNT
238 	// TODO
239 	// RES_TXTATR_FTN
240 	// TODO
241 	// RES_TXTATR_SOFTHYPH
242 	// TODO
243 	// RES_TXTATR_HARDBLANK
244 	// TODO
245 
246 	// RES_PARATR_LINESPACING
247 	MP_E( "ParaLineSpacing",		FO,		LINE_HEIGHT,			XML_TYPE_LINE_SPACE_FIXED, 0 ),
248 	MP_E( "ParaLineSpacing",		STYLE,	LINE_HEIGHT_AT_LEAST,	XML_TYPE_LINE_SPACE_MINIMUM, 0 ),
249 	MP_E( "ParaLineSpacing",		STYLE,	LINE_SPACING,			XML_TYPE_LINE_SPACE_DISTANCE, 0 ),
250 	// RES_PARATR_ADJUST
251 	MP_E( "ParaAdjust",			FO,		TEXT_ALIGN,			XML_TYPE_TEXT_ADJUST, CTF_SD_SHAPE_PARA_ADJUST ),
252 	MP_E( "ParaLastLineAdjust",	FO,		TEXT_ALIGN_LAST,	XML_TYPE_TEXT_ADJUSTLAST, CTF_PARA_ADJUSTLAST ),
253 	MP_E( "ParaExpandSingleWord",STYLE,	JUSTIFY_SINGLE_WORD,XML_TYPE_BOOL, 0 ),
254 	// RES_PARATR_SPLIT
255 	MP_E( "ParaSplit",			FO,     KEEP_TOGETHER,		XML_TYPE_TEXT_SPLIT, 0 ),
256 	// RES_PARATR_ORPHANS
257 	MP_E( "ParaOrphans",			FO,		ORPHANS,			XML_TYPE_NUMBER8, 0 ),
258 	// RES_PARATR_WIDOWS
259 	MP_E( "ParaWidows",			FO,		WIDOWS,				XML_TYPE_NUMBER8, 0 ),
260 	// RES_PARATR_TABSTOP
261 	MP_ED( "ParaTabStops",		STYLE,	TAB_STOPS,			MID_FLAG_ELEMENT_ITEM|XML_TYPE_TEXT_TABSTOP, CTF_TABSTOP ),	// this is not realy a string!
262 	// RES_PARATR_HYPHENZONE
263 	MT_E( "ParaIsHyphenation",	FO,		HYPHENATE,			XML_TYPE_BOOL, 0 ),
264 	MT_E( "ParaHyphenationMaxLeadingChars", FO, HYPHENATION_REMAIN_CHAR_COUNT, XML_TYPE_NUMBER16, 0 ),
265 	MT_E( "ParaHyphenationMaxTrailingChars",FO, HYPHENATION_PUSH_CHAR_COUNT, XML_TYPE_NUMBER16, 0 ),
266 	MP_E( "ParaHyphenationMaxHyphens",	FO, HYPHENATION_LADDER_COUNT, XML_TYPE_NUMBER16_NONE, 0 ),
267 	// RES_PARATR_DROP
268 	MP_E( "DropCapWholeWord",	STYLE,	LENGTH,		MID_FLAG_SPECIAL_ITEM|XML_TYPE_BOOL, CTF_DROPCAPWHOLEWORD ),
269 	MP_E( "DropCapCharStyleName",	STYLE,	STYLE_NAME,	MID_FLAG_SPECIAL_ITEM|XML_TYPE_STRING, CTF_DROPCAPCHARSTYLE ),
270 	MP_E( "DropCapFormat",		STYLE,	DROP_CAP,	MID_FLAG_ELEMENT_ITEM|XML_TYPE_TEXT_DROPCAP, CTF_DROPCAPFORMAT ),
271 	// RES_PARATR_REGISTER
272 	MP_E( "ParaRegisterModeActive",	STYLE,	REGISTER_TRUE,	XML_TYPE_BOOL, 0 ),
273 	// RES_PARATR_NUMRULE
274 	MP_E( "NumberingStyleName",	STYLE,	LIST_STYLE_NAME,	MID_FLAG_SPECIAL_ITEM|XML_TYPE_STYLENAME, CTF_NUMBERINGSTYLENAME ),
275 	MP_E( "NumberingRules",		TEXT,	ENABLE_NUMBERING,	MID_FLAG_NO_PROPERTY|XML_TYPE_BOOL, CTF_ALIEN_ATTRIBUTE_IMPORT ),
276 
277 	// RES_FILL_ORDER
278 	// not required
279 	// RES_FRM_SIZE
280 	// not required
281 	// RES_PAPER_BIN
282 	// not required
283 	// RES_LR_SPACE
284 
285 	MP_E( "ParaFirstLineIndent",		FO,	TEXT_INDENT,		XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_PARAFIRSTLINE ),
286 	MP_E( "ParaFirstLineIndentRelative",	FO,	TEXT_INDENT,	XML_TYPE_PERCENT, CTF_PARAFIRSTLINE_REL ),
287 	MP_E( "ParaIsAutoFirstLineIndent",	STYLE, AUTO_TEXT_INDENT, 	XML_TYPE_BOOL, 0 ),
288 	// RES_PAGEDESC
289 	MP_E( "PageDescName",			STYLE,	MASTER_PAGE_NAME,			MID_FLAG_SPECIAL_ITEM|XML_TYPE_STYLENAME, CTF_PAGEDESCNAME ),
290 	MP_E( "PageNumberOffset",		STYLE,	PAGE_NUMBER,			XML_TYPE_NUMBER16_AUTO, 0 ),
291 	// RES_BREAK : TODO: does this work?
292 	MP_E( "BreakType", 		FO,	BREAK_BEFORE,		XML_TYPE_TEXT_BREAKBEFORE|MID_FLAG_MULTI_PROPERTY, 0 ),
293 	MP_E( "BreakType", 		FO,	BREAK_AFTER,		XML_TYPE_TEXT_BREAKAFTER, 0 ),
294 	// RES_CNTNT
295 	// not required
296 	// RES_HEADER
297 	// not required
298 	// RES_FOOTER
299 	// not required
300 	// RES_PRINT
301 	// not required
302 	// RES_OPAQUE
303 	// not required
304 	// RES_PROTECT
305 	// not required
306 	// RES_SURROUND
307 	// not required
308 	// RES_VERT_ORIENT
309 	// not required
310 	// RES_HORI_ORIENT
311 	// not required
312 	// RES_ANCHOR
313 	// not required
314 	// RES_BACKGROUND
315 	MP_E( "ParaBackColor",	FO,	BACKGROUND_COLOR,		XML_TYPE_COLORTRANSPARENT|MID_FLAG_MULTI_PROPERTY, 0 ),
316 	MP_E( "ParaBackTransparent",	FO,	BACKGROUND_COLOR,		XML_TYPE_ISTRANSPARENT|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
317 	MP_E( "ParaBackGraphicLocation",	STYLE,	POSITION,	MID_FLAG_SPECIAL_ITEM|XML_TYPE_BUILDIN_CMP_ONLY, CTF_BACKGROUND_POS  ),
318 	MP_E( "ParaBackGraphicFilter",STYLE,	FILTER_NAME,	MID_FLAG_SPECIAL_ITEM|XML_TYPE_STRING, CTF_BACKGROUND_FILTER ),
319 	MP_E( "ParaBackGraphicURL",	STYLE,	BACKGROUND_IMAGE,	MID_FLAG_ELEMENT_ITEM|XML_TYPE_STRING, CTF_BACKGROUND_URL ),
320 	// RES_BOX
321 	MP_E( "LeftBorder",			STYLE,	BORDER_LINE_WIDTH,		  XML_TYPE_BORDER_WIDTH, CTF_ALLBORDERWIDTH ),
322 	MP_E( "LeftBorder",			STYLE,	BORDER_LINE_WIDTH_LEFT,	  XML_TYPE_BORDER_WIDTH, CTF_LEFTBORDERWIDTH ),
323 	MP_E( "RightBorder",			STYLE,	BORDER_LINE_WIDTH_RIGHT,  XML_TYPE_BORDER_WIDTH, CTF_RIGHTBORDERWIDTH ),
324 	MP_E( "TopBorder",			STYLE,	BORDER_LINE_WIDTH_TOP,	  XML_TYPE_BORDER_WIDTH, CTF_TOPBORDERWIDTH ),
325 	MP_E( "BottomBorder",		STYLE,	BORDER_LINE_WIDTH_BOTTOM, XML_TYPE_BORDER_WIDTH, CTF_BOTTOMBORDERWIDTH ),
326 
327 	MP_E( "LeftBorderDistance",	FO, 	PADDING,				  XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_ALLBORDERDISTANCE ), // need special import filtering
328 	MP_E( "LeftBorderDistance",	FO, 	PADDING_LEFT,			  XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_LEFTBORDERDISTANCE ),
329 	MP_E( "RightBorderDistance",	FO, 	PADDING_RIGHT,			  XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_RIGHTBORDERDISTANCE ),
330 	MP_E( "TopBorderDistance",	FO, 	PADDING_TOP,			  XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_TOPBORDERDISTANCE ),
331 	MP_E( "BottomBorderDistance",FO, 	PADDING_BOTTOM,			  XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_BOTTOMBORDERDISTANCE ),
332 
333 	MP_E( "LeftBorder",			FO,		BORDER,					  XML_TYPE_BORDER, CTF_ALLBORDER ),
334 	MP_E( "LeftBorder",			FO,		BORDER_LEFT,			  XML_TYPE_BORDER, CTF_LEFTBORDER ),
335 	MP_E( "RightBorder",			FO,		BORDER_RIGHT,			  XML_TYPE_BORDER, CTF_RIGHTBORDER ),
336 	MP_E( "TopBorder",			FO,		BORDER_TOP,				  XML_TYPE_BORDER, CTF_TOPBORDER ),
337 	MP_E( "BottomBorder",		FO,		BORDER_BOTTOM,			  XML_TYPE_BORDER, CTF_BOTTOMBORDER ),
338 	// RES_SHADOW
339 	MP_E( "ParaShadowFormat",	STYLE,	SHADOW,		XML_TYPE_TEXT_SHADOW, 0 ),
340 	// RES_FRMMACRO
341 	// not required
342 	// RES_COL
343 	// not required
344 	// RES_KEEP
345 	MP_E( "ParaKeepTogether",	FO, KEEP_WITH_NEXT,		XML_TYPE_TEXT_KEEP, 0 ),
346 	// RES_URL
347 	// not required
348 	// RES_EDIT_IN_READONLY
349 	// not required
350 	// RES_LAYOUT_SPLIT
351 	// not required
352 	// RES_CHAIN
353 	// not required
354 
355 	// RES_LINENUMBER
356 	MP_E( "ParaLineNumberCount",	TEXT,	NUMBER_LINES,			XML_TYPE_BOOL, 0 ),
357 	MP_E( "ParaLineNumberStartValue", TEXT, LINE_NUMBER,			XML_TYPE_NUMBER, 0 ),
358 
359 	// RES_FTN_AT_TXTEND
360 	// not required
361 	// RES_END_AT_TXTEND
362 	// not required
363 	MP_ED( "ParaIsCharacterDistance", STYLE, TEXT_AUTOSPACE, XML_TYPE_TEXT_AUTOSPACE, 0 ),
364 	MP_ED( "ParaIsHangingPunctuation", STYLE, PUNCTUATION_WRAP, XML_TYPE_TEXT_PUNCTUATION_WRAP, 0 ),
365 	MP_ED( "ParaIsForbiddenRules", STYLE, LINE_BREAK, XML_TYPE_TEXT_LINE_BREAK, 0 ),
366 	MP_E( "TabStopDistance", STYLE, TAB_STOP_DISTANCE, XML_TYPE_MEASURE, 0 ),
367 
368 	// RES_PARATR_VERTALIGN
369 	MP_E( "ParaVertAlignment", STYLE, VERTICAL_ALIGN,	XML_TYPE_TEXT_VERTICAL_ALIGN, 0 ),
370 
371     // RES_PARATR_SNAPTOGRID
372     MP_E( "SnapToGrid", STYLE, SNAP_TO_LAYOUT_GRID, XML_TYPE_BOOL, 0 ),
373 
374     MP_ED( "WritingMode",      STYLE, WRITING_MODE,       XML_TYPE_TEXT_WRITING_MODE_WITH_DEFAULT, CTF_TEXTWRITINGMODE ),
375 
376     MP_E( "ParaIsConnectBorder", STYLE, JOIN_BORDER,  XML_TYPE_BOOL, 0 ),
377 
378     MP_E( "DefaultOutlineLevel", STYLE, DEFAULT_OUTLINE_LEVEL, XML_TYPE_TEXT_NUMBER8_ONE_BASED|MID_FLAG_SPECIAL_ITEM_EXPORT|MID_FLAG_NO_PROPERTY_IMPORT, CTF_DEFAULT_OUTLINE_LEVEL ),
379 
380 	MP_ED( "FontIndependentLineSpacing", STYLE, FONT_INDEPENDENT_LINE_SPACING, XML_TYPE_BOOL, 0 ),
381 
382     M_END()
383 };
384 
385 
386 XMLPropertyMapEntry aXMLAdditionalTextDefaultsMap[] =
387 {
388     // RES_FOLLOW_TEXT_FLOW - DVO, OD 01.10.2003 #i18732#
389     MG_ED( "IsFollowingTextFlow", STYLE, FLOW_WITH_TEXT,      XML_TYPE_BOOL, 0 ),
390 
391     // OD 2004-05-05 #i28701# - RES_WRAP_INFLUENCE_ON_OBJPOS
392     MG_ED( "WrapInfluenceOnPosition", DRAW, WRAP_INFLUENCE_ON_POSITION, XML_TYPE_WRAP_INFLUENCE_ON_POSITION, 0 ),
393 
394     M_END()
395 };
396 
397 XMLPropertyMapEntry aXMLTextPropMap[] =
398 {
399 	// RES_CHRATR_CASEMAP
400 	MT_E( "CharCaseMap",		FO,		FONT_VARIANT,	 	XML_TYPE_TEXT_CASEMAP_VAR,	0 ),
401 	MT_E( "CharCaseMap",		FO,		TEXT_TRANSFORM, 	XML_TYPE_TEXT_CASEMAP,	0 ),
402 	// RES_CHRATR_COLOR
403 	MT_ED( "CharColor",		FO,		COLOR, 				XML_TYPE_COLORAUTO|MID_FLAG_MERGE_PROPERTY,	0 ),
404 	MT_ED( "CharColor",		STYLE,	USE_WINDOW_FONT_COLOR,	XML_TYPE_ISAUTOCOLOR|MID_FLAG_MERGE_PROPERTY,	0 ),
405 	// RES_CHRATR_CONTOUR
406 	MT_E( "CharContoured",	STYLE,	TEXT_OUTLINE, 		XML_TYPE_BOOL,	0 ),
407 	// RES_CHRATR_CROSSEDOUT
408 	MT_E( "CharStrikeout",	STYLE,	TEXT_LINE_THROUGH_STYLE, 	XML_TYPE_TEXT_CROSSEDOUT_STYLE|MID_FLAG_MERGE_PROPERTY,	0),
409 	MT_E( "CharStrikeout",	STYLE,	TEXT_LINE_THROUGH_TYPE, 	XML_TYPE_TEXT_CROSSEDOUT_TYPE|MID_FLAG_MERGE_PROPERTY,	0),
410 	MT_E( "CharStrikeout",	STYLE,	TEXT_LINE_THROUGH_WIDTH, 	XML_TYPE_TEXT_CROSSEDOUT_WIDTH|MID_FLAG_MERGE_PROPERTY,	0),
411 	MT_E( "CharStrikeout",	STYLE,	TEXT_LINE_THROUGH_TEXT, 	XML_TYPE_TEXT_CROSSEDOUT_TEXT|MID_FLAG_MERGE_PROPERTY,	0),
412 	// RES_CHRATR_ESCAPEMENT
413 	MT_E( "CharEscapement",		 STYLE, TEXT_POSITION,	XML_TYPE_TEXT_ESCAPEMENT|MID_FLAG_MERGE_ATTRIBUTE|MID_FLAG_MULTI_PROPERTY, 0 ),
414 	MT_E( "CharEscapementHeight", STYLE, TEXT_POSITION,	XML_TYPE_TEXT_ESCAPEMENT_HEIGHT|MID_FLAG_MERGE_ATTRIBUTE|MID_FLAG_MULTI_PROPERTY, 0 ),
415 	// RES_CHRATR_FONT
416 	MT_ED( "CharFontName",	STYLE,	FONT_NAME, 			XML_TYPE_STRING|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_FONTNAME ),
417 	MT_ED( "CharFontName",	FO,		FONT_FAMILY, 		XML_TYPE_TEXT_FONTFAMILYNAME|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_FONTFAMILYNAME ),
418 	MT_ED( "CharFontStyleName",STYLE,	FONT_STYLE_NAME,	XML_TYPE_STRING, CTF_FONTSTYLENAME ),
419 	MT_ED( "CharFontFamily",	STYLE,	FONT_FAMILY_GENERIC,XML_TYPE_TEXT_FONTFAMILY, CTF_FONTFAMILY ),
420 	MT_ED( "CharFontPitch",	STYLE,	FONT_PITCH,			XML_TYPE_TEXT_FONTPITCH, CTF_FONTPITCH ),
421 	MT_ED( "CharFontCharSet",	STYLE,	FONT_CHARSET,		XML_TYPE_TEXT_FONTENCODING, CTF_FONTCHARSET ),
422 	// RES_CHRATR_FONTSIZE
423 	MT_ED( "CharHeight",		  FO,	FONT_SIZE,			XML_TYPE_CHAR_HEIGHT|MID_FLAG_MULTI_PROPERTY, CTF_CHARHEIGHT ),
424 	MT_ED( "CharPropHeight",FO,	FONT_SIZE,			XML_TYPE_CHAR_HEIGHT_PROP|MID_FLAG_MULTI_PROPERTY, CTF_CHARHEIGHT_REL ),
425 	MT_ED( "CharDiffHeight",STYLE,FONT_SIZE_REL,		XML_TYPE_CHAR_HEIGHT_DIFF, CTF_CHARHEIGHT_DIFF ),
426 	// RES_CHRATR_KERNING
427 	MT_E( "CharKerning",		FO,		LETTER_SPACING,		XML_TYPE_TEXT_KERNING, 0 ),
428 	// RES_CHRATR_LANGUAGE
429 	MT_ED( "CharLocale",		FO,		LANGUAGE, 			XML_TYPE_CHAR_LANGUAGE|MID_FLAG_MERGE_PROPERTY, 0 ),
430 	MT_ED( "CharLocale",		FO,		COUNTRY, 			XML_TYPE_CHAR_COUNTRY|MID_FLAG_MERGE_PROPERTY, 0 ),
431 	// RES_CHRATR_POSTURE
432 	MT_E( "CharPosture",		FO,		FONT_STYLE,			XML_TYPE_TEXT_POSTURE, 0 ),
433 	// RES_CHRATR_PROPORTIONALFONTSIZE
434 	// TODO: not used?
435 	// RES_CHRATR_SHADOWED
436 	MT_E( "CharShadowed",	FO,		TEXT_SHADOW,		XML_TYPE_TEXT_SHADOWED, 0 ),
437 	// BIS HIER GEPRUEFT!
438 	// RES_CHRATR_UNDERLINE
439 	MT_E( "CharUnderline",	STYLE,	TEXT_UNDERLINE_STYLE,		XML_TYPE_TEXT_UNDERLINE_STYLE|MID_FLAG_MERGE_PROPERTY, CTF_UNDERLINE ),
440 	MT_E( "CharUnderline",	STYLE,	TEXT_UNDERLINE_TYPE,		XML_TYPE_TEXT_UNDERLINE_TYPE|MID_FLAG_MERGE_PROPERTY, 0 ),
441 	MT_E( "CharUnderline",	STYLE,	TEXT_UNDERLINE_WIDTH,		XML_TYPE_TEXT_UNDERLINE_WIDTH|MID_FLAG_MERGE_PROPERTY, 0 ),
442 	MT_E( "CharUnderlineColor",	STYLE,	TEXT_UNDERLINE_COLOR,		XML_TYPE_TEXT_UNDERLINE_COLOR|MID_FLAG_MULTI_PROPERTY, CTF_UNDERLINE_COLOR	),
443 	MT_E( "CharUnderlineHasColor",	STYLE,	TEXT_UNDERLINE_COLOR,		XML_TYPE_TEXT_UNDERLINE_HASCOLOR|MID_FLAG_MERGE_ATTRIBUTE, CTF_UNDERLINE_HASCOLOR	),
444 	// RES_CHRATR_WEIGHT
445 	MT_E( "CharWeight",		FO,		FONT_WEIGHT,		XML_TYPE_TEXT_WEIGHT, 0 ),
446 	// RES_CHRATR_WORDLINEMODE
447 	MT_E( "CharWordMode",	STYLE,	TEXT_UNDERLINE_MODE,		XML_TYPE_TEXT_LINE_MODE|MID_FLAG_MERGE_PROPERTY, 0 ),
448     MT_E( "CharWordMode",   STYLE,  TEXT_OVERLINE_MODE,     XML_TYPE_TEXT_LINE_MODE|MID_FLAG_MERGE_PROPERTY, 0 ),
449     MT_E( "CharWordMode",   STYLE,  TEXT_LINE_THROUGH_MODE,     XML_TYPE_TEXT_LINE_MODE|MID_FLAG_MERGE_PROPERTY, 0 ),
450 	// RES_CHRATR_AUTOKERN
451 	MT_E( "CharAutoKerning",	STYLE,	LETTER_KERNING,		XML_TYPE_BOOL, 0 ),
452 	// RES_CHRATR_BLINK
453 	MT_E( "CharFlash",		STYLE,	TEXT_BLINKING,		XML_TYPE_BOOL, 0 ),
454 	// RES_CHRATR_NOHYPHEN
455 	// TODO: not used?
456 	// RES_CHRATR_NOLINEBREAK
457 	// TODO: not used?
458 	// RES_CHRATR_BACKGROUND
459 	MT_E( "CharBackColor",	FO,	BACKGROUND_COLOR, XML_TYPE_COLORTRANSPARENT|MID_FLAG_MULTI_PROPERTY, 0 ),
460 	MT_E( "CharBackTransparent",	FO,	BACKGROUND_COLOR, XML_TYPE_ISTRANSPARENT|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
461 	MT_E( "CharBackColor",	FO,	TEXT_BACKGROUND_COLOR, XML_TYPE_COLOR|MID_FLAG_SPECIAL_ITEM_EXPORT, CTF_OLDTEXTBACKGROUND ),
462 	// RES_CHRATR_CJK_FONT
463 	MT_ED( "CharFontNameAsian",	STYLE,	FONT_NAME_ASIAN, 			XML_TYPE_STRING|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_FONTNAME_CJK ),
464 	MT_ED( "CharFontNameAsian",	STYLE,		FONT_FAMILY_ASIAN, 		XML_TYPE_TEXT_FONTFAMILYNAME|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_FONTFAMILYNAME_CJK ),
465 	MT_ED( "CharFontStyleNameAsian",STYLE,	FONT_STYLE_NAME_ASIAN,	XML_TYPE_STRING, CTF_FONTSTYLENAME_CJK ),
466 	MT_ED( "CharFontFamilyAsian",	STYLE,	FONT_FAMILY_GENERIC_ASIAN,XML_TYPE_TEXT_FONTFAMILY, CTF_FONTFAMILY_CJK ),
467 	MT_ED( "CharFontPitchAsian",	STYLE,	FONT_PITCH_ASIAN,			XML_TYPE_TEXT_FONTPITCH, CTF_FONTPITCH_CJK ),
468 	MT_ED( "CharFontCharSetAsian",	STYLE,	FONT_CHARSET_ASIAN,		XML_TYPE_TEXT_FONTENCODING, CTF_FONTCHARSET_CJK ),
469 	// RES_CHRATR_CJK_FONTSIZE
470 	MT_ED( "CharHeightAsian",		  STYLE,	FONT_SIZE_ASIAN,			XML_TYPE_CHAR_HEIGHT|MID_FLAG_MULTI_PROPERTY, CTF_CHARHEIGHT_CJK ),
471 	MT_ED( "CharPropHeightAsian",STYLE,	FONT_SIZE_ASIAN,			XML_TYPE_CHAR_HEIGHT_PROP|MID_FLAG_MULTI_PROPERTY, CTF_CHARHEIGHT_REL_CJK ),
472 	MT_ED( "CharDiffHeightAsian",STYLE,FONT_SIZE_REL_ASIAN,		XML_TYPE_CHAR_HEIGHT_DIFF, CTF_CHARHEIGHT_DIFF_CJK ),
473 	// RES_CHRATR_CJK_LANGUAGE
474 	MT_ED( "CharLocaleAsian",		STYLE,		LANGUAGE_ASIAN, 			XML_TYPE_CHAR_LANGUAGE|MID_FLAG_MERGE_PROPERTY, 0 ),
475 	MT_ED( "CharLocaleAsian",		STYLE,		COUNTRY_ASIAN, 			XML_TYPE_CHAR_COUNTRY|MID_FLAG_MERGE_PROPERTY, 0 ),
476 	// RES_CHRATR_CJK_POSTURE
477 	MT_E( "CharPostureAsian",		STYLE,		FONT_STYLE_ASIAN,			XML_TYPE_TEXT_POSTURE, 0 ),
478 	// RES_CHRATR_CJK_WEIGHT
479 	MT_E( "CharWeightAsian",		STYLE,		FONT_WEIGHT_ASIAN,		XML_TYPE_TEXT_WEIGHT, 0 ),
480 	// RES_CHRATR_CTL_FONT
481 	MT_ED( "CharFontNameComplex",	STYLE,	FONT_NAME_COMPLEX, 			XML_TYPE_STRING|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_FONTNAME_CTL ),
482 	MT_ED( "CharFontNameComplex",	STYLE,		FONT_FAMILY_COMPLEX, 		XML_TYPE_TEXT_FONTFAMILYNAME|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_FONTFAMILYNAME_CTL ),
483 	MT_ED( "CharFontStyleNameComplex",STYLE,	FONT_STYLE_NAME_COMPLEX,	XML_TYPE_STRING, CTF_FONTSTYLENAME_CTL ),
484 	MT_ED( "CharFontFamilyComplex",	STYLE,	FONT_FAMILY_GENERIC_COMPLEX,XML_TYPE_TEXT_FONTFAMILY, CTF_FONTFAMILY_CTL ),
485 	MT_ED( "CharFontPitchComplex",	STYLE,	FONT_PITCH_COMPLEX,			XML_TYPE_TEXT_FONTPITCH, CTF_FONTPITCH_CTL ),
486 	MT_ED( "CharFontCharSetComplex",	STYLE,	FONT_CHARSET_COMPLEX,		XML_TYPE_TEXT_FONTENCODING, CTF_FONTCHARSET_CTL ),
487 	// RES_CHRATR_CTL_FONTSIZE
488 	MT_ED( "CharHeightComplex",		  STYLE,	FONT_SIZE_COMPLEX,			XML_TYPE_CHAR_HEIGHT|MID_FLAG_MULTI_PROPERTY, CTF_CHARHEIGHT_CTL ),
489 	MT_ED( "CharPropHeightComplex",STYLE,	FONT_SIZE_COMPLEX,			XML_TYPE_CHAR_HEIGHT_PROP|MID_FLAG_MULTI_PROPERTY, CTF_CHARHEIGHT_REL_CTL ),
490 	MT_ED( "CharDiffHeightComplex",STYLE,FONT_SIZE_REL_COMPLEX,		XML_TYPE_CHAR_HEIGHT_DIFF, CTF_CHARHEIGHT_DIFF_CTL ),
491 	// RES_CHRATR_CTL_LANGUAGE
492 	MT_ED( "CharLocaleComplex",		STYLE,		LANGUAGE_COMPLEX, 			XML_TYPE_CHAR_LANGUAGE|MID_FLAG_MERGE_PROPERTY, 0 ),
493 	MT_ED( "CharLocaleComplex",		STYLE,		COUNTRY_COMPLEX, 			XML_TYPE_CHAR_COUNTRY|MID_FLAG_MERGE_PROPERTY, 0 ),
494 	// RES_CHRATR_CTL_POSTURE
495 	MT_E( "CharPostureComplex",		STYLE,		FONT_STYLE_COMPLEX,			XML_TYPE_TEXT_POSTURE, 0 ),
496 	// RES_CHRATR_CTL_WEIGHT
497 	MT_E( "CharWeightComplex",		STYLE,		FONT_WEIGHT_COMPLEX,		XML_TYPE_TEXT_WEIGHT, 0 ),
498 	// RES_CHRATR_ROTATE
499 	MT_E( "CharRotation",			STYLE,		TEXT_ROTATION_ANGLE,		XML_TYPE_TEXT_ROTATION_ANGLE, 0 ),
500 	MT_E( "CharRotationIsFitToLine",	STYLE,		TEXT_ROTATION_SCALE,		XML_TYPE_TEXT_ROTATION_SCALE, 0 ),
501 	// RES_CHRATR_EMPHASIS_MARK
502 	MT_E( "CharEmphasis",			STYLE,		TEXT_EMPHASIZE,				XML_TYPE_TEXT_EMPHASIZE, 0 ),
503 	// RES_CHRATR_TWO_LINES
504 	MT_E( "CharCombineIsOn",			STYLE,		TEXT_COMBINE,				XML_TYPE_TEXT_COMBINE|MID_FLAG_MULTI_PROPERTY, 0 ),
505 	MT_E( "CharCombinePrefix",		STYLE,		TEXT_COMBINE_START_CHAR,	XML_TYPE_TEXT_COMBINECHAR, 0 ),
506 	MT_E( "CharCombineSuffix",		STYLE,		TEXT_COMBINE_END_CHAR,		XML_TYPE_TEXT_COMBINECHAR, 0 ),
507 	// RES_CHRATR_SCALEW
508 	MT_E( "CharScaleWidth",			STYLE,		TEXT_SCALE,					XML_TYPE_PERCENT16, 0 ),
509 	// combined characters field, does not correspond to a property
510 	MT_E( "",						STYLE,		TEXT_COMBINE,				XML_TYPE_TEXT_COMBINE_CHARACTERS|MID_FLAG_NO_PROPERTY, CTF_COMBINED_CHARACTERS_FIELD ),
511 	//RES_CHRATR_RELIEF
512 	MT_E( "CharRelief",				STYLE,		FONT_RELIEF,				XML_TYPE_TEXT_FONT_RELIEF, 0 ),
513     // RES_CHRATR_HIDDEN
514     MT_E( "CharHidden",              TEXT,       DISPLAY,                    XML_TYPE_TEXT_HIDDEN_AS_DISPLAY|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_TEXT_DISPLAY ),
515     // RES_CHRATR_OVERLINE
516     MT_E( "CharOverline",   STYLE,  TEXT_OVERLINE_STYLE,        XML_TYPE_TEXT_OVERLINE_STYLE|MID_FLAG_MERGE_PROPERTY, 0 ),
517     MT_E( "CharOverline",   STYLE,  TEXT_OVERLINE_TYPE,     XML_TYPE_TEXT_OVERLINE_TYPE|MID_FLAG_MERGE_PROPERTY, 0 ),
518     MT_E( "CharOverline",   STYLE,  TEXT_OVERLINE_WIDTH,        XML_TYPE_TEXT_OVERLINE_WIDTH|MID_FLAG_MERGE_PROPERTY, 0 ),
519     MT_E( "CharOverlineColor",  STYLE,  TEXT_OVERLINE_COLOR,        XML_TYPE_TEXT_OVERLINE_COLOR|MID_FLAG_MULTI_PROPERTY, 0 ),
520     MT_E( "CharOverlineHasColor",   STYLE,  TEXT_OVERLINE_COLOR,        XML_TYPE_TEXT_OVERLINE_HASCOLOR|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
521 
522 	// RES_TXTATR_INETFMT
523 	MT_E( "HyperLinkURL",			TEXT,		XMLNS,						XML_TYPE_STRING|MID_FLAG_NO_PROPERTY_IMPORT,	CTF_HYPERLINK_URL ),
524 	// RES_TXTATR_REFMARK
525 	// TODO
526 	// RES_TXTATR_TOXMARK
527 	// TODO
528 	// RES_TXTATR_CHARFMT
529 	MT_E( "CharStyleName",			TEXT, 		STYLE_NAME,			 		XML_TYPE_STRING|MID_FLAG_NO_PROPERTY_IMPORT,	CTF_CHAR_STYLE_NAME ),
530 	// RES_TXTATR_CJK_RUBY
531 	// TODO
532 	// RES_TXTATR_FIELD
533 	// TODO
534 	// RES_TXTATR_FLYCNT
535 	// TODO
536 	// RES_TXTATR_FTN
537 	// TODO
538 	// RES_TXTATR_SOFTHYPH
539 	// TODO
540 	// RES_TXTATR_HARDBLANK
541 	// TODO
542 	// RES_UNKNOWNATR_CONTAINER
543 	MT_E( "TextUserDefinedAttributes", TEXT, XMLNS, XML_TYPE_ATTRIBUTE_CONTAINER | MID_FLAG_SPECIAL_ITEM, 0 ),
544 	MT_ED( "ParaIsCharacterDistance", STYLE, TEXT_AUTOSPACE, XML_TYPE_TEXT_AUTOSPACE, 0 ),
545 	MT_ED( "ParaIsHangingPunctuation", STYLE, PUNCTUATION_WRAP, XML_TYPE_TEXT_PUNCTUATION_WRAP, 0 ),
546 	MT_ED( "ParaIsForbiddenRules", STYLE, LINE_BREAK, XML_TYPE_TEXT_LINE_BREAK, 0 ),
547 	MT_E( "TabStopDistance", STYLE, TAB_STOP_DISTANCE, XML_TYPE_MEASURE, 0 ),
548 
549     M_END()
550 };
551 
552 XMLPropertyMapEntry aXMLFramePropMap[] =
553 {
554 	// RES_FILL_ORDER
555 	// TODO: not required???
556 	// RES_FRM_SIZE
557 	MG_ED( "Width",			SVG, WIDTH,				XML_TYPE_MEASURE, CTF_FRAMEWIDTH_ABS ),
558 	MG_ED( "Width",			FO,  MIN_WIDTH,			XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_FRAMEWIDTH_MIN_ABS ),
559 	MG_ED( "RelativeWidth",	FO,  MIN_WIDTH,			XML_TYPE_TEXT_REL_WIDTH_HEIGHT, CTF_FRAMEWIDTH_MIN_REL ),
560 	MG_ED( "RelativeWidth",	STYLE, REL_WIDTH,		XML_TYPE_TEXT_REL_WIDTH_HEIGHT, CTF_FRAMEWIDTH_REL ),
561 	MG_ED( "WidthType",		FO, TEXT_BOX,			XML_TYPE_NUMBER16|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_FRAMEWIDTH_TYPE ),
562 //	M_ED( "RelativeWidth",	STYLE, REL_WIDTH,		XML_TYPE_TEXT_REL_WIDTH_HEIGHT|MID_FLAG_MULTI_PROPERTY, 0 ),
563 //	M_ED( "IsSyncWidthToHeight",STYLE, REL_WIDTH,	XML_TYPE_TEXT_SYNC_WIDTH_HEIGHT|MID_FLAG_MULTI_PROPERTY, 0 ),
564 
565 	MG_ED( "Height",			SVG, HEIGHT,			XML_TYPE_MEASURE, CTF_FRAMEHEIGHT_ABS ),
566 	MG_ED( "Height",			FO, MIN_HEIGHT,			XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, CTF_FRAMEHEIGHT_MIN_ABS ),
567 	MG_ED( "RelativeHeight",	FO, MIN_HEIGHT,			XML_TYPE_TEXT_REL_WIDTH_HEIGHT, CTF_FRAMEHEIGHT_MIN_REL ),
568 	MG_ED( "RelativeHeight",	STYLE, REL_HEIGHT,		XML_TYPE_TEXT_REL_WIDTH_HEIGHT, CTF_FRAMEHEIGHT_REL ),
569 //	M_ED( "RelativeHeight",	STYLE, REL_HEIGHT,		XML_TYPE_TEXT_REL_WIDTH_HEIGHT|MID_FLAG_MULTI_PROPERTY, CTF_FRAMEHEIGHT_REL ),
570 //	M_ED( "IsSyncHeightToWidth",STYLE, REL_HEIGHT,	XML_TYPE_TEXT_SYNC_WIDTH_HEIGHT|MID_FLAG_MULTI_PROPERTY, CTF_SYNCHEIGHT ),
571 //	M_ED( "IsSyncHeightToWidth",STYLE, REL_HEIGHT,	XML_TYPE_TEXT_SYNC_WIDTH_HEIGHT_MIN, CTF_SYNCHEIGHT_MIN ),
572 	MG_ED( "SizeType",		FO, TEXT_BOX,			XML_TYPE_NUMBER16|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_SIZETYPE ),
573 	// RES_PAPER_BIN
574 	// not required
575 	// RES_ANCHOR
576 	// moved to here because it is not used for automatic styles
577 	MG_ED( "AnchorType",			TEXT,	ANCHOR_TYPE,		  	XML_TYPE_TEXT_ANCHOR_TYPE, CTF_ANCHORTYPE ),
578 	// AnchorPage number is not required for styles!
579 	MG_ED( "HoriOrientPosition",	SVG,	X,		  XML_TYPE_MEASURE, 0 ),
580 	MG_ED( "VertOrientPosition",	SVG,	Y,		  XML_TYPE_MEASURE, 0 ),
581 	// ***** The map for automatic styles starts here *****
582 	// RES_LR_SPACE
583 	MG_E( "LeftMargin",				FO,	MARGIN,		XML_TYPE_MEASURE,  CTF_MARGINALL ),
584 	MG_E( "LeftMargin",				FO,	MARGIN_LEFT,		XML_TYPE_MEASURE,  CTF_MARGINLEFT ),
585 	MG_E( "RightMargin",				FO,	MARGIN_RIGHT,		XML_TYPE_MEASURE, CTF_MARGINRIGHT ),
586 	// RES_UL_SPACE
587 	MG_E( "TopMargin",				FO,	MARGIN_TOP,			XML_TYPE_MEASURE, CTF_MARGINTOP ),
588 	MG_E( "BottomMargin",			FO,	MARGIN_BOTTOM,		XML_TYPE_MEASURE, CTF_MARGINBOTTOM ),
589 	// RES_PAGEDESC
590 	// not required
591 	// RES_BREAK
592 	// not required
593 	// RES_CNTNT
594 	// not required (accessed using API)
595 	// RES_HEADER
596 	// not required
597 	// RES_FOOTER
598 	// not required
599 	// RES_PRINT
600 	MG_E( "Print",					STYLE,	PRINT_CONTENT,	XML_TYPE_BOOL, 0 ),
601 	// RES_OPAQUE
602 	MG_ED( "Opaque",					STYLE,	RUN_THROUGH,	XML_TYPE_TEXT_OPAQUE, 0 ),
603 	// RES_PROTECT
604 	MG_E( "ContentProtected",		STYLE,	PROTECT,		XML_TYPE_TEXT_PROTECT_CONTENT|MID_FLAG_MERGE_ATTRIBUTE|MID_FLAG_MULTI_PROPERTY, 0 ),
605 	MG_E( "SizeProtected",		STYLE,	PROTECT,		XML_TYPE_TEXT_PROTECT_SIZE|MID_FLAG_MERGE_ATTRIBUTE|MID_FLAG_MULTI_PROPERTY, 0 ),
606 	MG_E( "PositionProtected",		STYLE,	PROTECT,		XML_TYPE_TEXT_PROTECT_POSITION|MID_FLAG_MERGE_ATTRIBUTE|MID_FLAG_MULTI_PROPERTY, 0 ),
607 	// RES_SURROUND
608 	MG_ED( "TextWrap",				STYLE,	WRAP,	XML_TYPE_TEXT_WRAP, CTF_WRAP ),
609 	MG_ED( "SurroundAnchorOnly",		STYLE,	NUMBER_WRAPPED_PARAGRAPHS,	XML_TYPE_TEXT_PARAGRAPH_ONLY, CTF_WRAP_PARAGRAPH_ONLY ),
610 	MG_E( "SurroundContour",			STYLE,	WRAP_CONTOUR,	XML_TYPE_BOOL, CTF_WRAP_CONTOUR ),
611 	MG_E( "ContourOutside",			STYLE,	WRAP_CONTOUR_MODE,	XML_TYPE_TEXT_WRAP_OUTSIDE, CTF_WRAP_CONTOUR_MODE ),
612 	// RES_VERT_ORIENT
613 	MG_ED( "VertOrient",				STYLE,	VERTICAL_POS,		  XML_TYPE_TEXT_VERTICAL_POS, CTF_VERTICALPOS ),
614 	MG_ED( "VertOrient",				STYLE,	VERTICAL_POS,		  XML_TYPE_TEXT_VERTICAL_POS_AT_CHAR, CTF_VERTICALPOS_ATCHAR ),
615 	MG_ED( "VertOrient",				STYLE,	VERTICAL_REL,		  XML_TYPE_TEXT_VERTICAL_REL_AS_CHAR|MID_FLAG_MULTI_PROPERTY, CTF_VERTICALREL_ASCHAR ),
616 	MG_ED( "VertOrientRelation",		STYLE,	VERTICAL_REL,		  XML_TYPE_TEXT_VERTICAL_REL, CTF_VERTICALREL ),
617 	MG_ED( "VertOrientRelation",		STYLE,	VERTICAL_REL,		  XML_TYPE_TEXT_VERTICAL_REL_PAGE|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_VERTICALREL_PAGE ),
618 	MG_ED( "VertOrientRelation",		STYLE,	VERTICAL_REL,		  XML_TYPE_TEXT_VERTICAL_REL_FRAME|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_VERTICALREL_FRAME ),
619 	// RES_HORI_ORIENT
620 	MG_ED( "HoriOrient",				STYLE,	HORIZONTAL_POS,		  XML_TYPE_TEXT_HORIZONTAL_POS|MID_FLAG_MULTI_PROPERTY, CTF_HORIZONTALPOS ),
621 	MG_ED( "PageToggle",		STYLE,	HORIZONTAL_POS,		  XML_TYPE_TEXT_HORIZONTAL_MIRROR, CTF_HORIZONTALMIRROR ),
622 	MG_ED( "HoriOrient",				STYLE,	HORIZONTAL_POS,		  XML_TYPE_TEXT_HORIZONTAL_POS_MIRRORED|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_HORIZONTALPOS_MIRRORED ),
623 	MG_ED( "HoriOrientRelation",		STYLE,	HORIZONTAL_REL,		  XML_TYPE_TEXT_HORIZONTAL_REL, CTF_HORIZONTALREL ),
624 	MG_ED( "HoriOrientRelation",		STYLE,	HORIZONTAL_REL,		  XML_TYPE_TEXT_HORIZONTAL_REL_FRAME|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_HORIZONTALREL_FRAME ),
625 	// RES_ANCHOR
626 	// see above
627 	// RES_BACKGROUND
628 	MG_ED( "BackColorRGB",	FO,	BACKGROUND_COLOR,		XML_TYPE_COLORTRANSPARENT|MID_FLAG_MULTI_PROPERTY, 0 ),
629 	MG_ED( "BackTransparent",	FO,	BACKGROUND_COLOR,		XML_TYPE_ISTRANSPARENT|MID_FLAG_MERGE_ATTRIBUTE|MID_FLAG_MULTI_PROPERTY, CTF_BACKGROUND_TRANSPARENT ),
630     MG_ED( "BackColorTransparency", STYLE, BACKGROUND_TRANSPARENCY, XML_TYPE_PERCENT8, CTF_BACKGROUND_TRANSPARENCY ),
631 
632     MG_E( "BackGraphicTransparency", STYLE, BACKGROUND_IMAGE_TRANSPARENCY, MID_FLAG_SPECIAL_ITEM|XML_TYPE_PERCENT8, CTF_BACKGROUND_TRANSPARENCY ),
633 	MG_E( "BackGraphicLocation",	STYLE,	POSITION,	MID_FLAG_SPECIAL_ITEM|XML_TYPE_BUILDIN_CMP_ONLY, CTF_BACKGROUND_POS  ),
634 	MG_E( "BackGraphicFilter",STYLE,	FILTER_NAME,	MID_FLAG_SPECIAL_ITEM|XML_TYPE_STRING, CTF_BACKGROUND_FILTER ),
635 	MG_E( "BackGraphicURL",	STYLE,	BACKGROUND_IMAGE,	MID_FLAG_ELEMENT_ITEM|XML_TYPE_STRING, CTF_BACKGROUND_URL ),
636 
637 	// RES_BOX
638 	MG_ED( "LeftBorder",			STYLE,	BORDER_LINE_WIDTH,		  XML_TYPE_BORDER_WIDTH, CTF_ALLBORDERWIDTH ),
639 	MG_ED( "LeftBorder",			STYLE,	BORDER_LINE_WIDTH_LEFT,	  XML_TYPE_BORDER_WIDTH, CTF_LEFTBORDERWIDTH ),
640 	MG_ED( "RightBorder",			STYLE,	BORDER_LINE_WIDTH_RIGHT,  XML_TYPE_BORDER_WIDTH, CTF_RIGHTBORDERWIDTH ),
641 	MG_ED( "TopBorder",			STYLE,	BORDER_LINE_WIDTH_TOP,	  XML_TYPE_BORDER_WIDTH, CTF_TOPBORDERWIDTH ),
642 	MG_ED( "BottomBorder",		STYLE,	BORDER_LINE_WIDTH_BOTTOM, XML_TYPE_BORDER_WIDTH, CTF_BOTTOMBORDERWIDTH ),
643 
644 	MG_ED( "LeftBorderDistance",	FO, 	PADDING,				  XML_TYPE_MEASURE, CTF_ALLBORDERDISTANCE ), // need special import filtering
645 	MG_ED( "LeftBorderDistance",	FO, 	PADDING_LEFT,			  XML_TYPE_MEASURE, CTF_LEFTBORDERDISTANCE ),
646 	MG_ED( "RightBorderDistance",	FO, 	PADDING_RIGHT,			  XML_TYPE_MEASURE, CTF_RIGHTBORDERDISTANCE ),
647 	MG_ED( "TopBorderDistance",	FO, 	PADDING_TOP,			  XML_TYPE_MEASURE, CTF_TOPBORDERDISTANCE ),
648 	MG_ED( "BottomBorderDistance",FO, 	PADDING_BOTTOM,			  XML_TYPE_MEASURE, CTF_BOTTOMBORDERDISTANCE ),
649 
650 	// There is an additional property for controls!
651 	MG_ED( "LeftBorder",			FO,		BORDER,					  XML_TYPE_BORDER|MID_FLAG_MULTI_PROPERTY, CTF_ALLBORDER ),
652 	MG_ED( "LeftBorder",			FO,		BORDER_LEFT,			  XML_TYPE_BORDER, CTF_LEFTBORDER ),
653 	MG_ED( "RightBorder",			FO,		BORDER_RIGHT,			  XML_TYPE_BORDER, CTF_RIGHTBORDER ),
654 	MG_ED( "TopBorder",			FO,		BORDER_TOP,				  XML_TYPE_BORDER, CTF_TOPBORDER ),
655 	MG_ED( "BottomBorder",		FO,		BORDER_BOTTOM,			  XML_TYPE_BORDER, CTF_BOTTOMBORDER ),
656 	// RES_SHADOW
657 	MG_E( "ShadowFormat",		STYLE,	SHADOW,					XML_TYPE_TEXT_SHADOW, 0 ),
658 	// RES_FRMMACRO
659 	// TODO
660 	// RES_COL
661 	MG_E( "TextColumns",			STYLE,	COLUMNS,	MID_FLAG_ELEMENT_ITEM|XML_TYPE_TEXT_COLUMNS, CTF_TEXTCOLUMNS ),
662 	// RES_KEEP
663 	// not required
664 	// RES_URL
665 	// not required (exprted as draw:a element)
666 	// RES_EDIT_IN_READONLY
667 	MG_ED( "EditInReadonly",		STYLE,	EDITABLE,					XML_TYPE_BOOL, 0 ),
668 	// RES_LAYOUT_SPLIT
669 	// not required
670 	// RES_CHAIN
671 	// not required (exported at text:text-box element)
672 	// RES_LINENUMBER
673 	// not required
674 	// RES_FTN_AT_TXTEND
675 	// not required
676 	// RES_END_AT_TXTEND
677 	// not required
678 	// RES_COLUMNBALANCE
679 	// TODO
680 	// RES_UNKNOWNATR_CONTAINER
681 //	M_E_SE( TEXT, xmlns, RES_UNKNOWNATR_CONTAINER, 0 ),
682 	// RES_GRFATR_MIRRORGRF (vertical MUST be processed after horizontal!)
683 	MG_E( "HoriMirroredOnEvenPages",		STYLE,	MIRROR,		XML_TYPE_TEXT_MIRROR_HORIZONTAL_LEFT|MID_FLAG_MERGE_ATTRIBUTE|MID_FLAG_MULTI_PROPERTY, 0 ),
684 	MG_E( "HoriMirroredOnOddPages",		STYLE,	MIRROR,		XML_TYPE_TEXT_MIRROR_HORIZONTAL_RIGHT|MID_FLAG_MERGE_ATTRIBUTE|MID_FLAG_MULTI_PROPERTY, 0 ),
685 	MG_E( "VertMirrored",		STYLE,	MIRROR,		XML_TYPE_TEXT_MIRROR_VERTICAL|MID_FLAG_MERGE_ATTRIBUTE|MID_FLAG_MULTI_PROPERTY, 0 ),
686 	// RES_GRFATR_CROPGRF
687 	MG_EV( "GraphicCrop",			FO,		CLIP,		XML_TYPE_TEXT_CLIP, CTF_TEXT_CLIP, SvtSaveOptions::ODFVER_012 ),
688 	MG_E( "GraphicCrop",			FO,		CLIP,		XML_TYPE_TEXT_CLIP11, CTF_TEXT_CLIP11 ),
689 	// RES_GRFATR_ROTATION
690 	// not required (exported as svg:transform attribute)
691 	// RES_GRFATR_LUMINANCE
692 	MG_E( "AdjustLuminance",  DRAW, LUMINANCE,			XML_TYPE_PERCENT16, 0 ),		// signed?
693 	// RES_GRFATR_CONTRAST
694 	MG_E( "AdjustContrast",	DRAW,	CONTRAST,			XML_TYPE_PERCENT16, 0 ),		// signed?
695 	// RES_GRFATR_CHANNELR
696 	MG_E( "AdjustRed",		DRAW, RED,					XML_TYPE_PERCENT16, 0 ),		// signed?
697 	// RES_GRFATR_CHANNELG
698 	MG_E( "AdjustGreen",	    DRAW, GREEN,				XML_TYPE_PERCENT16, 0 ),		// signed?
699 	// RES_GRFATR_CHANNELB
700 	MG_E( "AdjustBlue",		DRAW, BLUE,					XML_TYPE_PERCENT16, 0 ),		// signed?
701 	// RES_GRFATR_GAMMA
702 	MG_E( "Gamma",			DRAW, GAMMA,				XML_TYPE_DOUBLE_PERCENT, 0 ),			// signed?
703 	// RES_GRFATR_INVERT
704 	MG_E( "GraphicIsInverted", DRAW, COLOR_INVERSION,		XML_TYPE_BOOL, 0 ),
705 	// RES_GRFATR_TRANSPARENCY
706 	MG_E( "Transparency",	DRAW, IMAGE_OPACITY,		XML_TYPE_NEG_PERCENT16|MID_FLAG_MULTI_PROPERTY, 0 ), // #i25616#
707 	// RES_GRFATR_DRAWMODE
708 	MG_E( "GraphicColorMode", DRAW, COLOR_MODE,			XML_TYPE_COLOR_MODE, 0 ),
709     MG_E( "WritingMode",      STYLE, WRITING_MODE,       XML_TYPE_TEXT_WRITING_MODE_WITH_DEFAULT, 0 ),
710     // RES_FOLLOW_TEXT_FLOW - DVO, OD 01.10.2003 #i18732#
711     MG_E( "IsFollowingTextFlow", DRAW, FLOW_WITH_TEXT,      XML_TYPE_BOOL|MID_FLAG_SPECIAL_ITEM_EXPORT, CTF_OLD_FLOW_WITH_TEXT ),
712     MG_E( "IsFollowingTextFlow", STYLE, FLOW_WITH_TEXT,     XML_TYPE_BOOL, 0 ),
713     // OD 2004-05-05 #i28701# - RES_WRAP_INFLUENCE_ON_OBJPOS
714     MG_E( "WrapInfluenceOnPosition", DRAW, WRAP_INFLUENCE_ON_POSITION, XML_TYPE_WRAP_INFLUENCE_ON_POSITION, 0 ),
715 
716 	// special entries for floating frames
717 	MG_E( "",			DRAW,	FRAME_DISPLAY_SCROLLBAR,	XML_TYPE_BOOL|MID_FLAG_NO_PROPERTY|MID_FLAG_MULTI_PROPERTY,	CTF_FRAME_DISPLAY_SCROLLBAR ),
718 	MG_E( "",			DRAW,	FRAME_DISPLAY_BORDER,	XML_TYPE_BOOL|MID_FLAG_NO_PROPERTY|MID_FLAG_MULTI_PROPERTY,	CTF_FRAME_DISPLAY_BORDER ),
719 	MG_E( "",			DRAW,	FRAME_MARGIN_HORIZONTAL,	XML_TYPE_MEASURE_PX|MID_FLAG_NO_PROPERTY|MID_FLAG_MULTI_PROPERTY,	CTF_FRAME_MARGIN_HORI ),
720 	MG_E( "",			DRAW,	FRAME_MARGIN_VERTICAL,	XML_TYPE_MEASURE_PX|MID_FLAG_NO_PROPERTY|MID_FLAG_MULTI_PROPERTY,	CTF_FRAME_MARGIN_VERT ),
721 	MG_E( "",			DRAW,	VISIBLE_AREA_LEFT,		XML_TYPE_MEASURE|MID_FLAG_NO_PROPERTY|MID_FLAG_MULTI_PROPERTY,	CTF_OLE_VIS_AREA_LEFT ),
722 	MG_E( "",			DRAW,	VISIBLE_AREA_TOP,		XML_TYPE_MEASURE|MID_FLAG_NO_PROPERTY|MID_FLAG_MULTI_PROPERTY,	CTF_OLE_VIS_AREA_TOP ),
723 	MG_E( "",			DRAW,	VISIBLE_AREA_WIDTH,		XML_TYPE_MEASURE|MID_FLAG_NO_PROPERTY|MID_FLAG_MULTI_PROPERTY,	CTF_OLE_VIS_AREA_WIDTH ),
724 	MG_E( "",			DRAW,	VISIBLE_AREA_HEIGHT,	XML_TYPE_MEASURE|MID_FLAG_NO_PROPERTY|MID_FLAG_MULTI_PROPERTY,	CTF_OLE_VIS_AREA_HEIGHT ),
725 	MG_E( "",			DRAW,	DRAW_ASPECT,			XML_TYPE_TEXT_DRAW_ASPECT|MID_FLAG_NO_PROPERTY|MID_FLAG_MULTI_PROPERTY,	CTF_OLE_DRAW_ASPECT ),
726 	MG_E( "UserDefinedAttributes", TEXT, XMLNS, XML_TYPE_ATTRIBUTE_CONTAINER | MID_FLAG_SPECIAL_ITEM, 0 ),
727 
728     M_END()
729 };
730 
731 XMLPropertyMapEntry aXMLShapePropMap[] =
732 {
733 	// RES_LR_SPACE
734 	MG_E( "LeftMargin",				FO,	MARGIN_LEFT,		XML_TYPE_MEASURE,  0),
735 	MG_E( "RightMargin",				FO,	MARGIN_RIGHT,		XML_TYPE_MEASURE, 0 ),
736 	// RES_UL_SPACE
737 	MG_E( "TopMargin",				FO,	MARGIN_TOP,			XML_TYPE_MEASURE, 0 ),
738 	MG_E( "BottomMargin",			FO,	MARGIN_BOTTOM,		XML_TYPE_MEASURE, 0 ),
739 	// RES_OPAQUE
740 	MG_ED( "Opaque",					STYLE,	RUN_THROUGH,	XML_TYPE_TEXT_OPAQUE, 0 ),
741 	// RES_SURROUND
742 	MG_E( "TextWrap",				STYLE,	WRAP,	XML_TYPE_TEXT_WRAP, CTF_WRAP ),
743 	MG_E( "SurroundAnchorOnly",		STYLE,	NUMBER_WRAPPED_PARAGRAPHS,	XML_TYPE_TEXT_PARAGRAPH_ONLY, CTF_WRAP_PARAGRAPH_ONLY ),
744 	MG_E( "SurroundContour",			STYLE,	WRAP_CONTOUR,	XML_TYPE_BOOL, CTF_WRAP_CONTOUR ),
745 	MG_E( "ContourOutside",			STYLE,	WRAP_CONTOUR_MODE,	XML_TYPE_TEXT_WRAP_OUTSIDE, CTF_WRAP_CONTOUR_MODE ),
746     // --> OD 2004-08-09 #i28749# - use own CTF ids for positioning attributes
747     // RES_VERT_ORIENT
748     MG_E( "VertOrient",         STYLE,  VERTICAL_POS,   XML_TYPE_TEXT_VERTICAL_POS, CTF_SHAPE_VERTICALPOS ),
749 	// OD 2004-04-16 #i26791# - add property for at-character anchored shapes
750     MG_E( "VertOrient",         STYLE,  VERTICAL_POS,   XML_TYPE_TEXT_VERTICAL_POS_AT_CHAR, CTF_SHAPE_VERTICALPOS_ATCHAR ),
751     MG_E( "VertOrient",         STYLE,  VERTICAL_REL,   XML_TYPE_TEXT_VERTICAL_REL_AS_CHAR|MID_FLAG_MULTI_PROPERTY, CTF_VERTICALREL_ASCHAR ),
752     MG_E( "VertOrientRelation", STYLE,  VERTICAL_REL,   XML_TYPE_TEXT_VERTICAL_REL, CTF_SHAPE_VERTICALREL ),
753     MG_E( "VertOrientRelation", STYLE,  VERTICAL_REL,   XML_TYPE_TEXT_VERTICAL_REL_PAGE|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_SHAPE_VERTICALREL_PAGE ),
754     MG_E( "VertOrientRelation", STYLE,  VERTICAL_REL,   XML_TYPE_TEXT_VERTICAL_REL_FRAME|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_SHAPE_VERTICALREL_FRAME ),
755 	// RES_HORI_ORIENT
756     MG_E( "HoriOrient",         STYLE,  HORIZONTAL_POS, XML_TYPE_TEXT_HORIZONTAL_POS|MID_FLAG_MULTI_PROPERTY, CTF_SHAPE_HORIZONTALPOS ),
757     MG_E( "PageToggle",         STYLE,  HORIZONTAL_POS, XML_TYPE_TEXT_HORIZONTAL_MIRROR, CTF_SHAPE_HORIZONTALMIRROR ),
758     MG_E( "HoriOrient",         STYLE,  HORIZONTAL_POS, XML_TYPE_TEXT_HORIZONTAL_POS_MIRRORED|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_SHAPE_HORIZONTALPOS_MIRRORED ),
759     MG_E( "HoriOrientRelation", STYLE,  HORIZONTAL_REL, XML_TYPE_TEXT_HORIZONTAL_REL, CTF_SHAPE_HORIZONTALREL ),
760     MG_E( "HoriOrientRelation", STYLE,  HORIZONTAL_REL, XML_TYPE_TEXT_HORIZONTAL_REL_FRAME|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_SHAPE_HORIZONTALREL_FRAME ),
761     // <--
762     // OD 2004-05-05 #i28701# - RES_WRAP_INFLUENCE_ON_OBJPOS
763     MG_ED( "WrapInfluenceOnPosition", DRAW, WRAP_INFLUENCE_ON_POSITION, XML_TYPE_WRAP_INFLUENCE_ON_POSITION, 0 ),
764     // UserDefinedAttributes is already contained in the map this one is
765     // chained to.
766 
767     // RES_FOLLOW_TEXT_FLOW - OD 2004-04-21 #i26791#
768     MG_ED( "IsFollowingTextFlow", STYLE, FLOW_WITH_TEXT,      XML_TYPE_BOOL, 0 ),
769 
770     M_END()
771 };
772 
773 XMLPropertyMapEntry aXMLSectionPropMap[] =
774 {
775 	// RES_COL
776 	MS_E( "TextColumns",			STYLE,	COLUMNS,	MID_FLAG_ELEMENT_ITEM|XML_TYPE_TEXT_COLUMNS, CTF_TEXTCOLUMNS ),
777 
778 	// RES_BACKGROUND
779 	MS_E( "BackColor",	FO,	BACKGROUND_COLOR,		XML_TYPE_COLORTRANSPARENT|MID_FLAG_MULTI_PROPERTY, 0 ),
780 	MS_E( "BackTransparent",	FO,	BACKGROUND_COLOR,		XML_TYPE_ISTRANSPARENT|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
781 	MS_E( "BackGraphicLocation",	STYLE,	POSITION,	MID_FLAG_SPECIAL_ITEM|XML_TYPE_BUILDIN_CMP_ONLY, CTF_BACKGROUND_POS  ),
782 	MS_E( "BackGraphicFilter",STYLE,	FILTER_NAME,	MID_FLAG_SPECIAL_ITEM|XML_TYPE_STRING, CTF_BACKGROUND_FILTER ),
783 	MS_E( "BackGraphicURL",	STYLE,	BACKGROUND_IMAGE,	MID_FLAG_ELEMENT_ITEM|XML_TYPE_STRING, CTF_BACKGROUND_URL ),
784 
785 	// move protect-flag into section element
786 //	M_E( "IsProtected",			STYLE,	PROTECT,	XML_TYPE_BOOL, 0 ),
787 
788     MS_E( "DontBalanceTextColumns", TEXT, DONT_BALANCE_TEXT_COLUMNS, XML_TYPE_BOOL, 0 ),
789 
790     MS_E( "WritingMode",      STYLE, WRITING_MODE,       XML_TYPE_TEXT_WRITING_MODE_WITH_DEFAULT, 0 ),
791 
792     MS_E( "SectionLeftMargin",      FO, MARGIN_LEFT,		XML_TYPE_MEASURE,  0),
793     MS_E( "SectionRightMargin",     FO, MARGIN_RIGHT,		XML_TYPE_MEASURE,  0),
794 
795 	// section footnote settings
796 	MS_E( "FootnoteIsOwnNumbering",		TEXT,	_EMPTY,	MID_FLAG_SPECIAL_ITEM|XML_TYPE_BOOL,	CTF_SECTION_FOOTNOTE_NUM_OWN ),
797 	MS_E( "FootnoteIsRestartNumbering",	TEXT,	_EMPTY,	MID_FLAG_SPECIAL_ITEM|XML_TYPE_BOOL,	CTF_SECTION_FOOTNOTE_NUM_RESTART ),
798 	MS_E( "FootnoteRestartNumberingAt",	TEXT,	_EMPTY,	MID_FLAG_SPECIAL_ITEM|XML_TYPE_NUMBER16,CTF_SECTION_FOOTNOTE_NUM_RESTART_AT ),
799 	MS_E( "FootnoteNumberingType",		TEXT,	_EMPTY,	MID_FLAG_SPECIAL_ITEM|XML_TYPE_NUMBER16,CTF_SECTION_FOOTNOTE_NUM_TYPE ),
800 	MS_E( "FootnoteNumberingPrefix",		TEXT,	_EMPTY,	MID_FLAG_SPECIAL_ITEM|XML_TYPE_STRING,	CTF_SECTION_FOOTNOTE_NUM_PREFIX ),
801 	MS_E( "FootnoteNumberingSuffix",		TEXT,	_EMPTY,	MID_FLAG_SPECIAL_ITEM|XML_TYPE_STRING,	CTF_SECTION_FOOTNOTE_NUM_SUFFIX ),
802 	MS_E( "FootnoteIsCollectAtTextEnd",	TEXT,	NOTES_CONFIGURATION,	MID_FLAG_ELEMENT_ITEM|XML_TYPE_BOOL,	CTF_SECTION_FOOTNOTE_END ),
803 
804 	// section footnote settings
805 	MS_E( "EndnoteIsOwnNumbering",		TEXT,	_EMPTY,		MID_FLAG_SPECIAL_ITEM|XML_TYPE_BOOL,	CTF_SECTION_ENDNOTE_NUM_OWN ),
806 	MS_E( "EndnoteIsRestartNumbering",	TEXT,	_EMPTY,		MID_FLAG_SPECIAL_ITEM|XML_TYPE_BOOL,	CTF_SECTION_ENDNOTE_NUM_RESTART ),
807 	MS_E( "EndnoteRestartNumberingAt",	TEXT,	_EMPTY,		MID_FLAG_SPECIAL_ITEM|XML_TYPE_NUMBER16,CTF_SECTION_ENDNOTE_NUM_RESTART_AT ),
808 	MS_E( "EndnoteNumberingType",		TEXT,	_EMPTY,		MID_FLAG_SPECIAL_ITEM|XML_TYPE_NUMBER16,CTF_SECTION_ENDNOTE_NUM_TYPE ),
809 	MS_E( "EndnoteNumberingPrefix",		TEXT,	_EMPTY,		MID_FLAG_SPECIAL_ITEM|XML_TYPE_STRING,	CTF_SECTION_ENDNOTE_NUM_PREFIX ),
810 	MS_E( "EndnoteNumberingSuffix",		TEXT,	_EMPTY,		MID_FLAG_SPECIAL_ITEM|XML_TYPE_STRING,	CTF_SECTION_ENDNOTE_NUM_SUFFIX ),
811 	MS_E( "EndnoteIsCollectAtTextEnd",	TEXT,	NOTES_CONFIGURATION,		MID_FLAG_ELEMENT_ITEM|XML_TYPE_BOOL,	CTF_SECTION_ENDNOTE_END ),
812 	MS_E( "UserDefinedAttributes", 		TEXT,	XMLNS,		XML_TYPE_ATTRIBUTE_CONTAINER | MID_FLAG_SPECIAL_ITEM, 0 ),
813 
814     // --> FME 2004-06-22 #114856# edit in readonly sections
815     // RES_EDIT_IN_READONLY
816     MS_E( "EditInReadonly",             STYLE,  EDITABLE,  XML_TYPE_BOOL, 0 ),
817     // <--
818 
819     M_END()
820 };
821 
822 XMLPropertyMapEntry aXMLRubyPropMap[] =
823 {
824 	MR_E( "RubyAdjust",	STYLE, RUBY_ALIGN, XML_TYPE_TEXT_RUBY_ADJUST, 0 ),
825 	MR_E( "RubyIsAbove",	STYLE, RUBY_POSITION, XML_TYPE_TEXT_RUBY_POSITION, 0 ),
826     M_END()
827 };
828 
829 
830 XMLPropertyMapEntry aXMLTableDefaultsMap[] =
831 {
832     // RES_COLLAPSING_BORDERS: only occurs in tables, but we need to
833     // read/write the default for this item
834     _M_ED( "CollapsingBorders", TABLE, BORDER_MODEL, XML_TYPE_PROP_TABLE | XML_TYPE_BORDER_MODEL | MID_FLAG_NO_PROPERTY_IMPORT, CTF_BORDER_MODEL ),
835 
836     M_END()
837 };
838 
839 XMLPropertyMapEntry aXMLTableRowDefaultsMap[] =
840 {
841     // RES_ROW_SPLIT: only occurs in table rows, but we need to
842     // read/write the default for this item
843     _M_ED( "IsSplitAllowed", FO, KEEP_TOGETHER, XML_TYPE_PROP_TABLE_ROW | XML_TYPE_TEXT_NKEEP | MID_FLAG_NO_PROPERTY_IMPORT, CTF_KEEP_TOGETHER ),
844 
845     M_END()
846 };
847 
848 XMLPropertyMapEntry *lcl_txtprmap_getMap( sal_uInt16 nType )
849 {
850 	XMLPropertyMapEntry *pMap = 0;
851 	switch( nType )
852 	{
853 	case TEXT_PROP_MAP_TEXT:
854 		pMap = aXMLTextPropMap;
855 		break;
856 	case TEXT_PROP_MAP_SHAPE_PARA:
857 		pMap = &(aXMLParaPropMap[1]);
858         OSL_ENSURE( pMap->meXMLName == XML_MARGIN, "shape para map changed" );
859 		break;
860 	case TEXT_PROP_MAP_PARA:
861 		pMap = aXMLParaPropMap;
862 		break;
863 	case TEXT_PROP_MAP_FRAME:
864 		pMap = aXMLFramePropMap;
865 		break;
866 	case TEXT_PROP_MAP_AUTO_FRAME:
867 		pMap = &(aXMLFramePropMap[13]);
868         OSL_ENSURE( pMap->meXMLName == XML_MARGIN, "frame map changed" );
869 		break;
870 	case TEXT_PROP_MAP_SHAPE:
871 		pMap = aXMLShapePropMap;
872 		break;
873 	case TEXT_PROP_MAP_SECTION:
874 		pMap = aXMLSectionPropMap;
875 		break;
876 	case TEXT_PROP_MAP_RUBY:
877 		pMap = aXMLRubyPropMap;
878 		break;
879     case TEXT_PROP_MAP_TEXT_ADDITIONAL_DEFAULTS:
880         pMap = aXMLAdditionalTextDefaultsMap;
881         break;
882     case TEXT_PROP_MAP_TABLE_DEFAULTS:
883         pMap = aXMLTableDefaultsMap;
884         break;
885     case TEXT_PROP_MAP_TABLE_ROW_DEFAULTS:
886         pMap = aXMLTableRowDefaultsMap;
887         break;
888 	}
889 	DBG_ASSERT( pMap, "illegal map type" );
890 	return pMap;
891 }
892 
893 const XMLPropertyMapEntry* XMLTextPropertySetMapper::getPropertyMapForType( sal_uInt16 _nType )
894 {
895     return lcl_txtprmap_getMap( _nType );
896 }
897 
898 XMLTextPropertySetMapper::XMLTextPropertySetMapper( sal_uInt16 nType ) :
899 	XMLPropertySetMapper( lcl_txtprmap_getMap( nType ),
900 						  new XMLTextPropertyHandlerFactory )
901 {
902 }
903 
904 XMLTextPropertySetMapper::~XMLTextPropertySetMapper()
905 {
906 }
907