diff options
Diffstat (limited to 'sd/source/ui/slidesorter/cache/SlsBitmapCompressor.cxx')
-rwxr-xr-x[-rw-r--r--] | sd/source/ui/slidesorter/cache/SlsBitmapCompressor.cxx | 83 |
1 files changed, 30 insertions, 53 deletions
diff --git a/sd/source/ui/slidesorter/cache/SlsBitmapCompressor.cxx b/sd/source/ui/slidesorter/cache/SlsBitmapCompressor.cxx index 86fc72885414..e0f950442bb5 100644..100755 --- a/sd/source/ui/slidesorter/cache/SlsBitmapCompressor.cxx +++ b/sd/source/ui/slidesorter/cache/SlsBitmapCompressor.cxx @@ -47,37 +47,24 @@ class NoBitmapCompression::DummyReplacement : public BitmapReplacement { public: - ::boost::shared_ptr<BitmapEx> mpPreview; + Bitmap maPreview; Size maOriginalSize; - DummyReplacement (const ::boost::shared_ptr<BitmapEx>& rpPreview) : mpPreview(rpPreview) - { - } - - virtual ~DummyReplacement(); - - virtual sal_Int32 GetMemorySize (void) const; + DummyReplacement (const Bitmap& rPreview) : maPreview(rPreview) { } + virtual ~DummyReplacement(void) {} + virtual sal_Int32 GetMemorySize (void) const { return maPreview.GetSizeBytes(); } }; -NoBitmapCompression::DummyReplacement::~DummyReplacement() -{ -} -sal_Int32 NoBitmapCompression::DummyReplacement::GetMemorySize (void) const -{ - return mpPreview->GetSizeBytes(); -} -::boost::shared_ptr<BitmapReplacement> NoBitmapCompression::Compress ( - const ::boost::shared_ptr<BitmapEx>& rpBitmap) const +::boost::shared_ptr<BitmapReplacement> NoBitmapCompression::Compress (const Bitmap& rBitmap) const { - return ::boost::shared_ptr<BitmapReplacement>(new DummyReplacement(rpBitmap)); + return ::boost::shared_ptr<BitmapReplacement>(new DummyReplacement(rBitmap)); } -::boost::shared_ptr<BitmapEx> NoBitmapCompression::Decompress ( - const BitmapReplacement& rBitmapData) const +Bitmap NoBitmapCompression::Decompress (const BitmapReplacement& rBitmapData) const { - return dynamic_cast<const DummyReplacement&>(rBitmapData).mpPreview; + return dynamic_cast<const DummyReplacement&>(rBitmapData).maPreview; } @@ -93,8 +80,7 @@ bool NoBitmapCompression::IsLossless (void) const //===== CompressionByDeletion ================================================= -::boost::shared_ptr<BitmapReplacement> CompressionByDeletion::Compress ( - const ::boost::shared_ptr<BitmapEx>& ) const +::boost::shared_ptr<BitmapReplacement> CompressionByDeletion::Compress (const Bitmap& ) const { return ::boost::shared_ptr<BitmapReplacement>(); } @@ -102,12 +88,11 @@ bool NoBitmapCompression::IsLossless (void) const -::boost::shared_ptr<BitmapEx> CompressionByDeletion::Decompress ( - const BitmapReplacement& ) const +Bitmap CompressionByDeletion::Decompress (const BitmapReplacement& ) const { // Return a NULL pointer. This will eventually lead to a request for // the creation of a new one. - return ::boost::shared_ptr<BitmapEx>(); + return Bitmap(); } @@ -128,11 +113,10 @@ bool CompressionByDeletion::IsLossless (void) const class ResolutionReduction::ResolutionReducedReplacement : public BitmapReplacement { public: - ::boost::shared_ptr<BitmapEx> mpPreview; + Bitmap maPreview; Size maOriginalSize; virtual ~ResolutionReducedReplacement(); - virtual sal_Int32 GetMemorySize (void) const; }; @@ -142,23 +126,20 @@ ResolutionReduction::ResolutionReducedReplacement::~ResolutionReducedReplacement sal_Int32 ResolutionReduction::ResolutionReducedReplacement::GetMemorySize (void) const { - if (mpPreview.get() != NULL) - return mpPreview->GetSizeBytes(); - else - return 0; + return maPreview.GetSizeBytes(); } ::boost::shared_ptr<BitmapReplacement> ResolutionReduction::Compress ( - const ::boost::shared_ptr<BitmapEx>& rpBitmap) const + const Bitmap& rBitmap) const { ResolutionReducedReplacement* pResult = new ResolutionReducedReplacement(); - pResult->mpPreview.reset(new BitmapEx(*rpBitmap)); - Size aSize (rpBitmap->GetSizePixel()); + pResult->maPreview = rBitmap; + Size aSize (rBitmap.GetSizePixel()); pResult->maOriginalSize = aSize; if (aSize.Width()>0 && aSize.Width()<mnWidth) { int nHeight = aSize.Height() * mnWidth / aSize.Width() ; - pResult->mpPreview->Scale(Size(mnWidth,nHeight)); + pResult->maPreview.Scale(Size(mnWidth,nHeight)); } return ::boost::shared_ptr<BitmapReplacement>(pResult); @@ -167,22 +148,21 @@ sal_Int32 ResolutionReduction::ResolutionReducedReplacement::GetMemorySize (void -::boost::shared_ptr<BitmapEx> ResolutionReduction::Decompress ( - const BitmapReplacement& rBitmapData) const +Bitmap ResolutionReduction::Decompress (const BitmapReplacement& rBitmapData) const { - ::boost::shared_ptr<BitmapEx> pResult; + Bitmap aResult; const ResolutionReducedReplacement* pData ( dynamic_cast<const ResolutionReducedReplacement*>(&rBitmapData)); - if (pData->mpPreview.get() != NULL) + if ( ! pData->maPreview.IsEmpty()) { - pResult.reset(new BitmapEx(*pData->mpPreview)); + aResult = pData->maPreview; if (pData->maOriginalSize.Width() > mnWidth) - pResult->Scale(pData->maOriginalSize); + aResult.Scale(pData->maOriginalSize); } - return pResult; + return aResult; } @@ -223,15 +203,14 @@ public: -::boost::shared_ptr<BitmapReplacement> PngCompression::Compress ( - const ::boost::shared_ptr<BitmapEx>& rpBitmap) const +::boost::shared_ptr<BitmapReplacement> PngCompression::Compress (const Bitmap& rBitmap) const { - ::vcl::PNGWriter aWriter (*rpBitmap); + ::vcl::PNGWriter aWriter (rBitmap); SvMemoryStream aStream (32768, 32768); aWriter.Write(aStream); PngReplacement* pResult = new PngReplacement(); - pResult->maImageSize = rpBitmap->GetSizePixel(); + pResult->maImageSize = rBitmap.GetSizePixel(); pResult->mnDataSize = aStream.Tell(); pResult->mpData = new char[pResult->mnDataSize]; memcpy(pResult->mpData, aStream.GetData(), pResult->mnDataSize); @@ -242,21 +221,19 @@ public: -::boost::shared_ptr<BitmapEx> PngCompression::Decompress ( +Bitmap PngCompression::Decompress ( const BitmapReplacement& rBitmapData) const { - BitmapEx* pResult = NULL; + Bitmap aResult; const PngReplacement* pData (dynamic_cast<const PngReplacement*>(&rBitmapData)); if (pData != NULL) { SvMemoryStream aStream (pData->mpData, pData->mnDataSize, STREAM_READ); ::vcl::PNGReader aReader (aStream); - pResult = new BitmapEx(aReader.Read()); + aResult = aReader.Read().GetBitmap(); } -// sal_Int32 nRatio ((100L * (ULONG)pResult->GetSizeBytes()) / (ULONG)pData->mnDataSize); - - return ::boost::shared_ptr<BitmapEx>(pResult); + return aResult; } |