23#include <com/sun/star/embed/XTransactedObject.hpp>
24#include <com/sun/star/embed/ElementModes.hpp>
25#include <com/sun/star/beans/XPropertySet.hpp>
26#include <com/sun/star/io/NotConnectedException.hpp>
27#include <com/sun/star/lang/XServiceInfo.hpp>
28#include <com/sun/star/lang/XInitialization.hpp>
29#include <com/sun/star/lang/XMultiServiceFactory.hpp>
30#include <com/sun/star/util/XCancellable.hpp>
31#include <com/sun/star/embed/XHierarchicalStorageAccess.hpp>
83class GraphicInputStream :
public cppu::WeakImplHelper<XInputStream>
88 virtual void SAL_CALL skipBytes(sal_Int32 nBytesToSkip)
override;
89 virtual sal_Int32 SAL_CALL available()
override;
90 virtual void SAL_CALL closeInput()
override;
98 explicit GraphicInputStream(
GraphicObject const & raGraphicObject,
const OUString & rMimeType);
99 GraphicInputStream(
const GraphicInputStream&) =
delete;
101 GraphicInputStream& operator=(
const GraphicInputStream&) =
delete;
105 return mxStreamWrapper.is();
110GraphicInputStream::GraphicInputStream(
GraphicObject const & aGraphicObject,
const OUString & rMimeType)
112 if (aGraphicObject.
GetType() == GraphicType::NONE)
115 SvStream* pStream = maTempFile.GetStream(StreamMode::READWRITE);
126 if (rMimeType.isEmpty())
139 if (aGraphic.
GetType() == GraphicType::Bitmap)
142 OUString aFormat = rMimeType;
145 aFormat =
"image/gif";
146 else if (aFormat.isEmpty())
147 aFormat =
"image/png";
151 else if (rMimeType.isEmpty() && aGraphic.
GetType() == GraphicType::GdiMetafile)
159 else if (!rMimeType.isEmpty())
169 mxStreamWrapper = new ::utl::OInputStreamWrapper(*pStream);
173sal_Int32 SAL_CALL GraphicInputStream::readBytes(
Sequence<sal_Int8> & rData, sal_Int32 nBytesToRead)
175 if (!mxStreamWrapper.is())
176 throw NotConnectedException();
178 return mxStreamWrapper->readBytes(rData, nBytesToRead);
181sal_Int32 SAL_CALL GraphicInputStream::readSomeBytes(
Sequence<sal_Int8>& rData, sal_Int32 nMaxBytesToRead )
183 if (!mxStreamWrapper.is())
184 throw NotConnectedException() ;
186 return mxStreamWrapper->readSomeBytes(rData, nMaxBytesToRead);
189void SAL_CALL GraphicInputStream::skipBytes(sal_Int32 nBytesToSkip)
191 if (!mxStreamWrapper.is())
192 throw NotConnectedException();
194 mxStreamWrapper->skipBytes(nBytesToSkip);
197sal_Int32 SAL_CALL GraphicInputStream::available()
199 if (!mxStreamWrapper.is())
200 throw NotConnectedException();
202 return mxStreamWrapper->available();
205void SAL_CALL GraphicInputStream::closeInput()
207 if (!mxStreamWrapper.is())
208 throw NotConnectedException();
210 mxStreamWrapper->closeInput();
213class SvXMLGraphicOutputStream:
214 public cppu::WeakImplHelper<XOutputStream>
220 virtual void SAL_CALL flush()
override;
221 virtual void SAL_CALL closeOutput()
override;
225 std::optional<::utl::TempFileFast> moTmp;
228 std::optional<GraphicObject> moGrfObj;
233 SvXMLGraphicOutputStream();
234 virtual ~SvXMLGraphicOutputStream()
override;
235 SvXMLGraphicOutputStream(
const SvXMLGraphicOutputStream&) =
delete;
236 SvXMLGraphicOutputStream& operator=(
const SvXMLGraphicOutputStream&) =
delete;
238 bool Exists()
const {
return mxStmWrapper.is(); }
243SvXMLGraphicOutputStream::SvXMLGraphicOutputStream()
244 : moTmp(std::in_place)
245 , moGrfObj(std::in_place)
248 mpOStm = moTmp->GetStream( StreamMode::READWRITE );
251 mxStmWrapper = new ::utl::OOutputStreamWrapper( *mpOStm );
254SvXMLGraphicOutputStream::~SvXMLGraphicOutputStream()
261 if( !mxStmWrapper.is() )
262 throw NotConnectedException() ;
264 mxStmWrapper->writeBytes( rData );
267void SAL_CALL SvXMLGraphicOutputStream::flush()
269 if( !mxStmWrapper.is() )
270 throw NotConnectedException() ;
272 mxStmWrapper->flush();
275void SAL_CALL SvXMLGraphicOutputStream::closeOutput()
277 if( !mxStmWrapper.is() )
278 throw NotConnectedException() ;
280 mxStmWrapper->closeOutput();
281 mxStmWrapper.clear();
286Graphic SvXMLGraphicOutputStream::GetGraphic()
290 if (mbClosed && moGrfObj->GetType() == GraphicType::NONE && mpOStm)
304 sal_uInt64 nStreamLen = mpOStm->TellEnd();
307 if ( nStreamLen == 0 )
313 nStreamLen = mpOStm->TellEnd();
316 if( nStreamLen >= 2 )
319 mpOStm->ReadBytes(sFirstBytes, 2);
321 if( sFirstBytes[0] == 0x1f && sFirstBytes[1] == 0x8b )
324 ZCodec aZCodec( 0x8000, 0x8000 );
331 sal_uInt64 nStreamLen_ = aDest.
TellEnd();
343 if (aGraphic.
GetType() != GraphicType::NONE)
351const GraphicObject& SvXMLGraphicOutputStream::GetGraphicObject()
353 Graphic aGraphic(GetGraphic());
354 if (aGraphic.
GetType() != GraphicType::NONE)
356 moGrfObj.emplace(std::move(aGraphic));
365 Init(
nullptr, eCreateMode );
378 OUString& rPictureStorageName,
379 OUString& rPictureStreamName )
381 if (rURLStr.isEmpty())
384 const OUString aURLStr {rURLStr.copy(rURLStr.lastIndexOf(
':')+1)};
386 if( !aURLStr.isEmpty() && aURLStr.indexOf(
'/')<0 )
388 rPictureStorageName = OUString();
389 rPictureStreamName = aURLStr;
394 SAL_WARN_IF(rPictureStreamName.isEmpty(),
"svx",
"SvXMLGraphicHelper::ImplInsertGraphicURL: invalid scheme: " << rURLStr);
396 return !rPictureStreamName.isEmpty();
401 uno::Reference < embed::XStorage > xRetStorage;
410 ? embed::ElementModes::READWRITE
411 : embed::ElementModes::READ );
413 catch ( uno::Exception& )
417 if(!xRetStorage.is())
424 catch ( uno::Exception& )
434 const OUString& rPictureStreamName )
437 if (!rPictureStorageName.isEmpty())
442 sal_Int32 nMode = embed::ElementModes::READ;
445 nMode = embed::ElementModes::READWRITE;
450 aRet.
xStream = aRet.
xStorage->openStreamElement( rPictureStreamName, nMode );
452 else if (rPictureStorageName.indexOf(
'/') != -1)
454 uno::Reference<embed::XHierarchicalStorageAccess> xHierRootStorage(
mxRootStorage,
456 if (xHierRootStorage.is())
460 aRet.
xStream = xHierRootStorage->openStreamElementByHierarchicalName(
461 rPictureStorageName +
"/" + rPictureStreamName, nMode);
464 catch (
const uno::Exception&)
467 "SvXMLGraphicHelper::ImplGetGraphicStream: failed to open "
468 << rPictureStreamName);
475 uno::Reference<beans::XPropertySet> xProps(aRet.
xStream, uno::UNO_QUERY);
476 xProps->setPropertyValue(
"UseCommonStoragePasswordEncryption",
uno::Any(
true));
484 if( ( rFileName.size() >= 4 ) && ( rFileName[ rFileName.size() - 4 ] ==
'.' ) )
487 RTL_TEXTENCODING_ASCII_US));
495 const OUString& rPictureStreamName )
505 aReturnGraphic = aGraphic;
510 return aReturnGraphic;
515 const OUString& rGraphicMimeType )
526 pThis->Init( rXMLStorage, eCreateMode, OUString() );
532 const OUString& rGraphicMimeType )
536 pThis->Init(
nullptr, eCreateMode, rGraphicMimeType );
544void splitUserDataFromURL(OUString
const & rWholeURL, OUString & rJustURL, OUString & rUserData)
546 sal_Int32 nUser = rWholeURL.indexOf(
'?');
549 rJustURL = rWholeURL.copy(0, nUser);
551 rUserData = rWholeURL.copy(nUser);
555 rJustURL = rWholeURL;
564 throw uno::RuntimeException(
"XGraphicObjectResolver has been removed in LibreOffice 6.1");
572 uno::Reference<graphic::XGraphic> xGraphic;
576 splitUserDataFromURL(rURL, aURLOnly, aUserData);
581 return aIterator->second;
584 OUString aPictureStorageName, aPictureStreamName;
590 if (aGraphicObject.
GetType() != GraphicType::NONE)
604 uno::Reference<graphic::XGraphic> xGraphic;
609 SvXMLGraphicOutputStream* pGraphicOutputStream =
static_cast<SvXMLGraphicOutputStream*
>(rxOutputStream.get());
610 if (pGraphicOutputStream)
612 xGraphic = pGraphicOutputStream->GetGraphic().GetXGraphic();
619 OUString & rOutSavedMimeType, OUString
const & rRequestName)
626 OUString aOutMimeType;
627 return implSaveGraphic(rxGraphic, aOutMimeType, std::u16string_view());
631 OUString & rOutSavedMimeType, std::u16string_view rRequestName)
638 auto const & aURLAndMimePair = aIterator->second;
639 rOutSavedMimeType = aURLAndMimePair.second;
640 return aURLAndMimePair.first;
645 if (aGraphicObject.
GetType() != GraphicType::NONE)
649 bool bUseGfxLink =
true;
655 case GfxLinkType::EpsBuffer: aExtension =
".eps";
break;
656 case GfxLinkType::NativeGif: aExtension =
".gif";
break;
658 case GfxLinkType::NativeBmp: aExtension =
".bmp";
break;
659 case GfxLinkType::NativeJpg: aExtension =
".jpg";
break;
660 case GfxLinkType::NativePng: aExtension =
".png";
break;
661 case GfxLinkType::NativeTif: aExtension =
".tif";
break;
662 case GfxLinkType::NativeWmf:
663 if (aGfxLink.
IsEMF())
668 case GfxLinkType::NativeMet: aExtension =
".met";
break;
669 case GfxLinkType::NativePct: aExtension =
".pct";
break;
670 case GfxLinkType::NativeSvg:
690 case GfxLinkType::NativePdf: aExtension =
".pdf";
break;
691 case GfxLinkType::NativeWebp: aExtension =
".webp";
break;
700 if (aGraphicObject.
GetType() == GraphicType::Bitmap)
707 else if (aGraphicObject.
GetType() == GraphicType::GdiMetafile)
712 if (ImplCheckForEPS(rMetafile))
719 OUString rPictureStreamName;
720 if (!rRequestName.empty())
722 rPictureStreamName = rRequestName + aExtension;
726 OUString
sId = OStringToOUString(aGraphicObject.
GetUniqueID(), RTL_TEXTENCODING_ASCII_US);
727 rPictureStreamName =
sId + aExtension;
735 uno::Reference<beans::XPropertySet> xProps(aStream.
xStream, uno::UNO_QUERY);
747 static const char* aCompressiblePics[] =
758 bool bSuccess =
false;
763 for(
const char*
p : aCompressiblePics)
773 xProps->setPropertyValue(
"Compressed",
Any(bCompressed));
784 if (aGraphic.
GetType() == GraphicType::Bitmap)
801 else if (aGraphic.
GetType() == GraphicType::GdiMetafile)
804 pStream->SetCompressMode(SvStreamCompressFlags::ZBITMAP);
815 pStream->WriteBytes(
pData, nSize);
835 uno::Reference<embed::XTransactedObject> xStorage(aStream.
xStorage, uno::UNO_QUERY);
837 aStream.
xStream->getOutputStream()->closeOutput();
841 OUString aStoragePath =
"Pictures/" + rPictureStreamName;
844 maExportGraphics[aGraphic] = std::make_pair(aStoragePath, rOutSavedMimeType);
866 if (pInputStream->exists())
867 xInputStream = pInputStream.get();
888 if( pOutputStream->Exists() )
890 xRet = pOutputStream.get();
906 SvXMLGraphicOutputStream* pOStm =
static_cast< SvXMLGraphicOutputStream*
>( rxBinaryStream.get() );
911 const OUString aId(OStringToOUString(
912 rGrfObj.
GetUniqueID(), RTL_TEXTENCODING_ASCII_US));
931 document::XGraphicObjectResolver,
932 document::XGraphicStorageHandler,
933 document::XBinaryStreamResolver,
935 SvXMLGraphicImportExportHelper_Base;
939class SvXMLGraphicImportExportHelper :
940 public impl::SvXMLGraphicImportExportHelper_Base
948 virtual void disposing(std::unique_lock<std::mutex>&)
override;
952 virtual void SAL_CALL initialize(
const Sequence< Any >& aArguments )
override;
955 virtual OUString SAL_CALL resolveGraphicObjectURL(
const OUString& aURL )
override;
958 virtual css::uno::Reference<css::graphic::XGraphic> SAL_CALL
959 loadGraphic(
const OUString& aURL)
override;
961 virtual css::uno::Reference<css::graphic::XGraphic> SAL_CALL
962 loadGraphicFromOutputStream(css::uno::Reference<css::io::XOutputStream>
const & rxOutputStream)
override;
964 virtual OUString SAL_CALL
965 saveGraphic(css::uno::Reference<css::graphic::XGraphic>
const & rxGraphic)
override;
967 virtual OUString SAL_CALL
968 saveGraphicByName(css::uno::Reference<css::graphic::XGraphic>
const & rxGraphic, OUString & rOutSavedMimeType, OUString
const & rRequestName)
override;
970 virtual css::uno::Reference<css::io::XInputStream> SAL_CALL
971 createInputStream(css::uno::Reference<css::graphic::XGraphic>
const & rxGraphic)
override;
989 m_eGraphicHelperMode(
eMode )
992void SvXMLGraphicImportExportHelper::disposing(std::unique_lock<std::mutex>&)
994 if (m_xXMLGraphicHelper)
996 m_xXMLGraphicHelper->dispose();
997 m_xXMLGraphicHelper.clear();
1002void SAL_CALL SvXMLGraphicImportExportHelper::initialize(
1013OUString SAL_CALL SvXMLGraphicImportExportHelper::resolveGraphicObjectURL(
const OUString& aURL )
1015 return m_xXMLGraphicHelper->resolveGraphicObjectURL( aURL );
1019uno::Reference<graphic::XGraphic> SAL_CALL SvXMLGraphicImportExportHelper::loadGraphic(OUString
const & rURL)
1021 return m_xXMLGraphicHelper->loadGraphic(rURL);
1024uno::Reference<graphic::XGraphic> SAL_CALL SvXMLGraphicImportExportHelper::loadGraphicFromOutputStream(uno::Reference<io::XOutputStream>
const & rxOutputStream)
1026 return m_xXMLGraphicHelper->loadGraphicFromOutputStream(rxOutputStream);
1029OUString SAL_CALL SvXMLGraphicImportExportHelper::saveGraphic(css::uno::Reference<css::graphic::XGraphic>
const & rxGraphic)
1031 return m_xXMLGraphicHelper->saveGraphic(rxGraphic);
1034OUString SAL_CALL SvXMLGraphicImportExportHelper::saveGraphicByName(css::uno::Reference<css::graphic::XGraphic>
const & rxGraphic,
1035 OUString & rOutSavedMimeType, OUString
const & rRequestName)
1037 return m_xXMLGraphicHelper->saveGraphicByName(rxGraphic, rOutSavedMimeType, rRequestName);
1040uno::Reference<io::XInputStream> SAL_CALL SvXMLGraphicImportExportHelper::createInputStream(uno::Reference<graphic::XGraphic>
const & rxGraphic)
1042 return m_xXMLGraphicHelper->createInputStream(rxGraphic);
1048 return m_xXMLGraphicHelper->getInputStream( aURL );
1052 return m_xXMLGraphicHelper->createOutputStream();
1056 return m_xXMLGraphicHelper->resolveOutputStream( aBinaryStream );
1060OUString SAL_CALL SvXMLGraphicImportExportHelper::getImplementationName()
1063 return "com.sun.star.comp.Svx.GraphicImportHelper";
1064 return "com.sun.star.comp.Svx.GraphicExportHelper";
1067sal_Bool SAL_CALL SvXMLGraphicImportExportHelper::supportsService(
const OUString& ServiceName )
1074 return {
"com.sun.star.document.GraphicObjectResolver",
1075 "com.sun.star.document.GraphicStorageHandler",
1076 "com.sun.star.document.BinaryStreamResolver" };
1092extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
1094 css::uno::XComponentContext *,
1095 css::uno::Sequence<css::uno::Any>
const &)
1112extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
1114 css::uno::XComponentContext *,
1115 css::uno::Sequence<css::uno::Any>
const &)
1124 uno::Reference<lang::XMultiServiceFactory>
const xModelFactory(
xModel, uno::UNO_QUERY);
1125 assert(xModelFactory.is());
1128 uno::Reference<util::XCancellable>
const xGradient(
1129 xModelFactory->createInstance(
"com.sun.star.drawing.GradientTable"),
1133 xGradient->cancel();
1136 uno::Reference<util::XCancellable>
const xHatch(
1137 xModelFactory->createInstance(
"com.sun.star.drawing.HatchTable"),
1144 uno::Reference<util::XCancellable>
const xBitmap(
1145 xModelFactory->createInstance(
"com.sun.star.drawing.BitmapTable"),
1152 uno::Reference<util::XCancellable>
const xTransGradient(
1153 xModelFactory->createInstance(
"com.sun.star.drawing.TransparencyGradientTable"),
1155 if (xTransGradient.is())
1157 xTransGradient->cancel();
1160 uno::Reference<util::XCancellable>
const xMarker(
1161 xModelFactory->createInstance(
"com.sun.star.drawing.MarkerTable"),
1168 uno::Reference<util::XCancellable>
const xDashes(
1169 xModelFactory->createInstance(
"com.sun.star.drawing.DashTable"),
1178 TOOLS_WARN_EXCEPTION(
"svx",
"dropUnusedNamedItems(): exception during clearing of unused named items");
const sal_uInt8 * GetData() const
sal_uInt32 GetDataSize() const
GfxLinkType GetType() const
sal_uInt16 GetExportFormatNumberForShortName(std::u16string_view rShortName)
Graphic ImportUnloadedGraphic(SvStream &rIStream, sal_uInt64 sizeLimit=0, const Size *pSizeHint=nullptr)
static GraphicFilter & GetGraphicFilter()
sal_uInt16 GetExportFormatNumberForMediaType(std::u16string_view rShortName)
ErrCode ExportGraphic(const Graphic &rGraphic, const INetURLObject &rPath, sal_uInt16 nFormat, const css::uno::Sequence< css::beans::PropertyValue > *pFilterData=nullptr)
ErrCode ImportGraphic(Graphic &rGraphic, const INetURLObject &rPath, sal_uInt16 nFormat=GRFILTER_FORMAT_DONTKNOW, sal_uInt16 *pDeterminedFormat=nullptr, GraphicFilterImportFlags nImportFlags=GraphicFilterImportFlags::NONE)
const Graphic & GetGraphic() const
GraphicType GetType() const
OString GetUniqueID() const
css::uno::Reference< css::graphic::XGraphic > GetXGraphic() const
const GDIMetaFile & GetGDIMetaFile() const
GraphicType GetType() const
GfxLink GetGfxLink() const
void SetSynchronMode(bool bTheSync=true)
virtual sal_uInt64 TellEnd() override
void SetCompressMode(SvStreamCompressFlags nNewMode)
std::size_t WriteBytes(const void *pData, std::size_t nSize)
void SetVersion(sal_Int32 n)
sal_uInt64 Seek(sal_uInt64 nPos)
static void splitObjectURL(const OUString &aURLNoPar, OUString &rContainerStorageName, OUString &rObjectStorageName)
virtual css::uno::Reference< css::graphic::XGraphic > SAL_CALL loadGraphicFromOutputStream(css::uno::Reference< css::io::XOutputStream > const &rxOutputStream) override
static SVX_DLLPRIVATE OUString ImplGetGraphicMimeType(std::u16string_view rFileName)
virtual OUString SAL_CALL saveGraphicByName(css::uno::Reference< css::graphic::XGraphic > const &rxGraphic, OUString &rOutSavedMimeType, OUString const &rRequestName) override
std::unordered_map< OUString, css::uno::Reference< css::graphic::XGraphic > > maGraphicObjects
virtual css::uno::Reference< css::io::XInputStream > SAL_CALL createInputStream(css::uno::Reference< css::graphic::XGraphic > const &rxGraphic) override
SvXMLGraphicHelperMode meCreateMode
static SVX_DLLPRIVATE bool ImplGetStreamNames(const OUString &rURLStr, OUString &rPictureStorageName, OUString &rPictureStreamName)
virtual OUString SAL_CALL resolveOutputStream(const css::uno::Reference< css::io::XOutputStream > &rxBinaryStream) override
SVX_DLLPRIVATE OUString implSaveGraphic(css::uno::Reference< css::graphic::XGraphic > const &rxGraphic, OUString &rOutMimeType, std::u16string_view rRequestName)
OUString maCurStorageName
OUString maOutputMimeType
void Init(const css::uno::Reference< css::embed::XStorage > &xXMLStorage, SvXMLGraphicHelperMode eCreateMode, const OUString &rGraphicMimeType=OUString())
std::vector< css::uno::Reference< css::io::XOutputStream > > maGrfStms
virtual css::uno::Reference< css::io::XOutputStream > SAL_CALL createOutputStream() override
SVX_DLLPRIVATE Graphic ImplReadGraphic(const OUString &rPictureStorageName, const OUString &rPictureStreamName)
virtual css::uno::Reference< css::io::XInputStream > SAL_CALL getInputStream(const OUString &rURL) override
SVX_DLLPRIVATE SvxGraphicHelperStream_Impl ImplGetGraphicStream(const OUString &rPictureStorageName, const OUString &rPictureStreamName)
SVX_DLLPRIVATE css::uno::Reference< css::embed::XStorage > ImplGetGraphicStorage(const OUString &rPictureStorageName)
static rtl::Reference< SvXMLGraphicHelper > Create(const css::uno::Reference< css::embed::XStorage > &rXMLStorage, SvXMLGraphicHelperMode eCreateMode)
std::unordered_map< Graphic, std::pair< OUString, OUString > > maExportGraphics
virtual OUString SAL_CALL resolveGraphicObjectURL(const OUString &aURL) override
css::uno::Reference< css::embed::XStorage > mxRootStorage
virtual css::uno::Reference< css::graphic::XGraphic > SAL_CALL loadGraphic(OUString const &aURL) override
virtual OUString SAL_CALL saveGraphic(css::uno::Reference< css::graphic::XGraphic > const &rxGraphic) override
virtual ~SvXMLGraphicHelper() override
SvStream & Write(const GDIMetaFile &rMetaFile)
tools::Long Decompress(SvStream &rIStm, SvStream &rOStm)
tools::Long EndCompression()
void BeginCompression(int nCompressLevel=ZCODEC_DEFAULT_COMPRESSION, bool gzLib=false)
static OUString GetMimeTypeForExtension(std::string_view rExt)
static std::unique_ptr< SvStream > CreateStream(const OUString &rFileName, StreamMode eOpenMode, css::uno::Reference< css::awt::XWindow > xParentWin=nullptr)
#define TOOLS_WARN_EXCEPTION(area, stream)
#define GRFILTER_FORMAT_DONTKNOW
Sequence< PropertyValue > aArguments
#define SAL_WARN_IF(condition, area, stream)
std::unique_ptr< sal_Int32[]> pData
constexpr OUStringLiteral aData
css::uno::Sequence< OUString > getSupportedServiceNames()
OUString getImplementationName()
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
void DropUnusedNamedItems(css::uno::Reference< css::uno::XInterface > const &xModel)
UNOTOOLS_DLLPUBLIC bool Exists(OUString const &url)
Reference< io::XInputStream > createInputStream(std::vector< sal_Int8 > &&rInData)
Reference< io::XOutputStream > createOutputStream(std::vector< sal_Int8 > *pOutData)
UNOTOOLS_DLLPUBLIC SvtSaveOptions::ODFSaneDefaultVersion GetODFSaneDefaultVersion()
const sal_Unicode *const aMimeType[]
css::uno::Reference< css::embed::XStorage > xStorage
css::uno::Reference< css::io::XStream > xStream
Reference< XModel > xModel
constexpr OUStringLiteral XML_GRAPHICSTORAGE_NAME
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_comp_Svx_GraphicImportHelper_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
Create this with createInstanceWithArguments.
constexpr OUStringLiteral XML_GRAPHICOBJECT_URL_BASE
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_comp_Svx_GraphicExportHelper_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
Create this with createInstanceWithArguments.
#define ZCODEC_DEFAULT_COMPRESSION