From 4f6b3e3089f070e7bf4b061c549ab3c6614dd542 Mon Sep 17 00:00:00 2001 From: Mike Kaganski Date: Thu, 14 May 2020 14:42:24 +0300 Subject: Allow dumping Bitmap in its dtor in dbgutil builds Change-Id: I81ec9d1c16a07c6c56e51e7e334fb692b963e1e1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95054 Tested-by: Jenkins Reviewed-by: Mike Kaganski --- vcl/source/bitmap/bitmap.cxx | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/vcl/source/bitmap/bitmap.cxx b/vcl/source/bitmap/bitmap.cxx index 20045fc78f5e..fd37da07e9ef 100644 --- a/vcl/source/bitmap/bitmap.cxx +++ b/vcl/source/bitmap/bitmap.cxx @@ -31,6 +31,12 @@ #include #include +#ifdef DBG_UTIL +#include +#include +#include +#endif + Bitmap::Bitmap() { } @@ -110,8 +116,32 @@ Bitmap::Bitmap( const Size& rSizePixel, sal_uInt16 nBitCount, const BitmapPalett } } +#ifdef DBG_UTIL + +namespace +{ +void savePNG(const OUString& sWhere, const Bitmap& rBmp) +{ + SvFileStream aStream(sWhere, StreamMode::WRITE | StreamMode::TRUNC); + GraphicFilter& rFilter = GraphicFilter::GetGraphicFilter(); + rFilter.compressAsPNG(rBmp, aStream); +} +} + +#endif + Bitmap::~Bitmap() { +#ifdef DBG_UTIL + // VCL_DUMP_BMP_PATH should be like C:/bmpDump.png or ~/bmpDump.png + static const OUString sDumpPath(OUString::createFromAscii(std::getenv("VCL_DUMP_BMP_PATH"))); + static volatile bool save(false); + if (!sDumpPath.isEmpty() && save) + { + save = false; + savePNG(sDumpPath, *this); + } +#endif } const BitmapPalette& Bitmap::GetGreyPalette( int nEntries ) -- cgit