Author: alg
Date: Mon Nov 12 18:02:48 2012
New Revision: 1408383
URL: http://svn.apache.org/viewvc?rev=1408383&view=rev
Log:
Added more tests for BitmapEx Mask/Alpha format
Modified:
incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/alpha.cxx
incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/bitmapex.cxx
incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/bmpfast.cxx
incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/outdev2.cxx
incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/outmap.cxx
Modified: incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/alpha.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/alpha.cxx?rev=1408383&r1=1408382&r2=1408383&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/alpha.cxx (original)
+++ incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/alpha.cxx Mon Nov 12
18:02:48 2012
@@ -90,8 +90,14 @@ const Bitmap& AlphaMask::ImplGetBitmap()
void AlphaMask::ImplSetBitmap( const Bitmap& rBitmap )
{
- DBG_ASSERT( ( 8 == rBitmap.GetBitCount() ) && rBitmap.HasGreyPalette(),
"AlphaMask::ImplSetBitmap: invalid bitmap" );
- *(Bitmap*) this = rBitmap;
+ *(Bitmap*) this = rBitmap;
+
+#ifdef DBG_UTIL
+ if((8 != rBitmap.GetBitCount()) || !rBitmap.HasGreyPalette())
+ {
+ OSL_ENSURE(false, "AlphaMask::ImplSetBitmap: invalid bitmap");
+ }
+#endif
}
//
-----------------------------------------------------------------------------
Modified: incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/bitmapex.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/bitmapex.cxx?rev=1408383&r1=1408382&r2=1408383&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/bitmapex.cxx (original)
+++ incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/bitmapex.cxx Mon Nov
12 18:02:48 2012
@@ -160,11 +160,19 @@ BitmapEx::BitmapEx( const Bitmap& rBmp,
aMask.Scale(rBmp.GetSizePixel());
}
+ if( !!aMask && aMask.GetBitCount() > 8 )
+ {
+ OSL_TRACE("BitmapEx: forced alpha to 8bit grey");
+ aMask.Convert(BMP_CONVERSION_8BIT_GREYS);
+ }
+
// #i75531# the workaround below can go when
// X11SalGraphics::drawAlphaBitmap()'s render acceleration
// can handle the bitmap depth mismatch directly
if( aBitmap.GetBitCount() < aMask.GetBitCount() )
+ {
aBitmap.Convert( BMP_CONVERSION_24BIT );
+ }
}
// ------------------------------------------------------------------
Modified: incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/bmpfast.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/bmpfast.cxx?rev=1408383&r1=1408382&r2=1408383&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/bmpfast.cxx (original)
+++ incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/bmpfast.cxx Mon Nov 12
18:02:48 2012
@@ -677,8 +677,12 @@ bool ImplBlendToBitmap( TrueColorPixelPt
BitmapBuffer& rDstBuffer, const BitmapBuffer& rSrcBuffer,
const BitmapBuffer& rMskBuffer )
{
- //DBG_ASSERT( rMskBuffer.mnFormat == MSKFMT, "FastBmp BlendImage: wrong
MSKFMT" );
- DBG_ASSERT( rMskBuffer.mnFormat == BMP_FORMAT_8BIT_PAL, "FastBmp
BlendImage: unusual MSKFMT" );
+#ifdef DBG_UTIL
+ if(rMskBuffer.mnFormat != BMP_FORMAT_8BIT_PAL && rMskBuffer.mnFormat !=
BMP_FORMAT_8BIT_TC_MASK)
+ {
+ OSL_ENSURE(false, "FastBmp BlendImage: unusual MSKFMT");
+ }
+#endif
const int nSrcLinestep = rSrcBuffer.mnScanlineSize;
int nMskLinestep = rMskBuffer.mnScanlineSize;
Modified: incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/outdev2.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/outdev2.cxx?rev=1408383&r1=1408382&r2=1408383&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/outdev2.cxx (original)
+++ incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/outdev2.cxx Mon Nov 12
18:02:48 2012
@@ -2023,9 +2023,12 @@ void OutputDevice::ImplDrawAlpha( const
BitmapReadAccess* pP = ( (Bitmap&) rBmp ).AcquireReadAccess();
BitmapReadAccess* pA = ( (AlphaMask&) rAlpha
).AcquireReadAccess();
- DBG_ASSERT( pA->GetScanlineFormat() == BMP_FORMAT_8BIT_PAL ||
- pA->GetScanlineFormat() == BMP_FORMAT_8BIT_TC_MASK,
- "OutputDevice::ImplDrawAlpha(): non-8bit alpha no
longer supported!" );
+#ifdef DBG_UTIL
+ if(pA->GetScanlineFormat() != BMP_FORMAT_8BIT_PAL &&
pA->GetScanlineFormat() != BMP_FORMAT_8BIT_TC_MASK)
+ {
+ OSL_ENSURE(false, "OutputDevice::ImplDrawAlpha(): non-8bit
alpha no longer supported!");
+ }
+#endif
// #i38887# reading from screen may sometimes fail
if( aBmp.ImplGetImpBitmap() )
Modified: incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/outmap.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/outmap.cxx?rev=1408383&r1=1408382&r2=1408383&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/outmap.cxx (original)
+++ incubator/ooo/branches/alg/aw080/main/vcl/source/gdi/outmap.cxx Mon Nov 12
18:02:48 2012
@@ -2248,17 +2248,29 @@ long* OutputDevice::LogicToLogic( long*
// -----------------------------------------------------------------------
-#define CHEKCMAPUNITSFORSTATIC( aMapA, aMapB ) \
- OSL_ENSURE((MAP_PIXEL == aMapA && MAP_PIXEL != aMapB) && (MAP_PIXEL !=
aMapA && MAP_PIXEL == aMapB), \
- "Caution: When using the static LogicToLogic methods to convert between
pixels and logic sizes, \
- not the correct system DPI is used, but a DPI of 75 is guessed. To use the
correct DPI, use e.g. \
- the OutputDevice from Application::GetDefaultDevice() (!)");
+#ifdef DBG_UTIL
+void CheckMapUnitsForStatic(MapUnit aMapA, MapUnit aMapB)
+{
+ if(aMapA != aMapB)
+ {
+ if((MAP_PIXEL == aMapA && MAP_PIXEL != aMapB) || (MAP_PIXEL != aMapA
&& MAP_PIXEL == aMapB))
+ {
+ OSL_ENSURE(false, \
+ "Caution: When using the static LogicToLogic methods to convert
between pixels and logic sizes,/n\
+ not the correct system DPI is used, but a DPI of 75 is guessed. To
use the correct DPI, use e.g./n\
+ the OutputDevice from Application::GetDefaultDevice() (!)");
+ }
+ }
+}
+#endif
Point OutputDevice::LogicToLogic( const Point& rPtSource,
const
MapMode& rMapModeSource,
const
MapMode& rMapModeDest )
{
- CHEKCMAPUNITSFORSTATIC(rMapModeSource.GetMapUnit(),
rMapModeDest.GetMapUnit())
+#ifdef DBG_UTIL
+ CheckMapUnitsForStatic(rMapModeSource.GetMapUnit(),
rMapModeDest.GetMapUnit());
+#endif
if ( rMapModeSource == rMapModeDest )
return rPtSource;
@@ -2295,7 +2307,9 @@ Size OutputDevice::LogicToLogic( const S
const MapMode&
rMapModeSource,
const MapMode&
rMapModeDest )
{
- CHEKCMAPUNITSFORSTATIC(rMapModeSource.GetMapUnit(),
rMapModeDest.GetMapUnit())
+#ifdef DBG_UTIL
+ CheckMapUnitsForStatic(rMapModeSource.GetMapUnit(),
rMapModeDest.GetMapUnit());
+#endif
if ( rMapModeSource == rMapModeDest )
return rSzSource;
@@ -2330,7 +2344,9 @@ basegfx::B2DPolygon OutputDevice::LogicT
const MapMode& rMapModeSource,
const MapMode& rMapModeDest )
{
- CHEKCMAPUNITSFORSTATIC(rMapModeSource.GetMapUnit(),
rMapModeDest.GetMapUnit())
+#ifdef DBG_UTIL
+ CheckMapUnitsForStatic(rMapModeSource.GetMapUnit(),
rMapModeDest.GetMapUnit());
+#endif
if ( rMapModeSource == rMapModeDest )
return rPolySource;
@@ -2376,7 +2392,9 @@ basegfx::B2DPolyPolygon OutputDevice::Lo
const MapMode&
rMapModeSource,
const MapMode&
rMapModeDest )
{
- CHEKCMAPUNITSFORSTATIC(rMapModeSource.GetMapUnit(),
rMapModeDest.GetMapUnit())
+#ifdef DBG_UTIL
+ CheckMapUnitsForStatic(rMapModeSource.GetMapUnit(),
rMapModeDest.GetMapUnit());
+#endif
if ( rMapModeSource == rMapModeDest )
return rPolySource;
@@ -2422,7 +2440,9 @@ Rectangle OutputDevice::LogicToLogic( co
const
MapMode& rMapModeSource,
const
MapMode& rMapModeDest )
{
- CHEKCMAPUNITSFORSTATIC(rMapModeSource.GetMapUnit(),
rMapModeDest.GetMapUnit())
+#ifdef DBG_UTIL
+ CheckMapUnitsForStatic(rMapModeSource.GetMapUnit(),
rMapModeDest.GetMapUnit());
+#endif
if ( rMapModeSource == rMapModeDest )
return rRectSource;
@@ -2471,7 +2491,9 @@ long OutputDevice::LogicToLogic( long nL
if ( eUnitSource == eUnitDest )
return nLongSource;
- CHEKCMAPUNITSFORSTATIC(eUnitSource, eUnitDest)
+#ifdef DBG_UTIL
+ CheckMapUnitsForStatic(eUnitSource, eUnitDest);
+#endif
ENTER2( eUnitSource, eUnitDest );
ENTER3( eUnitSource, eUnitDest );
@@ -2498,7 +2520,9 @@ basegfx::B2DHomMatrix OutputDevice::GetT
double OutputDevice::GetFactorLogicToLogic(MapUnit eUnitSource, MapUnit
eUnitDest)
{
- CHEKCMAPUNITSFORSTATIC(eUnitSource, eUnitDest)
+#ifdef DBG_UTIL
+ CheckMapUnitsForStatic(eUnitSource, eUnitDest);
+#endif
if ( eUnitSource == eUnitDest )
return 1.0;