LCOV - code coverage report
Current view: top level - starmath/source - mathmlimport.hxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 9 9 100.0 %
Date: 2015-06-13 12:38:46 Functions: 7 7 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #ifndef INCLUDED_STARMATH_SOURCE_MATHMLIMPORT_HXX
      21             : #define INCLUDED_STARMATH_SOURCE_MATHMLIMPORT_HXX
      22             : 
      23             : #include <xmloff/xmlimp.hxx>
      24             : #include <xmloff/xmlexp.hxx>
      25             : #include <xmloff/DocumentSettingsContext.hxx>
      26             : #include <xmloff/xmltoken.hxx>
      27             : 
      28             : #include <node.hxx>
      29             : #include <memory>
      30             : 
      31             : class SfxMedium;
      32             : namespace com { namespace sun { namespace star {
      33             :     namespace io {
      34             :         class XIutputStream; }
      35             :     namespace beans {
      36             :         class XPropertySet; }
      37             : } } }
      38             : 
      39             : 
      40             : 
      41           5 : class SmXMLImportWrapper
      42             : {
      43             :     com::sun::star::uno::Reference<com::sun::star::frame::XModel> xModel;
      44             : 
      45             : public:
      46           5 :     explicit SmXMLImportWrapper(com::sun::star::uno::Reference<com::sun::star::frame::XModel> &rRef)
      47           5 :         : xModel(rRef) {}
      48             : 
      49             :     sal_uLong Import(SfxMedium &rMedium);
      50             : 
      51             :     static sal_uLong ReadThroughComponent(
      52             :         ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > xInputStream,
      53             :         ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > xModelComponent,
      54             :         ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > & rxContext,
      55             :         ::com::sun::star::uno::Reference<
      56             :             ::com::sun::star::beans::XPropertySet > & rPropSet,
      57             :         const sal_Char* pFilterName,
      58             :         bool bEncrypted );
      59             : 
      60             :     static sal_uLong ReadThroughComponent(
      61             :          const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage,
      62             :                 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > xModelComponent,
      63             :         const sal_Char* pStreamName,
      64             :         const sal_Char* pCompatibilityStreamName,
      65             :         ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > & rxContext,
      66             :         ::com::sun::star::uno::Reference<
      67             :             ::com::sun::star::beans::XPropertySet > & rPropSet,
      68             :         const sal_Char* pFilterName );
      69             : };
      70             : 
      71             : 
      72             : 
      73             : class SmXMLImport : public SvXMLImport
      74             : {
      75             :     std::unique_ptr<SvXMLTokenMap> pPresLayoutElemTokenMap;
      76             :     std::unique_ptr<SvXMLTokenMap> pPresLayoutAttrTokenMap;
      77             :     std::unique_ptr<SvXMLTokenMap> pFencedAttrTokenMap;
      78             :     std::unique_ptr<SvXMLTokenMap> pOperatorAttrTokenMap;
      79             :     std::unique_ptr<SvXMLTokenMap> pAnnotationAttrTokenMap;
      80             :     std::unique_ptr<SvXMLTokenMap> pPresElemTokenMap;
      81             :     std::unique_ptr<SvXMLTokenMap> pPresScriptEmptyElemTokenMap;
      82             :     std::unique_ptr<SvXMLTokenMap> pPresTableElemTokenMap;
      83             :     std::unique_ptr<SvXMLTokenMap> pColorTokenMap;
      84             :     std::unique_ptr<SvXMLTokenMap> pActionAttrTokenMap;
      85             : 
      86             :         SmNodeStack aNodeStack;
      87             :         bool bSuccess;
      88             :         OUString aText;
      89             : 
      90             : public:
      91             :     SmXMLImport(
      92             :         const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rContext,
      93             :         OUString const & implementationName, SvXMLImportFlags nImportFlags);
      94             :     virtual ~SmXMLImport() throw ();
      95             : 
      96             :     // XUnoTunnel
      97             :     sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
      98             :     static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId() throw();
      99             : 
     100             :     void SAL_CALL endDocument()
     101             :         throw( ::com::sun::star::xml::sax::SAXException,
     102             :         ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
     103             : 
     104             :     SvXMLImportContext *CreateContext(sal_uInt16 nPrefix,
     105             :         const OUString &rLocalName,
     106             :         const com::sun::star::uno::Reference <
     107             :         com::sun::star::xml::sax::XAttributeList> &xAttrList) SAL_OVERRIDE;
     108             :     SvXMLImportContext *CreateMathContext(sal_uInt16 nPrefix,
     109             :         const OUString &rLocalName,
     110             :         const com::sun::star::uno::Reference <
     111             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     112             :     SvXMLImportContext *CreateRowContext(sal_uInt16 nPrefix,
     113             :         const OUString &rLocalName,
     114             :         const com::sun::star::uno::Reference <
     115             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     116             :     SvXMLImportContext *CreateEncloseContext(sal_uInt16 nPrefix,
     117             :         const OUString &rLocalName,
     118             :         const com::sun::star::uno::Reference <
     119             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     120             :     SvXMLImportContext *CreateFracContext(sal_uInt16 nPrefix,
     121             :         const OUString &rLocalName,
     122             :         const com::sun::star::uno::Reference <
     123             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     124             :     SvXMLImportContext *CreateNumberContext(sal_uInt16 nPrefix,
     125             :         const OUString &rLocalName,
     126             :         const com::sun::star::uno::Reference <
     127             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     128             :     SvXMLImportContext *CreateTextContext(sal_uInt16 nPrefix,
     129             :         const OUString &rLocalName,
     130             :         const com::sun::star::uno::Reference <
     131             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     132             :     SvXMLImportContext *CreateAnnotationContext(sal_uInt16 nPrefix,
     133             :         const OUString &rLocalName,
     134             :         const com::sun::star::uno::Reference <
     135             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     136             :     SvXMLImportContext *CreateStringContext(sal_uInt16 nPrefix,
     137             :         const OUString &rLocalName,
     138             :         const com::sun::star::uno::Reference <
     139             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     140             :     SvXMLImportContext *CreateIdentifierContext(sal_uInt16 nPrefix,
     141             :         const OUString &rLocalName,
     142             :         const com::sun::star::uno::Reference <
     143             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     144             :     SvXMLImportContext *CreateOperatorContext(sal_uInt16 nPrefix,
     145             :         const OUString &rLocalName,
     146             :         const com::sun::star::uno::Reference <
     147             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     148             :     SvXMLImportContext *CreateSpaceContext(sal_uInt16 nPrefix,
     149             :         const OUString &rLocalName,
     150             :         const com::sun::star::uno::Reference <
     151             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     152             :     SvXMLImportContext *CreateSqrtContext(sal_uInt16 nPrefix,
     153             :         const OUString &rLocalName,
     154             :         const com::sun::star::uno::Reference <
     155             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     156             :     SvXMLImportContext *CreateRootContext(sal_uInt16 nPrefix,
     157             :         const OUString &rLocalName,
     158             :         const com::sun::star::uno::Reference <
     159             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     160             :     SvXMLImportContext *CreateStyleContext(sal_uInt16 nPrefix,
     161             :         const OUString &rLocalName,
     162             :         const com::sun::star::uno::Reference <
     163             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     164             :     SvXMLImportContext *CreatePaddedContext(sal_uInt16 nPrefix,
     165             :         const OUString &rLocalName,
     166             :         const com::sun::star::uno::Reference <
     167             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     168             :     SvXMLImportContext *CreatePhantomContext(sal_uInt16 nPrefix,
     169             :         const OUString &rLocalName,
     170             :         const com::sun::star::uno::Reference <
     171             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     172             :     SvXMLImportContext *CreateFencedContext(sal_uInt16 nPrefix,
     173             :         const OUString &rLocalName,
     174             :         const com::sun::star::uno::Reference <
     175             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     176             :     SvXMLImportContext *CreateErrorContext(sal_uInt16 nPrefix,
     177             :         const OUString &rLocalName,
     178             :         const com::sun::star::uno::Reference <
     179             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     180             :     SvXMLImportContext *CreateSubContext(sal_uInt16 nPrefix,
     181             :         const OUString &rLocalName,
     182             :         const com::sun::star::uno::Reference <
     183             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     184             :     SvXMLImportContext *CreateSupContext(sal_uInt16 nPrefix,
     185             :         const OUString &rLocalName,
     186             :         const com::sun::star::uno::Reference <
     187             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     188             :     SvXMLImportContext *CreateSubSupContext(sal_uInt16 nPrefix,
     189             :         const OUString &rLocalName,
     190             :         const com::sun::star::uno::Reference <
     191             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     192             :     SvXMLImportContext *CreateUnderContext(sal_uInt16 nPrefix,
     193             :         const OUString &rLocalName,
     194             :         const com::sun::star::uno::Reference <
     195             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     196             :     SvXMLImportContext *CreateOverContext(sal_uInt16 nPrefix,
     197             :         const OUString &rLocalName,
     198             :         const com::sun::star::uno::Reference <
     199             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     200             :     SvXMLImportContext *CreateUnderOverContext(sal_uInt16 nPrefix,
     201             :         const OUString &rLocalName,
     202             :         const com::sun::star::uno::Reference <
     203             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     204             :     SvXMLImportContext *CreateMultiScriptsContext(sal_uInt16 nPrefix,
     205             :         const OUString &rLocalName,
     206             :         const com::sun::star::uno::Reference <
     207             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     208             :     SvXMLImportContext *CreateNoneContext(sal_uInt16 nPrefix,
     209             :         const OUString &rLocalName,
     210             :         const com::sun::star::uno::Reference <
     211             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     212             :     SvXMLImportContext *CreatePrescriptsContext(sal_uInt16 nPrefix,
     213             :         const OUString &rLocalName,
     214             :         const com::sun::star::uno::Reference <
     215             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     216             :     SvXMLImportContext *CreateTableContext(sal_uInt16 nPrefix,
     217             :         const OUString &rLocalName,
     218             :         const com::sun::star::uno::Reference <
     219             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     220             :     SvXMLImportContext *CreateTableRowContext(sal_uInt16 nPrefix,
     221             :         const OUString &rLocalName,
     222             :         const com::sun::star::uno::Reference <
     223             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     224             :     SvXMLImportContext *CreateTableCellContext(sal_uInt16 nPrefix,
     225             :         const OUString &rLocalName,
     226             :         const com::sun::star::uno::Reference <
     227             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     228             :     SvXMLImportContext *CreateAlignGroupContext(sal_uInt16 nPrefix,
     229             :         const OUString &rLocalName,
     230             :         const com::sun::star::uno::Reference <
     231             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     232             :     SvXMLImportContext *CreateActionContext(sal_uInt16 nPrefix,
     233             :         const OUString &rLocalName,
     234             :         const com::sun::star::uno::Reference <
     235             :         com::sun::star::xml::sax::XAttributeList> &xAttrList);
     236             : 
     237             :     const SvXMLTokenMap &GetPresLayoutElemTokenMap();
     238             :     const SvXMLTokenMap &GetPresLayoutAttrTokenMap();
     239             :     const SvXMLTokenMap &GetFencedAttrTokenMap();
     240             :     const SvXMLTokenMap &GetOperatorAttrTokenMap();
     241             :     const SvXMLTokenMap &GetAnnotationAttrTokenMap();
     242             :     const SvXMLTokenMap &GetPresElemTokenMap();
     243             :     const SvXMLTokenMap &GetPresScriptEmptyElemTokenMap();
     244             :     const SvXMLTokenMap &GetPresTableElemTokenMap();
     245             :     const SvXMLTokenMap &GetColorTokenMap();
     246             :     const SvXMLTokenMap &GetActionAttrTokenMap();
     247             : 
     248          80 :     SmNodeStack & GetNodeStack()    { return aNodeStack; }
     249           7 :     SmNode *GetTree()
     250             :     {
     251           7 :         return popOrZero(aNodeStack);
     252             :     }
     253             : 
     254           7 :     bool GetSuccess()              { return bSuccess; }
     255           2 :     SAL_WARN_UNUSED_RESULT OUString GetText() { return aText; }
     256           2 :     void SetText(const OUString &rStr) { aText = rStr; }
     257             : 
     258             :     virtual void SetViewSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aViewProps) SAL_OVERRIDE;
     259             :     virtual void SetConfigurationSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aViewProps) SAL_OVERRIDE;
     260             : };
     261             : 
     262             : 
     263             : 
     264             : enum SmXMLMathElemTokenMap
     265             : {
     266             :     XML_TOK_MATH
     267             : };
     268             : 
     269             : enum SmXMLPresLayoutElemTokenMap
     270             : {
     271             :     XML_TOK_SEMANTICS,
     272             :     XML_TOK_MSTYLE,
     273             :     XML_TOK_MERROR,
     274             :     XML_TOK_MPHANTOM,
     275             :     XML_TOK_MROW,
     276             :     XML_TOK_MENCLOSE,
     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             :     XML_TOK_MATHCOLOR
     301             : };
     302             : 
     303             : 
     304             : enum SmXMLFencedAttrTokenMap
     305             : {
     306             :     XML_TOK_OPEN,
     307             :     XML_TOK_CLOSE
     308             : };
     309             : 
     310             : 
     311             : enum SmXMLPresTableElemTokenMap
     312             : {
     313             :     XML_TOK_MTR,
     314             :     XML_TOK_MTD
     315             : };
     316             : 
     317             : enum SmXMLPresElemTokenMap
     318             : {
     319             :     XML_TOK_ANNOTATION,
     320             :     XML_TOK_MI,
     321             :     XML_TOK_MN,
     322             :     XML_TOK_MO,
     323             :     XML_TOK_MTEXT,
     324             :     XML_TOK_MSPACE,
     325             :     XML_TOK_MS,
     326             :     XML_TOK_MALIGNGROUP
     327             : };
     328             : 
     329             : enum SmXMLPresScriptEmptyElemTokenMap
     330             : {
     331             :     XML_TOK_MPRESCRIPTS,
     332             :     XML_TOK_NONE
     333             : };
     334             : 
     335             : enum SmXMLOperatorAttrTokenMap
     336             : {
     337             :     XML_TOK_STRETCHY
     338             : };
     339             : 
     340             : enum SmXMLAnnotationAttrTokenMap
     341             : {
     342             :     XML_TOK_ENCODING
     343             : };
     344             : 
     345             : enum SmXMLActionAttrTokenMap
     346             : {
     347             :     XML_TOK_SELECTION
     348             : };
     349             : 
     350             : 
     351             : #endif
     352             : 
     353             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11