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 : #ifndef INCLUDED_OOX_SOURCE_SHAPE_SHAPECONTEXTHANDLER_HXX
20 : #define INCLUDED_OOX_SOURCE_SHAPE_SHAPECONTEXTHANDLER_HXX
21 :
22 : #include <boost/shared_ptr.hpp>
23 : #include <com/sun/star/uno/XComponentContext.hpp>
24 : #include <cppuhelper/implbase2.hxx>
25 : #include <com/sun/star/xml/sax/XFastShapeContextHandler.hpp>
26 : #include "oox/drawingml/graphicshapecontext.hxx"
27 : #include "oox/drawingml/shape.hxx"
28 : #include "oox/drawingml/theme.hxx"
29 : #include "oox/core/fragmenthandler2.hxx"
30 : #include "oox/core/xmlfilterbase.hxx"
31 : #include "ShapeFilterBase.hxx"
32 : #include <com/sun/star/lang/XServiceInfo.hpp>
33 : #include <com/sun/star/document/XDocumentProperties.hpp>
34 :
35 : namespace oox { namespace shape {
36 :
37 8874 : class ShapeFragmentHandler : public core::FragmentHandler2
38 : {
39 : public:
40 : typedef boost::shared_ptr<ShapeFragmentHandler> Pointer_t;
41 :
42 4437 : explicit ShapeFragmentHandler(core::XmlFilterBase& rFilter,
43 : const OUString& rFragmentPath )
44 4437 : : FragmentHandler2(rFilter, rFragmentPath)
45 : {
46 4437 : }
47 : };
48 :
49 : class ShapeContextHandler:
50 : public ::cppu::WeakImplHelper2< css::xml::sax::XFastShapeContextHandler,
51 : css::lang::XServiceInfo >
52 : {
53 : public:
54 : explicit ShapeContextHandler
55 : (css::uno::Reference< css::uno::XComponentContext > const & context);
56 :
57 : virtual ~ShapeContextHandler();
58 :
59 : // ::com::sun::star::lang::XServiceInfo:
60 : virtual OUString SAL_CALL getImplementationName()
61 : throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
62 :
63 : virtual sal_Bool SAL_CALL supportsService
64 : (const OUString & ServiceName) throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
65 :
66 : virtual css::uno::Sequence< OUString > SAL_CALL
67 : getSupportedServiceNames() throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
68 :
69 : // ::com::sun::star::xml::sax::XFastContextHandler:
70 : virtual void SAL_CALL startFastElement
71 : (::sal_Int32 Element,
72 : const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
73 : throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
74 :
75 : virtual void SAL_CALL startUnknownElement
76 : (const OUString & Namespace,
77 : const OUString & Name,
78 : const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
79 : throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
80 :
81 : virtual void SAL_CALL endFastElement(::sal_Int32 Element)
82 : throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
83 :
84 : virtual void SAL_CALL endUnknownElement
85 : (const OUString & Namespace,
86 : const OUString & Name)
87 : throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
88 :
89 : virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL
90 : createFastChildContext
91 : (::sal_Int32 Element,
92 : const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
93 : throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
94 :
95 : virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL
96 : createUnknownChildContext
97 : (const OUString & Namespace,
98 : const OUString & Name,
99 : const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
100 : throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
101 :
102 : virtual void SAL_CALL characters(const OUString & aChars)
103 : throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
104 :
105 : // ::com::sun::star::xml::sax::XFastShapeContextHandler:
106 : virtual css::uno::Reference< css::drawing::XShape > SAL_CALL getShape()
107 : throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
108 :
109 : virtual css::uno::Reference< css::drawing::XDrawPage > SAL_CALL getDrawPage()
110 : throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
111 :
112 : virtual void SAL_CALL setDrawPage
113 : (const css::uno::Reference< css::drawing::XDrawPage > & the_value)
114 : throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
115 :
116 : virtual css::uno::Reference< css::frame::XModel > SAL_CALL getModel()
117 : throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
118 :
119 : virtual void SAL_CALL setModel
120 : (const css::uno::Reference< css::frame::XModel > & the_value)
121 : throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
122 :
123 : virtual css::uno::Reference< css::io::XInputStream > SAL_CALL
124 : getInputStream() throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
125 :
126 : virtual void SAL_CALL setInputStream
127 : (const css::uno::Reference< css::io::XInputStream > & the_value)
128 : throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
129 :
130 : virtual OUString SAL_CALL getRelationFragmentPath()
131 : throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
132 : virtual void SAL_CALL setRelationFragmentPath
133 : (const OUString & the_value)
134 : throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
135 :
136 : virtual ::sal_Int32 SAL_CALL getStartToken() throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
137 : virtual void SAL_CALL setStartToken( ::sal_Int32 _starttoken ) throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
138 :
139 : virtual css::awt::Point SAL_CALL getPosition() throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
140 : virtual void SAL_CALL setPosition(const css::awt::Point& rPosition) throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
141 :
142 : virtual void SAL_CALL setDocumentProperties(const css::uno::Reference<css::document::XDocumentProperties>& xDocProps)
143 : throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
144 : virtual css::uno::Reference<css::document::XDocumentProperties> SAL_CALL getDocumentProperties()
145 : throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
146 :
147 : private:
148 : ShapeContextHandler(ShapeContextHandler &) SAL_DELETED_FUNCTION;
149 : void operator =(ShapeContextHandler &) SAL_DELETED_FUNCTION;
150 :
151 : ::sal_uInt32 mnStartToken;
152 : css::awt::Point maPosition;
153 :
154 : css::uno::Reference< css::uno::XComponentContext > m_xContext;
155 : drawingml::ShapePtr mpShape;
156 : ::boost::shared_ptr< vml::Drawing > mpDrawing;
157 :
158 : typedef boost::shared_ptr<drawingml::GraphicShapeContext>
159 : GraphicShapeContextPtr;
160 : css::uno::Reference<XFastContextHandler> mxDrawingFragmentHandler;
161 : css::uno::Reference<XFastContextHandler> mxGraphicShapeContext;
162 : css::uno::Reference<XFastContextHandler> mxDiagramShapeContext;
163 : css::uno::Reference<XFastContextHandler> mxLockedCanvasContext;
164 : css::uno::Reference<XFastContextHandler> mxWpsContext;
165 : css::uno::Reference<css::drawing::XShape> mxSavedShape;
166 : css::uno::Reference<XFastContextHandler> mxWpgContext;
167 : css::uno::Reference<XFastContextHandler> mxChartShapeContext;
168 : css::uno::Reference<css::document::XDocumentProperties> mxDocumentProperties;
169 :
170 : core::XmlFilterRef mxFilterBase;
171 : drawingml::ThemePtr mpThemePtr;
172 : css::uno::Reference<css::drawing::XDrawPage> mxDrawPage;
173 : css::uno::Reference<css::io::XInputStream> mxInputStream;
174 : OUString msRelationFragmentPath;
175 :
176 : css::uno::Reference<XFastContextHandler> getGraphicShapeContext(::sal_Int32 Element);
177 : css::uno::Reference<XFastContextHandler> getChartShapeContext(::sal_Int32 Element);
178 : css::uno::Reference<XFastContextHandler> getDrawingShapeContext();
179 : css::uno::Reference<XFastContextHandler> getDiagramShapeContext();
180 : css::uno::Reference<XFastContextHandler> getLockedCanvasContext(sal_Int32 nElement);
181 : css::uno::Reference<XFastContextHandler> getWpsContext(sal_Int32 nStartElement, sal_Int32 nElement);
182 : css::uno::Reference<XFastContextHandler> getWpgContext(sal_Int32 nElement);
183 : css::uno::Reference<XFastContextHandler> getContextHandler(sal_Int32 nElement = 0);
184 : };
185 :
186 : }}
187 :
188 : #endif // INCLUDED_OOX_SOURCE_SHAPE_SHAPECONTEXTHANDLER_HXX
189 :
190 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|