BitmapEx SlideRenderer::CreatePreview ( const Reference<drawing::XDrawPage>& rxSlide, const awt::Size& rMaximalSize,
sal_Int16 nSuperSampleFactor)
{ const SdPage* pPage = SdPage::getImplementation(rxSlide); if (pPage == nullptr) throw lang::IllegalArgumentException(u"SlideRenderer::createPreview() called with invalid slide"_ustr, static_cast<XWeak*>(this), 0);
// Determine the size of the current slide and its aspect ratio.
Size aPageSize = pPage->GetSize(); if (aPageSize.Height() <= 0) throw lang::IllegalArgumentException(u"SlideRenderer::createPreview() called with invalid size"_ustr, static_cast<XWeak*>(this), 1);
// Compare with the aspect ratio of the window (which rMaximalSize // assumed to be) and calculate the size of the preview so that it // a) will have the aspect ratio of the page and // b) will be as large as possible.
awt::Size aPreviewSize (calculatePreviewSize( double(aPageSize.Width()) / double(aPageSize.Height()),
rMaximalSize)); if (aPreviewSize.Width <= 0 || aPreviewSize.Height <= 0) return BitmapEx();
// Make sure that the super sample factor has a sane value.
sal_Int16 nFactor (nSuperSampleFactor); if (nFactor < 1)
nFactor = 1; elseif (nFactor > 10)
nFactor = 10;
// Create the preview. When the super sample factor n is greater than 1 // then a preview is created in size (n*width, n*height) and then scaled // down to (width, height). This is a poor mans antialiasing for the // time being. When we have true antialiasing support this workaround // can be removed. const Image aPreview = maPreviewRenderer.RenderPage (
pPage,
Size(aPreviewSize.Width*nFactor, aPreviewSize.Height*nFactor), true); if (nFactor == 1) return aPreview.GetBitmapEx(); else
{
BitmapEx aScaledPreview = aPreview.GetBitmapEx();
aScaledPreview.Scale(
Size(aPreviewSize.Width,aPreviewSize.Height),
BmpScaleFlag::BestQuality); return aScaledPreview;
}
}
void SlideRenderer::ThrowIfDisposed()
{ if (m_bDisposed)
{ throw lang::DisposedException (u"SlideRenderer object has already been disposed"_ustr, static_cast<uno::XWeak*>(this));
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.