1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski #ifndef OOX_SHAPE_SHAPE_CONTEXT_HANDLER_HXX
24*b1cdbd2cSJim Jagielski #define OOX_SHAPE_SHAPE_CONTEXT_HANDLER_HXX
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski #include <boost/shared_ptr.hpp>
27*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/XComponentContext.hpp>
28*b1cdbd2cSJim Jagielski #include <cppuhelper/implbase1.hxx>
29*b1cdbd2cSJim Jagielski #include <com/sun/star/xml/sax/XFastShapeContextHandler.hpp>
30*b1cdbd2cSJim Jagielski #include "oox/drawingml/graphicshapecontext.hxx"
31*b1cdbd2cSJim Jagielski #include "oox/drawingml/shape.hxx"
32*b1cdbd2cSJim Jagielski #include "oox/drawingml/theme.hxx"
33*b1cdbd2cSJim Jagielski #include "oox/core/fragmenthandler.hxx"
34*b1cdbd2cSJim Jagielski #include "oox/core/xmlfilterbase.hxx"
35*b1cdbd2cSJim Jagielski #include "ShapeFilterBase.hxx"
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski namespace css = ::com::sun::star;
38*b1cdbd2cSJim Jagielski 
39*b1cdbd2cSJim Jagielski namespace oox { namespace shape {
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski class ShapeFragmentHandler : public core::FragmentHandler
42*b1cdbd2cSJim Jagielski {
43*b1cdbd2cSJim Jagielski public:
44*b1cdbd2cSJim Jagielski     typedef boost::shared_ptr<ShapeFragmentHandler> Pointer_t;
45*b1cdbd2cSJim Jagielski 
ShapeFragmentHandler(core::XmlFilterBase & rFilter,const::rtl::OUString & rFragmentPath)46*b1cdbd2cSJim Jagielski     explicit ShapeFragmentHandler(core::XmlFilterBase& rFilter,
47*b1cdbd2cSJim Jagielski                                   const ::rtl::OUString& rFragmentPath )
48*b1cdbd2cSJim Jagielski     : FragmentHandler(rFilter, rFragmentPath)
49*b1cdbd2cSJim Jagielski     {
50*b1cdbd2cSJim Jagielski     }
51*b1cdbd2cSJim Jagielski };
52*b1cdbd2cSJim Jagielski 
53*b1cdbd2cSJim Jagielski class ShapeContextHandler:
54*b1cdbd2cSJim Jagielski     public ::cppu::WeakImplHelper1<
55*b1cdbd2cSJim Jagielski         css::xml::sax::XFastShapeContextHandler>
56*b1cdbd2cSJim Jagielski {
57*b1cdbd2cSJim Jagielski public:
58*b1cdbd2cSJim Jagielski     explicit ShapeContextHandler
59*b1cdbd2cSJim Jagielski     (css::uno::Reference< css::uno::XComponentContext > const & context);
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski     virtual ~ShapeContextHandler();
62*b1cdbd2cSJim Jagielski 
63*b1cdbd2cSJim Jagielski     // ::com::sun::star::lang::XServiceInfo:
64*b1cdbd2cSJim Jagielski     virtual ::rtl::OUString SAL_CALL getImplementationName()
65*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException);
66*b1cdbd2cSJim Jagielski 
67*b1cdbd2cSJim Jagielski     virtual ::sal_Bool SAL_CALL supportsService
68*b1cdbd2cSJim Jagielski     (const ::rtl::OUString & ServiceName) throw (css::uno::RuntimeException);
69*b1cdbd2cSJim Jagielski 
70*b1cdbd2cSJim Jagielski     virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL
71*b1cdbd2cSJim Jagielski     getSupportedServiceNames() throw (css::uno::RuntimeException);
72*b1cdbd2cSJim Jagielski 
73*b1cdbd2cSJim Jagielski     // ::com::sun::star::xml::sax::XFastContextHandler:
74*b1cdbd2cSJim Jagielski     virtual void SAL_CALL startFastElement
75*b1cdbd2cSJim Jagielski     (::sal_Int32 Element,
76*b1cdbd2cSJim Jagielski      const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
77*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException, css::xml::sax::SAXException);
78*b1cdbd2cSJim Jagielski 
79*b1cdbd2cSJim Jagielski     virtual void SAL_CALL startUnknownElement
80*b1cdbd2cSJim Jagielski     (const ::rtl::OUString & Namespace,
81*b1cdbd2cSJim Jagielski      const ::rtl::OUString & Name,
82*b1cdbd2cSJim Jagielski      const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
83*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException, css::xml::sax::SAXException);
84*b1cdbd2cSJim Jagielski 
85*b1cdbd2cSJim Jagielski     virtual void SAL_CALL endFastElement(::sal_Int32 Element)
86*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException, css::xml::sax::SAXException);
87*b1cdbd2cSJim Jagielski 
88*b1cdbd2cSJim Jagielski     virtual void SAL_CALL endUnknownElement
89*b1cdbd2cSJim Jagielski     (const ::rtl::OUString & Namespace,
90*b1cdbd2cSJim Jagielski      const ::rtl::OUString & Name)
91*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException, css::xml::sax::SAXException);
92*b1cdbd2cSJim Jagielski 
93*b1cdbd2cSJim Jagielski     virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL
94*b1cdbd2cSJim Jagielski     createFastChildContext
95*b1cdbd2cSJim Jagielski     (::sal_Int32 Element,
96*b1cdbd2cSJim Jagielski      const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
97*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException, css::xml::sax::SAXException);
98*b1cdbd2cSJim Jagielski 
99*b1cdbd2cSJim Jagielski     virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL
100*b1cdbd2cSJim Jagielski     createUnknownChildContext
101*b1cdbd2cSJim Jagielski     (const ::rtl::OUString & Namespace,
102*b1cdbd2cSJim Jagielski      const ::rtl::OUString & Name,
103*b1cdbd2cSJim Jagielski      const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
104*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException, css::xml::sax::SAXException);
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski     virtual void SAL_CALL characters(const ::rtl::OUString & aChars)
107*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException, css::xml::sax::SAXException);
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski     // ::com::sun::star::xml::sax::XFastShapeContextHandler:
110*b1cdbd2cSJim Jagielski     virtual css::uno::Reference< css::drawing::XShape > SAL_CALL getShape()
111*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException);
112*b1cdbd2cSJim Jagielski 
113*b1cdbd2cSJim Jagielski     virtual css::uno::Reference< css::drawing::XDrawPage > SAL_CALL getDrawPage()
114*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException);
115*b1cdbd2cSJim Jagielski 
116*b1cdbd2cSJim Jagielski     virtual void SAL_CALL setDrawPage
117*b1cdbd2cSJim Jagielski     (const css::uno::Reference< css::drawing::XDrawPage > & the_value)
118*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException);
119*b1cdbd2cSJim Jagielski 
120*b1cdbd2cSJim Jagielski     virtual css::uno::Reference< css::frame::XModel > SAL_CALL getModel()
121*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException);
122*b1cdbd2cSJim Jagielski 
123*b1cdbd2cSJim Jagielski     virtual void SAL_CALL setModel
124*b1cdbd2cSJim Jagielski     (const css::uno::Reference< css::frame::XModel > & the_value)
125*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException);
126*b1cdbd2cSJim Jagielski 
127*b1cdbd2cSJim Jagielski     virtual css::uno::Reference< css::io::XInputStream > SAL_CALL
128*b1cdbd2cSJim Jagielski     getInputStream() throw (css::uno::RuntimeException);
129*b1cdbd2cSJim Jagielski 
130*b1cdbd2cSJim Jagielski     virtual void SAL_CALL setInputStream
131*b1cdbd2cSJim Jagielski     (const css::uno::Reference< css::io::XInputStream > & the_value)
132*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException);
133*b1cdbd2cSJim Jagielski 
134*b1cdbd2cSJim Jagielski     virtual ::rtl::OUString SAL_CALL getRelationFragmentPath()
135*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException);
136*b1cdbd2cSJim Jagielski     virtual void SAL_CALL setRelationFragmentPath
137*b1cdbd2cSJim Jagielski     (const ::rtl::OUString & the_value)
138*b1cdbd2cSJim Jagielski         throw (css::uno::RuntimeException);
139*b1cdbd2cSJim Jagielski 
140*b1cdbd2cSJim Jagielski     virtual ::sal_Int32 SAL_CALL getStartToken() throw (::com::sun::star::uno::RuntimeException);
141*b1cdbd2cSJim Jagielski     virtual void SAL_CALL setStartToken( ::sal_Int32 _starttoken ) throw (::com::sun::star::uno::RuntimeException);
142*b1cdbd2cSJim Jagielski 
143*b1cdbd2cSJim Jagielski private:
144*b1cdbd2cSJim Jagielski     ShapeContextHandler(ShapeContextHandler &); // not defined
145*b1cdbd2cSJim Jagielski     void operator =(ShapeContextHandler &); // not defined
146*b1cdbd2cSJim Jagielski 
147*b1cdbd2cSJim Jagielski     ::sal_uInt32 mnStartToken;
148*b1cdbd2cSJim Jagielski 
149*b1cdbd2cSJim Jagielski     css::uno::Reference< css::uno::XComponentContext > m_xContext;
150*b1cdbd2cSJim Jagielski     drawingml::ShapePtr mpShape;
151*b1cdbd2cSJim Jagielski     ::boost::shared_ptr< vml::Drawing > mpDrawing;
152*b1cdbd2cSJim Jagielski 
153*b1cdbd2cSJim Jagielski     typedef boost::shared_ptr<drawingml::GraphicShapeContext>
154*b1cdbd2cSJim Jagielski     GraphicShapeContextPtr;
155*b1cdbd2cSJim Jagielski 	css::uno::Reference<XFastContextHandler> mxDrawingFragmentHandler;
156*b1cdbd2cSJim Jagielski     css::uno::Reference<XFastContextHandler> mxGraphicShapeContext;
157*b1cdbd2cSJim Jagielski 
158*b1cdbd2cSJim Jagielski     core::XmlFilterRef mxFilterBase;
159*b1cdbd2cSJim Jagielski     drawingml::ThemePtr mpThemePtr;
160*b1cdbd2cSJim Jagielski     css::uno::Reference<css::drawing::XDrawPage> mxDrawPage;
161*b1cdbd2cSJim Jagielski     css::uno::Reference<css::io::XInputStream> mxInputStream;
162*b1cdbd2cSJim Jagielski     ::rtl::OUString msRelationFragmentPath;
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski     css::uno::Reference<XFastContextHandler> getGraphicShapeContext(::sal_Int32 Element);
165*b1cdbd2cSJim Jagielski     css::uno::Reference<XFastContextHandler> getDrawingShapeContext();
166*b1cdbd2cSJim Jagielski     css::uno::Reference<XFastContextHandler> getContextHandler();
167*b1cdbd2cSJim Jagielski };
168*b1cdbd2cSJim Jagielski 
169*b1cdbd2cSJim Jagielski }}
170*b1cdbd2cSJim Jagielski 
171*b1cdbd2cSJim Jagielski #endif // OOX_SHAPE_SHAPE_CONTEXT_HANDLER_HXX
172