27#include <com/sun/star/datatransfer/DataFlavor.hpp>
33using namespace::com::sun::star::uno;
34using namespace::com::sun::star::datatransfer;
44struct DataFlavorRepresentation
48 const css::uno::Type* pType;
51const DataFlavorRepresentation* FormatArray_Impl()
53 static const DataFlavorRepresentation aInstance[] =
67 {
"application/x-openoffice-svxb;windows_formatname=\"SVXB (StarView Bitmap/Animation)\"",
"SVXB (StarView Bitmap/Animation)", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
69 {
"application/x-libreoffice-xfa;windows_formatname=\"XFA (XOutDev FillAttr Any)\"",
"XFA (XOutDev FillAttr Any)", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
71 {
"application/x-openoffice-internallink-state;windows_formatname=\"StatusInfo vom SvxInternalLink\"",
"StatusInfo vom SvxInternalLink", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
86 {
"application/x-openoffice-starwriterglob-40;windows_formatname=\"StarWriter/Global 4.0\"",
"StarWriter/Global 4.0", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
87 {
"application/x-openoffice-starwriterglob-50;windows_formatname=\"StarWriter/Global 5.0\"",
"StarWriter/Global 5.0", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
96 {
"application/x-openoffice-starchart-40;windows_formatname=\"StarChartDocument 4.0\"",
"StarChartDocument 4.0", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
99 {
"application/x-openoffice-starimage-40;windows_formatname=\"StarImageDocument 4.0\"",
"StarImageDocument 4.0", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
104 {
"application/x-openoffice-starobject-paintdoc;windows_formatname=\"StarObjectPaintDocument\"",
"StarObjectPaintDocument", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
109 {
"application/x-openoffice-cnt-msgattachfile;windows_formatname=\"CNT_MSGATTACHFILE_FORMAT\"",
"CNT_MSGATTACHFILE_FORMAT", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
117 {
"application/x-openoffice-sonlk;windows_formatname=\"SONLK (StarOffice Navi Link)\"",
"SONLK (StarOffice Navi Link)", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
119 {
"application/x-openoffice-star-frameset-doc;windows_formatname=\"StarFrameSetDocument\"",
"StarFrameSetDocument", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
125 {
"application/x-openoffice-evdf;windows_formatname=\"EVDF (Explorer View Dummy Format)\"",
"EVDF (Explorer View Dummy Format)", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
126 {
"application/x-openoffice-esdf;windows_formatname=\"ESDF (Explorer Search Dummy Format)\"",
"ESDF (Explorer Search Dummy Format)", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
127 {
"application/x-openoffice-idf;windows_formatname=\"IDF (Iconview Dummy Format)\"",
"IDF (Iconview Dummy Format)", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
134 {
"application/x-openoffice-sba-private-url;windows_formatname=\"SBA-PRIVATEURLFORMAT\"",
"SBA-PRIVATEURLFORMAT", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
138 {
"application/x-openoffice-objectdescriptor-xml;windows_formatname=\"Star Object Descriptor (XML)\"",
"Star Object Descriptor (XML)", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
139 {
"application/x-openoffice-linksrcdescriptor-xml;windows_formatname=\"Star Link Source Descriptor (XML)\"",
"Star Link Source Descriptor (XML)", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
140 {
"application/x-openoffice-embed-source-xml;windows_formatname=\"Star Embed Source (XML)\"",
"Star Embed Source (XML)", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
141 {
"application/x-openoffice-link-source-xml;windows_formatname=\"Star Link Source (XML)\"",
"Star Link Source (XML)", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
142 {
"application/x-openoffice-embedded-obj-xml;windows_formatname=\"Star Embedded Object (XML)\"",
"Star Embedded Object (XML)", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
144 {
"application/x-openoffice-filegrpdescriptor;windows_formatname=\"FileGroupDescriptorW\"",
"FileGroupDescriptor", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
149 {
"application/x-openoffice-objectdescriptor-ole;windows_formatname=\"Object Descriptor\"",
"Object Descriptor", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
150 {
"application/x-openoffice-linkdescriptor-ole;windows_formatname=\"Link Source Descriptor\"",
"Link Source Descriptor", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
156 {
"application/x-openoffice-netscape-image;windows_formatname=\"Netscape Image Format\"",
"Netscape Image Format", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
158 {
"application/x-openoffice-sba-reportexchange;windows_formatname=\"SBA_REPORTEXCHANGE\"",
"SBA_REPORTEXCHANGE", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
159 {
"application/x-openoffice-uniformresourcelocator;windows_formatname=\"UniformResourceLocatorW\"",
"UniformResourceLocator", &
cppu::UnoType<OUString>::get() },
160 {
"application/x-openoffice-starchartdocument-50;windows_formatname=\"StarChartDocument 5.0\"",
"StarChartDocument 5.0", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
171 {
"application/x-openoffice-dbaccess-query;windows_formatname=\"Data source Query Object\"",
"Data source Query Object", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
195 {
"application/x-openoffice-highcontrast-gdimetafile;windows_formatname=\"GDIMetaFile\"",
"High Contrast GDIMetaFile", &
cppu::UnoType<Sequence<sal_Int8>>::get() },
204 return &aInstance[0];
207 typedef std::vector<css::datatransfer::DataFlavor> tDataFlavorList;
212 static tDataFlavorList gImplData;
225 const DataFlavorRepresentation *pFormatArray_Impl = FormatArray_Impl();
228 if( rName.equalsAscii( pFormatArray_Impl[
static_cast<int>(
i) ].pName ) )
235 if( rName.equalsAscii( pFormatArray_Impl[
static_cast<int>(
i) ].pName ) )
242 for( tDataFlavorList::size_type
i = 0;
i < rL.size();
i++ )
244 auto const& rFlavor = rL[
i ];
245 if( rName == rFlavor.HumanPresentableName )
249 DataFlavor aNewFlavor;
250 aNewFlavor.MimeType = rName;
251 aNewFlavor.HumanPresentableName = rName;
254 rL.push_back( std::move(aNewFlavor) );
261 const DataFlavorRepresentation *pFormatArray_Impl = FormatArray_Impl();
264 if( rMimeType.equals( pFormatArray_Impl[
static_cast<int>(
i) ].pMimeType ) )
268 if( rMimeType.equals( pFormatArray_Impl[
static_cast<int>(
i) ].pMimeType ) )
273 for( tDataFlavorList::size_type
i = 0;
i < rL.size();
i++ )
275 auto const& rFlavor = rL[
i ];
276 if( rMimeType == rFlavor.MimeType )
280 DataFlavor aNewFlavor;
281 aNewFlavor.MimeType = rMimeType;
282 aNewFlavor.HumanPresentableName = rMimeType;
285 rL.push_back( std::move(aNewFlavor) );
304 rL.emplace_back( rFlavor );
322 const DataFlavorRepresentation& rData = FormatArray_Impl()[
static_cast<int>(nFormat)];
323 rFlavor.MimeType = rData.pMimeType;
324 rFlavor.HumanPresentableName = OUString::createFromAscii( rData.pName );
325 rFlavor.DataType = *rData.pType;
342 rFlavor = DataFlavor();
347 DBG_ASSERT( bRet,
"SotExchange::GetFormatDataFlavor(): DataFlavor not initialized" );
362 sMimeType = FormatArray_Impl()[
static_cast<int>(nFormat)].pMimeType;
370 sMimeType = rL[
i ].MimeType;
373 DBG_ASSERT( !sMimeType.isEmpty(),
"SotExchange::GetFormatMimeType(): DataFlavor not initialized" );
386 const DataFlavorRepresentation *pFormatArray_Impl = FormatArray_Impl();
388 if( rMimeType == pFormatArray_Impl[
static_cast<int>(
i) ].pMimeType )
395 if( rMimeType == pFormatArray_Impl[
static_cast<int>(
i) ].pMimeType )
403 for( tDataFlavorList::size_type
i = 0;
i < rL.size();
i++ )
405 auto const& rFlavor = rL[
i ];
406 if( rMimeType == rFlavor.MimeType )
422 const OUString& rMimeType = rFlavor.MimeType;
424 const DataFlavorRepresentation *pFormatArray_Impl = FormatArray_Impl();
426 if( rMimeType.equals( pFormatArray_Impl[
static_cast<int>(
i) ].pMimeType ) )
434 const OUString& pFormatMimeType = pFormatArray_Impl[
static_cast<int>(
i) ].pMimeType;
435 const sal_Int32 nFormatMimeTypeLen = pFormatMimeType.getLength();
436 if( rMimeType.match( pFormatMimeType ) &&
437 ( rMimeType.getLength() == nFormatMimeTypeLen ||
438 rMimeType[ nFormatMimeTypeLen ] ==
';' ) )
446 for( tDataFlavorList::size_type
i = 0;
i < rL.size();
i++ )
448 if( rMimeType == rL[
i ].MimeType )
467 aRet = aFlavor.HumanPresentableName;
static bool IsInternal(const SvGlobalName &)
static bool GetFormatDataFlavor(SotClipboardFormatId nFormat, css::datatransfer::DataFlavor &rFlavor)
static SotClipboardFormatId GetFormat(const css::datatransfer::DataFlavor &rFlavor)
static OUString GetFormatMimeType(SotClipboardFormatId nFormat)
static OUString GetFormatName(SotClipboardFormatId nFormat)
static SotClipboardFormatId GetFormatIdFromMimeType(std::u16string_view rMimeType)
static SotClipboardFormatId RegisterFormat(const css::datatransfer::DataFlavor &rFlavor)
static SotClipboardFormatId RegisterFormatMimeType(const OUString &rMimeType)
static SotClipboardFormatId RegisterFormatName(const OUString &rName)
css::uno::Type const & get()
#define SO3_SDRAW_CLASSID_60
#define SO3_SC_CLASSID_60
#define SO3_SM_CLASSID_60
#define SO3_SW_CLASSID_60
#define SO3_SWGLOB_CLASSID_60
#define SO3_SCH_CLASSID_60
#define SO3_SIMPRESS_CLASSID_60
#define SO3_SWWEB_CLASSID_60
#define DBG_ASSERT(sCon, aError)
constexpr OUStringLiteral MIMETYPE_VND_SUN_XML_CHART_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_DATABASE_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_TEXT_GLOBAL_TEMPLATE_ASCII
constexpr OUStringLiteral MIMETYPE_VND_SUN_XML_IMPRESS_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_DRAWING_TEMPLATE_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_PRESENTATION_ASCII
constexpr OUStringLiteral MIMETYPE_VND_SUN_XML_CALC_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_TEXT_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_TEXT_TEMPLATE_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_SPREADSHEET_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_TEXT_GLOBAL_ASCII
constexpr OUStringLiteral MIMETYPE_VND_SUN_XML_WRITER_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_CHART_ASCII
constexpr OUStringLiteral MIMETYPE_VND_SUN_XML_WRITER_GLOBAL_ASCII
constexpr OUStringLiteral MIMETYPE_VND_SUN_XML_DRAW_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_FORMULA_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_TEXT_WEB_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_CHART_TEMPLATE_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_DRAWING_ASCII
constexpr OUStringLiteral MIMETYPE_VND_SUN_XML_WRITER_WEB_ASCII
constexpr OUStringLiteral MIMETYPE_VND_SUN_XML_MATH_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_FORMULA_TEMPLATE_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_PRESENTATION_TEMPLATE_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_SPREADSHEET_TEMPLATE_ASCII
static tDataFlavorList & InitFormats_Impl()