From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- include/svx/xmlgrhlp.hxx | 128 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 include/svx/xmlgrhlp.hxx (limited to 'include/svx/xmlgrhlp.hxx') diff --git a/include/svx/xmlgrhlp.hxx b/include/svx/xmlgrhlp.hxx new file mode 100644 index 000000000..0e54e1cb1 --- /dev/null +++ b/include/svx/xmlgrhlp.hxx @@ -0,0 +1,128 @@ +/* -*- 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_SVX_XMLGRHLP_HXX +#define INCLUDED_SVX_XMLGRHLP_HXX + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +enum class SvXMLGraphicHelperMode +{ + Read, Write +}; + +struct SvxGraphicHelperStream_Impl +{ + css::uno::Reference < css::embed::XStorage > xStorage; + css::uno::Reference < css::io::XStream > xStream; +}; + +class SVXCORE_DLLPUBLIC SvXMLGraphicHelper final : + public comphelper::WeakComponentImplHelper +{ +private: + css::uno::Reference < css::embed::XStorage > mxRootStorage; + OUString maCurStorageName; + std::vector< css::uno::Reference< css::io::XOutputStream > > + maGrfStms; + + std::unordered_map> maGraphicObjects; + std::unordered_map> maExportGraphics; + + SvXMLGraphicHelperMode meCreateMode; + OUString maOutputMimeType; + + SVX_DLLPRIVATE static bool ImplGetStreamNames( const OUString& rURLStr, + OUString& rPictureStorageName, + OUString& rPictureStreamName ); + SVX_DLLPRIVATE css::uno::Reference < css::embed::XStorage > + ImplGetGraphicStorage( const OUString& rPictureStorageName ); + SVX_DLLPRIVATE SvxGraphicHelperStream_Impl + ImplGetGraphicStream( const OUString& rPictureStorageName, + const OUString& rPictureStreamName ); + SVX_DLLPRIVATE static OUString ImplGetGraphicMimeType( const OUString& rFileName ); + SVX_DLLPRIVATE Graphic ImplReadGraphic( const OUString& rPictureStorageName, + const OUString& rPictureStreamName ); + + SvXMLGraphicHelper(); + virtual ~SvXMLGraphicHelper() override; + void Init( const css::uno::Reference < css::embed::XStorage >& xXMLStorage, + SvXMLGraphicHelperMode eCreateMode, + const OUString& rGraphicMimeType = OUString() ); + + SVX_DLLPRIVATE OUString implSaveGraphic(css::uno::Reference const & rxGraphic, + OUString & rOutMimeType, + std::u16string_view rRequestName); + +public: + SvXMLGraphicHelper( SvXMLGraphicHelperMode eCreateMode ); + + static rtl::Reference Create( const css::uno::Reference < css::embed::XStorage >& rXMLStorage, + SvXMLGraphicHelperMode eCreateMode ); + static rtl::Reference Create( SvXMLGraphicHelperMode eCreateMode, + const OUString& rMimeType = OUString() ); + +public: + + // XGraphicObjectResolver + virtual OUString SAL_CALL resolveGraphicObjectURL( const OUString& aURL ) override; + + // XGraphicStorageHandler + virtual css::uno::Reference SAL_CALL + loadGraphic(OUString const & aURL) override; + + virtual css::uno::Reference SAL_CALL + loadGraphicFromOutputStream(css::uno::Reference const & rxOutputStream) override; + + virtual OUString SAL_CALL + saveGraphic(css::uno::Reference const & rxGraphic) override; + + virtual OUString SAL_CALL + saveGraphicByName(css::uno::Reference const & rxGraphic, OUString & rOutSavedMimeType, OUString const & rRequestName) override; + + virtual css::uno::Reference SAL_CALL + createInputStream(css::uno::Reference const & rxGraphic) override; + + // XBinaryStreamResolver + virtual css::uno::Reference< css::io::XInputStream > SAL_CALL getInputStream( const OUString& rURL ) override; + virtual css::uno::Reference< css::io::XOutputStream > SAL_CALL createOutputStream( ) override; + virtual OUString SAL_CALL resolveOutputStream( const css::uno::Reference< css::io::XOutputStream >& rxBinaryStream ) override; +}; + +namespace svx { + SVXCORE_DLLPUBLIC void DropUnusedNamedItems(css::uno::Reference const& xModel); +} + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3