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