48 if (rArguments.hasElements())
51 static_cast<XWeak*
>(
this));
57 return "com.sun.star.comp.Draw.SlideRenderer";
67 return {
"com.sun.star.drawing.SlideRenderer"};
73 const Reference<drawing::XDrawPage>& rxSlide,
74 const awt::Size& rMaximalSize,
75 sal_Int16 nSuperSampleFactor)
85 const Reference<drawing::XDrawPage>& rxSlide,
86 const awt::Size& rMaximalSize,
87 sal_Int16 nSuperSampleFactor,
88 const Reference<rendering::XCanvas>& rxCanvas)
98 CreatePreview(rxSlide, rMaximalSize, nSuperSampleFactor))->getUNOBitmap();
104 double nSlideAspectRatio,
105 const awt::Size& rMaximalSize)
107 if (rMaximalSize.Width <= 0
108 || rMaximalSize.Height <= 0
109 || nSlideAspectRatio <= 0)
111 return awt::Size(0,0);
114 const double nWindowAspectRatio (
double(rMaximalSize.Width) /
double(rMaximalSize.Height));
115 if (nSlideAspectRatio < nWindowAspectRatio)
117 sal::static_int_cast<sal_Int32>(rMaximalSize.Height * nSlideAspectRatio),
118 rMaximalSize.Height);
122 sal::static_int_cast<sal_Int32>(rMaximalSize.Width / nSlideAspectRatio));
126 const Reference<drawing::XDrawPage>& rxSlide,
127 const awt::Size& rMaximalSize,
128 sal_Int16 nSuperSampleFactor)
131 if (pPage ==
nullptr)
132 throw lang::IllegalArgumentException(
"SlideRenderer::createPreview() called with invalid slide",
133 static_cast<XWeak*
>(
this),
138 if (aPageSize.
Height() <= 0)
139 throw lang::IllegalArgumentException(
"SlideRenderer::createPreview() called with invalid size",
140 static_cast<XWeak*
>(
this),
148 double(aPageSize.
Width()) /
double(aPageSize.
Height()),
150 if (aPreviewSize.Width <= 0 || aPreviewSize.Height <= 0)
154 sal_Int16 nFactor (nSuperSampleFactor);
157 else if (nFactor > 10)
167 Size(aPreviewSize.Width*nFactor, aPreviewSize.Height*nFactor),
174 aScaledPreview.
Scale(
175 Size(aPreviewSize.Width,aPreviewSize.Height),
176 BmpScaleFlag::BestQuality);
177 return aScaledPreview;
185 throw lang::DisposedException (
"SlideRenderer object has already been disposed",
186 static_cast<uno::XWeak*
>(
this));
193extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
195 css::uno::Sequence<css::uno::Any>
const &)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_comp_Draw_SlideRenderer_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
bool Scale(const Size &rNewSize, BmpScaleFlag nScaleFlag=BmpScaleFlag::Default)
BitmapEx GetBitmapEx() const
static SdPage * getImplementation(const css::uno::Reference< css::drawing::XDrawPage > &xPage)
returns the SdPage implementation for the given XDrawPage or 0 if not available
constexpr tools::Long Height() const
constexpr tools::Long Width() const
static css::uno::Reference< css::awt::XBitmap > CreateBitmap(const BitmapEx &rBitmap)
static BitmapSharedPtr createBitmap(const CanvasSharedPtr &, const ::BitmapEx &rBmpEx)
static CanvasSharedPtr createCanvas(const css::uno::Reference< css::rendering::XCanvas > &xCanvas)
Image RenderPage(const SdPage *pPage, const sal_Int32 nWidth)
Render a page with the given pixel size.
Render single slides into bitmaps.
virtual css::uno::Reference< css::rendering::XBitmap > SAL_CALL createPreviewForCanvas(const css::uno::Reference< css::drawing::XDrawPage > &rxSlide, const css::awt::Size &rMaximumPreviewPixelSize, sal_Int16 nSuperSampleFactor, const css::uno::Reference< css::rendering::XCanvas > &rxCanvas) override
BitmapEx CreatePreview(const css::uno::Reference< css::drawing::XDrawPage > &rxSlide, const css::awt::Size &rMaximumPreviewPixelSize, sal_Int16 nSuperSampleFactor)
sal_Bool SAL_CALL supportsService(OUString const &ServiceName) override
OUString SAL_CALL getImplementationName() override
PreviewRenderer maPreviewRenderer
virtual css::awt::Size SAL_CALL calculatePreviewSize(double nSlideAspectRatio, const css::awt::Size &rMaximumPreviewPixelSize) override
virtual void SAL_CALL initialize(const css::uno::Sequence< css::uno::Any > &rArguments) override
virtual ~SlideRenderer() override
virtual css::uno::Reference< css::awt::XBitmap > SAL_CALL createPreview(const css::uno::Reference< css::drawing::XDrawPage > &rxSlide, const css::awt::Size &rMaximumPreviewPixelSize, sal_Int16 nSuperSampleFactor) override
css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
std::shared_ptr< Canvas > CanvasSharedPtr
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)