/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #ifndef INCLUDED_OOX_SOURCE_SHAPE_SHAPECONTEXTHANDLER_HXX #define INCLUDED_OOX_SOURCE_SHAPE_SHAPECONTEXTHANDLER_HXX #include #include #include #include #include "oox/drawingml/graphicshapecontext.hxx" #include "oox/drawingml/shape.hxx" #include "oox/drawingml/theme.hxx" #include "oox/core/fragmenthandler2.hxx" #include "oox/core/xmlfilterbase.hxx" #include "ShapeFilterBase.hxx" #include #include namespace oox { namespace shape { class ShapeFragmentHandler : public core::FragmentHandler2 { public: typedef std::shared_ptr Pointer_t; explicit ShapeFragmentHandler(core::XmlFilterBase& rFilter, const OUString& rFragmentPath ) : FragmentHandler2(rFilter, rFragmentPath) { } }; class ShapeContextHandler: public ::cppu::WeakImplHelper< css::xml::sax::XFastShapeContextHandler, css::lang::XServiceInfo > { public: explicit ShapeContextHandler (css::uno::Reference< css::uno::XComponentContext > const & context); virtual ~ShapeContextHandler() override; // css::lang::XServiceInfo: virtual OUString SAL_CALL getImplementationName() override; virtual sal_Bool SAL_CALL supportsService (const OUString & ServiceName) override; virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; // css::xml::sax::XFastContextHandler: virtual void SAL_CALL startFastElement (::sal_Int32 Element, const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs) override; virtual void SAL_CALL startUnknownElement (const OUString & Namespace, const OUString & Name, const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs) override; virtual void SAL_CALL endFastElement(::sal_Int32 Element) override; virtual void SAL_CALL endUnknownElement (const OUString & Namespace, const OUString & Name) override; virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext (::sal_Int32 Element, const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs) override; virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createUnknownChildContext (const OUString & Namespace, const OUString & Name, const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs) override; virtual void SAL_CALL characters(const OUString & aChars) override; // css::xml::sax::XFastShapeContextHandler: virtual css::uno::Reference< css::drawing::XShape > SAL_CALL getShape() override; virtual css::uno::Reference< css::drawing::XDrawPage > SAL_CALL getDrawPage() override; virtual void SAL_CALL setDrawPage (const css::uno::Reference< css::drawing::XDrawPage > & the_value) override; virtual css::uno::Reference< css::frame::XModel > SAL_CALL getModel() override; virtual void SAL_CALL setModel (const css::uno::Reference< css::frame::XModel > & the_value) override; virtual OUString SAL_CALL getRelationFragmentPath() override; virtual void SAL_CALL setRelationFragmentPath (const OUString & the_value) override; virtual ::sal_Int32 SAL_CALL getStartToken() override; virtual void SAL_CALL setStartToken( ::sal_Int32 _starttoken ) override; virtual css::awt::Point SAL_CALL getPosition() override; virtual void SAL_CALL setPosition(const css::awt::Point& rPosition) override; virtual void SAL_CALL setDocumentProperties(const css::uno::Reference& xDocProps) override; virtual css::uno::Reference SAL_CALL getDocumentProperties() override; virtual css::uno::Sequence SAL_CALL getMediaDescriptor() override; virtual void SAL_CALL setMediaDescriptor(const css::uno::Sequence& rMediaDescriptor) override; private: ShapeContextHandler(ShapeContextHandler &) = delete; void operator =(ShapeContextHandler &) = delete; ::sal_uInt32 mnStartToken; css::awt::Point maPosition; drawingml::ShapePtr mpShape; std::shared_ptr< vml::Drawing > mpDrawing; typedef std::shared_ptr GraphicShapeContextPtr; css::uno::Reference mxDrawingFragmentHandler; css::uno::Reference mxGraphicShapeContext; css::uno::Reference mxDiagramShapeContext; css::uno::Reference mxLockedCanvasContext; css::uno::Reference mxWpsContext; css::uno::Reference mxSavedShape; css::uno::Reference mxWpgContext; css::uno::Reference mxChartShapeContext; css::uno::Reference mxDocumentProperties; css::uno::Sequence maMediaDescriptor; ::rtl::Reference< core::XmlFilterBase > mxFilterBase; drawingml::ThemePtr mpThemePtr; css::uno::Reference mxDrawPage; OUString msRelationFragmentPath; css::uno::Reference const & getGraphicShapeContext(::sal_Int32 Element); css::uno::Reference const & getChartShapeContext(::sal_Int32 Element); css::uno::Reference const & getDrawingShapeContext(); css::uno::Reference const & getDiagramShapeContext(); css::uno::Reference const & getLockedCanvasContext(sal_Int32 nElement); css::uno::Reference const & getWpsContext(sal_Int32 nStartElement, sal_Int32 nElement); css::uno::Reference const & getWpgContext(sal_Int32 nElement); css::uno::Reference getContextHandler(sal_Int32 nElement = 0); }; }} #endif // INCLUDED_OOX_SOURCE_SHAPE_SHAPECONTEXTHANDLER_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */