10#include <com/sun/star/document/XExtendedFilterDetection.hpp>
11#include <com/sun/star/lang/XServiceInfo.hpp>
12#include <com/sun/star/io/XInputStream.hpp>
19#include <orcus/format_detection.hpp>
25class OrcusFormatDetect :
public ::cppu::WeakImplHelper<
26 css::document::XExtendedFilterDetection,
27 css::lang::XServiceInfo >
30 explicit OrcusFormatDetect();
38 virtual OUString SAL_CALL
39 detect( css::uno::Sequence< css::beans::PropertyValue >& rMediaDescSeq )
override;
44OrcusFormatDetect::OrcusFormatDetect()
48OUString OrcusFormatDetect::getImplementationName()
53sal_Bool OrcusFormatDetect::supportsService(
const OUString& )
58css::uno::Sequence<OUString> OrcusFormatDetect::getSupportedServiceNames()
60 return css::uno::Sequence<OUString>();
63OUString OrcusFormatDetect::detect(css::uno::Sequence<css::beans::PropertyValue>& rMediaDescSeq)
73 static const sal_Int32 nBytes = 4096;
74 css::uno::Sequence<sal_Int8>
aSeq(nBytes);
78 sal_Int32 nReadBytes = xInputStream->readBytes(aSeq, nBytes);
79 bEnd = (nReadBytes != nBytes);
80 aContent.WriteBytes(
aSeq.getConstArray(), nReadBytes);
83 std::string_view aStream(
static_cast<const char*
>(aContent.GetData()), aContent.GetSize());
84 orcus::format_t eFormat = orcus::detect(aStream);
88 case orcus::format_t::gnumeric:
89 return "Gnumeric XML";
90 case orcus::format_t::xls_xml:
91 return "calc_MS_Excel_2003_XML";
101extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
103 css::uno::Sequence<css::uno::Any>
const &)
105 return cppu::acquire(
new OrcusFormatDetect());
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_comp_sc_OrcusFormatDetect_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
Sequence< sal_Int8 > aSeq
css::uno::Sequence< OUString > getSupportedServiceNames()
OUString getImplementationName()
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)