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 #ifndef _MATHMLIMPORT_HXX_ 29 #define _MATHMLIMPORT_HXX_ 30 31 #include <xmloff/xmlimp.hxx> 32 #include <xmloff/xmlexp.hxx> 33 #include <xmloff/DocumentSettingsContext.hxx> 34 #include <xmloff/xmltoken.hxx> 35 36 #include <node.hxx> 37 38 class SfxMedium; 39 namespace com { namespace sun { namespace star { 40 namespace io { 41 class XInputStream; 42 class XOutputStream; } 43 namespace beans { 44 class XPropertySet; } 45 } } } 46 47 //////////////////////////////////////////////////////////// 48 49 class SmXMLImportWrapper 50 { 51 com::sun::star::uno::Reference<com::sun::star::frame::XModel> xModel; 52 53 public: 54 SmXMLImportWrapper(com::sun::star::uno::Reference<com::sun::star::frame::XModel> &rRef) 55 : xModel(rRef) {} 56 57 sal_uLong Import(SfxMedium &rMedium); 58 59 sal_uLong ReadThroughComponent( 60 ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > xInputStream, 61 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > xModelComponent, 62 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rFactory, 63 ::com::sun::star::uno::Reference< 64 ::com::sun::star::beans::XPropertySet > & rPropSet, 65 const sal_Char* pFilterName, 66 sal_Bool bEncrypted ); 67 68 sal_uLong ReadThroughComponent( 69 const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage, 70 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > xModelComponent, 71 const sal_Char* pStreamName, 72 const sal_Char* pCompatibilityStreamName, 73 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rFactory, 74 ::com::sun::star::uno::Reference< 75 ::com::sun::star::beans::XPropertySet > & rPropSet, 76 const sal_Char* pFilterName ); 77 }; 78 79 //////////////////////////////////////////////////////////// 80 81 class SmXMLImport : public SvXMLImport 82 { 83 SvXMLTokenMap *pPresLayoutElemTokenMap; 84 SvXMLTokenMap *pPresLayoutAttrTokenMap; 85 SvXMLTokenMap *pFencedAttrTokenMap; 86 SvXMLTokenMap *pOperatorAttrTokenMap; 87 SvXMLTokenMap *pAnnotationAttrTokenMap; 88 SvXMLTokenMap *pPresElemTokenMap; 89 SvXMLTokenMap *pPresScriptEmptyElemTokenMap; 90 SvXMLTokenMap *pPresTableElemTokenMap; 91 SvXMLTokenMap *pColorTokenMap; 92 93 SmNodeStack aNodeStack; 94 sal_Bool bSuccess; 95 String aText; 96 97 public: 98 // #110680# 99 SmXMLImport( 100 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xServiceFactory, 101 sal_uInt16 nImportFlags=IMPORT_ALL); 102 virtual ~SmXMLImport() throw (); 103 104 // XServiceInfo (override parent method) 105 ::rtl::OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException ); 106 107 // XUnoTunnel 108 sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw(::com::sun::star::uno::RuntimeException); 109 static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId() throw(); 110 111 void SAL_CALL endDocument(void) 112 throw( ::com::sun::star::xml::sax::SAXException, 113 ::com::sun::star::uno::RuntimeException ); 114 115 SvXMLImportContext *CreateContext(sal_uInt16 nPrefix, 116 const rtl::OUString &rLocalName, 117 const com::sun::star::uno::Reference < 118 com::sun::star::xml::sax::XAttributeList> &xAttrList); 119 SvXMLImportContext *CreateMathContext(sal_uInt16 nPrefix, 120 const rtl::OUString &rLocalName, 121 const com::sun::star::uno::Reference < 122 com::sun::star::xml::sax::XAttributeList> &xAttrList); 123 SvXMLImportContext *CreateRowContext(sal_uInt16 nPrefix, 124 const rtl::OUString &rLocalName, 125 const com::sun::star::uno::Reference < 126 com::sun::star::xml::sax::XAttributeList> &xAttrList); 127 SvXMLImportContext *CreateFracContext(sal_uInt16 nPrefix, 128 const rtl::OUString &rLocalName, 129 const com::sun::star::uno::Reference < 130 com::sun::star::xml::sax::XAttributeList> &xAttrList); 131 SvXMLImportContext *CreateNumberContext(sal_uInt16 nPrefix, 132 const rtl::OUString &rLocalName, 133 const com::sun::star::uno::Reference < 134 com::sun::star::xml::sax::XAttributeList> &xAttrList); 135 SvXMLImportContext *CreateTextContext(sal_uInt16 nPrefix, 136 const rtl::OUString &rLocalName, 137 const com::sun::star::uno::Reference < 138 com::sun::star::xml::sax::XAttributeList> &xAttrList); 139 SvXMLImportContext *CreateAnnotationContext(sal_uInt16 nPrefix, 140 const rtl::OUString &rLocalName, 141 const com::sun::star::uno::Reference < 142 com::sun::star::xml::sax::XAttributeList> &xAttrList); 143 SvXMLImportContext *CreateStringContext(sal_uInt16 nPrefix, 144 const rtl::OUString &rLocalName, 145 const com::sun::star::uno::Reference < 146 com::sun::star::xml::sax::XAttributeList> &xAttrList); 147 SvXMLImportContext *CreateIdentifierContext(sal_uInt16 nPrefix, 148 const rtl::OUString &rLocalName, 149 const com::sun::star::uno::Reference < 150 com::sun::star::xml::sax::XAttributeList> &xAttrList); 151 SvXMLImportContext *CreateOperatorContext(sal_uInt16 nPrefix, 152 const rtl::OUString &rLocalName, 153 const com::sun::star::uno::Reference < 154 com::sun::star::xml::sax::XAttributeList> &xAttrList); 155 SvXMLImportContext *CreateSpaceContext(sal_uInt16 nPrefix, 156 const rtl::OUString &rLocalName, 157 const com::sun::star::uno::Reference < 158 com::sun::star::xml::sax::XAttributeList> &xAttrList); 159 SvXMLImportContext *CreateSqrtContext(sal_uInt16 nPrefix, 160 const rtl::OUString &rLocalName, 161 const com::sun::star::uno::Reference < 162 com::sun::star::xml::sax::XAttributeList> &xAttrList); 163 SvXMLImportContext *CreateRootContext(sal_uInt16 nPrefix, 164 const rtl::OUString &rLocalName, 165 const com::sun::star::uno::Reference < 166 com::sun::star::xml::sax::XAttributeList> &xAttrList); 167 SvXMLImportContext *CreateStyleContext(sal_uInt16 nPrefix, 168 const rtl::OUString &rLocalName, 169 const com::sun::star::uno::Reference < 170 com::sun::star::xml::sax::XAttributeList> &xAttrList); 171 SvXMLImportContext *CreatePaddedContext(sal_uInt16 nPrefix, 172 const rtl::OUString &rLocalName, 173 const com::sun::star::uno::Reference < 174 com::sun::star::xml::sax::XAttributeList> &xAttrList); 175 SvXMLImportContext *CreatePhantomContext(sal_uInt16 nPrefix, 176 const rtl::OUString &rLocalName, 177 const com::sun::star::uno::Reference < 178 com::sun::star::xml::sax::XAttributeList> &xAttrList); 179 SvXMLImportContext *CreateFencedContext(sal_uInt16 nPrefix, 180 const rtl::OUString &rLocalName, 181 const com::sun::star::uno::Reference < 182 com::sun::star::xml::sax::XAttributeList> &xAttrList); 183 SvXMLImportContext *CreateErrorContext(sal_uInt16 nPrefix, 184 const rtl::OUString &rLocalName, 185 const com::sun::star::uno::Reference < 186 com::sun::star::xml::sax::XAttributeList> &xAttrList); 187 SvXMLImportContext *CreateSubContext(sal_uInt16 nPrefix, 188 const rtl::OUString &rLocalName, 189 const com::sun::star::uno::Reference < 190 com::sun::star::xml::sax::XAttributeList> &xAttrList); 191 SvXMLImportContext *CreateSupContext(sal_uInt16 nPrefix, 192 const rtl::OUString &rLocalName, 193 const com::sun::star::uno::Reference < 194 com::sun::star::xml::sax::XAttributeList> &xAttrList); 195 SvXMLImportContext *CreateSubSupContext(sal_uInt16 nPrefix, 196 const rtl::OUString &rLocalName, 197 const com::sun::star::uno::Reference < 198 com::sun::star::xml::sax::XAttributeList> &xAttrList); 199 SvXMLImportContext *CreateUnderContext(sal_uInt16 nPrefix, 200 const rtl::OUString &rLocalName, 201 const com::sun::star::uno::Reference < 202 com::sun::star::xml::sax::XAttributeList> &xAttrList); 203 SvXMLImportContext *CreateOverContext(sal_uInt16 nPrefix, 204 const rtl::OUString &rLocalName, 205 const com::sun::star::uno::Reference < 206 com::sun::star::xml::sax::XAttributeList> &xAttrList); 207 SvXMLImportContext *CreateUnderOverContext(sal_uInt16 nPrefix, 208 const rtl::OUString &rLocalName, 209 const com::sun::star::uno::Reference < 210 com::sun::star::xml::sax::XAttributeList> &xAttrList); 211 SvXMLImportContext *CreateMultiScriptsContext(sal_uInt16 nPrefix, 212 const rtl::OUString &rLocalName, 213 const com::sun::star::uno::Reference < 214 com::sun::star::xml::sax::XAttributeList> &xAttrList); 215 SvXMLImportContext *CreateNoneContext(sal_uInt16 nPrefix, 216 const rtl::OUString &rLocalName, 217 const com::sun::star::uno::Reference < 218 com::sun::star::xml::sax::XAttributeList> &xAttrList); 219 SvXMLImportContext *CreatePrescriptsContext(sal_uInt16 nPrefix, 220 const rtl::OUString &rLocalName, 221 const com::sun::star::uno::Reference < 222 com::sun::star::xml::sax::XAttributeList> &xAttrList); 223 SvXMLImportContext *CreateTableContext(sal_uInt16 nPrefix, 224 const rtl::OUString &rLocalName, 225 const com::sun::star::uno::Reference < 226 com::sun::star::xml::sax::XAttributeList> &xAttrList); 227 SvXMLImportContext *CreateTableRowContext(sal_uInt16 nPrefix, 228 const rtl::OUString &rLocalName, 229 const com::sun::star::uno::Reference < 230 com::sun::star::xml::sax::XAttributeList> &xAttrList); 231 SvXMLImportContext *CreateTableCellContext(sal_uInt16 nPrefix, 232 const rtl::OUString &rLocalName, 233 const com::sun::star::uno::Reference < 234 com::sun::star::xml::sax::XAttributeList> &xAttrList); 235 SvXMLImportContext *CreateAlignGroupContext(sal_uInt16 nPrefix, 236 const rtl::OUString &rLocalName, 237 const com::sun::star::uno::Reference < 238 com::sun::star::xml::sax::XAttributeList> &xAttrList); 239 SvXMLImportContext *CreateActionContext(sal_uInt16 nPrefix, 240 const rtl::OUString &rLocalName, 241 const com::sun::star::uno::Reference < 242 com::sun::star::xml::sax::XAttributeList> &xAttrList); 243 244 const SvXMLTokenMap &GetPresLayoutElemTokenMap(); 245 const SvXMLTokenMap &GetPresLayoutAttrTokenMap(); 246 const SvXMLTokenMap &GetFencedAttrTokenMap(); 247 const SvXMLTokenMap &GetOperatorAttrTokenMap(); 248 const SvXMLTokenMap &GetAnnotationAttrTokenMap(); 249 const SvXMLTokenMap &GetPresElemTokenMap(); 250 const SvXMLTokenMap &GetPresScriptEmptyElemTokenMap(); 251 const SvXMLTokenMap &GetPresTableElemTokenMap(); 252 const SvXMLTokenMap &GetColorTokenMap(); 253 254 SmNodeStack & GetNodeStack() { return aNodeStack; } 255 SmNode *GetTree() { return aNodeStack.Pop(); } 256 sal_Bool GetSuccess() { return bSuccess; } 257 String &GetText() { return aText; } 258 259 virtual void SetViewSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aViewProps); 260 virtual void SetConfigurationSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aViewProps); 261 }; 262 263 //////////////////////////////////////////////////////////// 264 265 enum SmXMLMathElemTokenMap 266 { 267 XML_TOK_MATH 268 }; 269 270 enum SmXMLPresLayoutElemTokenMap 271 { 272 XML_TOK_SEMANTICS, 273 XML_TOK_MSTYLE, 274 XML_TOK_MERROR, 275 XML_TOK_MPHANTOM, 276 XML_TOK_MROW, 277 XML_TOK_MFRAC, 278 XML_TOK_MSQRT, 279 XML_TOK_MROOT, 280 XML_TOK_MSUB, 281 XML_TOK_MSUP, 282 XML_TOK_MSUBSUP, 283 XML_TOK_MMULTISCRIPTS, 284 XML_TOK_MUNDER, 285 XML_TOK_MOVER, 286 XML_TOK_MUNDEROVER, 287 XML_TOK_MTABLE, 288 XML_TOK_MACTION, 289 XML_TOK_MFENCED, 290 XML_TOK_MPADDED 291 }; 292 293 enum SmXMLPresLayoutAttrTokenMap 294 { 295 XML_TOK_FONTWEIGHT, 296 XML_TOK_FONTSTYLE, 297 XML_TOK_FONTSIZE, 298 XML_TOK_FONTFAMILY, 299 XML_TOK_COLOR 300 }; 301 302 303 enum SmXMLFencedAttrTokenMap 304 { 305 XML_TOK_OPEN, 306 XML_TOK_CLOSE 307 }; 308 309 310 enum SmXMLPresTableElemTokenMap 311 { 312 XML_TOK_MTR, 313 XML_TOK_MTD 314 }; 315 316 enum SmXMLPresElemTokenMap 317 { 318 XML_TOK_ANNOTATION, 319 XML_TOK_MI, 320 XML_TOK_MN, 321 XML_TOK_MO, 322 XML_TOK_MTEXT, 323 XML_TOK_MSPACE, 324 XML_TOK_MS, 325 XML_TOK_MALIGNGROUP 326 }; 327 328 enum SmXMLPresScriptEmptyElemTokenMap 329 { 330 XML_TOK_MPRESCRIPTS, 331 XML_TOK_NONE 332 }; 333 334 enum SmXMLOperatorAttrTokenMap 335 { 336 XML_TOK_STRETCHY 337 }; 338 339 enum SmXMLAnnotationAttrTokenMap 340 { 341 XML_TOK_ENCODING 342 }; 343 344 //////////////////////////////////////////////////////////// 345 346 #endif 347 348