Add tests of creating wxGraphicsBitmap from wxImage
This commit is contained in:
@@ -162,49 +162,89 @@ wxBitmap CreateBitmapRGBA(int w, int h, bool withMask)
|
|||||||
return bmp;
|
return bmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BlendMaskWithAlpha(wxImage& img)
|
wxImage MakeReferenceImage(const wxImage& img)
|
||||||
{
|
{
|
||||||
if ( img.HasAlpha() && img.HasMask() )
|
wxImage refImg = img;
|
||||||
|
if ( refImg.HasMask() )
|
||||||
{
|
{
|
||||||
// We need to blend mask with alpha values
|
// wxGraphicsBitmap doesn't have a mask so we need wxImage
|
||||||
size_t numPixels = img.GetWidth() * img.GetHeight();
|
// without mask to be compared with created wxGraphicsBitmap.
|
||||||
unsigned char* oldAlpha = new unsigned char[numPixels];
|
if ( refImg.HasAlpha() )
|
||||||
memcpy(oldAlpha, img.GetAlpha(), numPixels);
|
|
||||||
|
|
||||||
img.ClearAlpha();
|
|
||||||
img.InitAlpha();
|
|
||||||
unsigned char* newAlpha = img.GetAlpha();
|
|
||||||
for ( size_t i = 0; i < numPixels; i++ )
|
|
||||||
{
|
{
|
||||||
if ( newAlpha[i] == wxIMAGE_ALPHA_OPAQUE )
|
// We need to blend mask with alpha values
|
||||||
newAlpha[i] = oldAlpha[i];
|
size_t numPixels = refImg.GetWidth() * refImg.GetHeight();
|
||||||
|
unsigned char* oldAlpha = new unsigned char[numPixels];
|
||||||
|
memcpy(oldAlpha, refImg.GetAlpha(), numPixels);
|
||||||
|
|
||||||
|
refImg.ClearAlpha();
|
||||||
|
refImg.InitAlpha();
|
||||||
|
unsigned char* newAlpha = refImg.GetAlpha();
|
||||||
|
for ( size_t i = 0; i < numPixels; i++ )
|
||||||
|
{
|
||||||
|
if ( newAlpha[i] == wxIMAGE_ALPHA_OPAQUE )
|
||||||
|
newAlpha[i] = oldAlpha[i];
|
||||||
|
}
|
||||||
|
delete[]oldAlpha;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
refImg.InitAlpha();
|
||||||
}
|
}
|
||||||
delete[]oldAlpha;
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
if ( refImg.HasAlpha() )
|
||||||
{
|
{
|
||||||
img.InitAlpha();
|
// We need also to remove mask colour from transparent pixels
|
||||||
|
// for compatibility with wxGraphicsBitmap.
|
||||||
|
for ( int y = 0; y < refImg.GetHeight(); y++ )
|
||||||
|
for ( int x = 0; x < refImg.GetWidth(); x++ )
|
||||||
|
{
|
||||||
|
if ( refImg.GetAlpha(x, y) == wxALPHA_TRANSPARENT )
|
||||||
|
{
|
||||||
|
refImg.SetRGB(x, y, 0, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return refImg;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void CheckCreateGraphBitmap(wxGraphicsRenderer* gr, const wxBitmap& srcBmp, const wxImage& refImg)
|
inline void CheckCreateGraphBitmap(wxGraphicsRenderer* gr, const wxBitmap& srcBmp, const wxImage& srcImg)
|
||||||
{
|
{
|
||||||
wxGraphicsBitmap gbmp = gr->CreateBitmap(srcBmp);
|
wxGraphicsBitmap gbmp = gr->CreateBitmap(srcBmp);
|
||||||
|
|
||||||
wxImage gimage = gbmp.ConvertToImage();
|
wxImage gimage = gbmp.ConvertToImage();
|
||||||
|
|
||||||
|
// Reference image needs to be in the format compatible with wxGraphicsBitmap.
|
||||||
|
wxImage refImg = MakeReferenceImage(srcImg);
|
||||||
|
|
||||||
CHECK_THAT(gimage, RGBASameAs(refImg));
|
CHECK_THAT(gimage, RGBASameAs(refImg));
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void CheckCreateGraphSubBitmap(wxGraphicsRenderer* gr, const wxBitmap& srcBmp,
|
inline void CheckCreateGraphSubBitmap(wxGraphicsRenderer* gr, const wxBitmap& srcBmp,
|
||||||
double x, double y, double w, double h,
|
double x, double y, double w, double h,
|
||||||
const wxImage& refImg)
|
const wxImage& srcImg)
|
||||||
{
|
{
|
||||||
wxGraphicsBitmap gbmp = gr->CreateBitmap(srcBmp);
|
wxGraphicsBitmap gbmp = gr->CreateBitmap(srcBmp);
|
||||||
wxGraphicsBitmap gSubBmp = gr->CreateSubBitmap(gbmp, x, y, w, h);
|
wxGraphicsBitmap gSubBmp = gr->CreateSubBitmap(gbmp, x, y, w, h);
|
||||||
|
|
||||||
wxImage gimage = gSubBmp.ConvertToImage();
|
wxImage gimage = gSubBmp.ConvertToImage();
|
||||||
|
|
||||||
|
// Reference image needs to be in the format compatible with wxGraphicsBitmap.
|
||||||
|
wxImage refImg = MakeReferenceImage(srcImg);
|
||||||
|
|
||||||
|
CHECK_THAT(gimage, RGBASameAs(refImg));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void CheckCreateGraphBitmapFromImage(wxGraphicsRenderer* gr, const wxImage& srcImg)
|
||||||
|
{
|
||||||
|
wxGraphicsBitmap gbmp = gr->CreateBitmapFromImage(srcImg);
|
||||||
|
|
||||||
|
wxImage gimage = gbmp.ConvertToImage();
|
||||||
|
|
||||||
|
// Reference image needs to be in the format compatible with wxGraphicsBitmap.
|
||||||
|
wxImage refImg = MakeReferenceImage(srcImg);
|
||||||
|
|
||||||
CHECK_THAT(gimage, RGBASameAs(refImg));
|
CHECK_THAT(gimage, RGBASameAs(refImg));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -278,22 +318,6 @@ TEST_CASE("GraphicsBitmapTestCase::Create", "[graphbitmap][create]")
|
|||||||
const wxColour maskCol(image.GetMaskRed(), image.GetMaskGreen(), image.GetMaskBlue());
|
const wxColour maskCol(image.GetMaskRed(), image.GetMaskGreen(), image.GetMaskBlue());
|
||||||
REQUIRE(maskCol.IsOk());
|
REQUIRE(maskCol.IsOk());
|
||||||
|
|
||||||
// wxGraphicsBitmap doesn't have a mask so we need wxImage without mask
|
|
||||||
// to be compared with created wxGraphicsBitmap.
|
|
||||||
image.InitAlpha();
|
|
||||||
REQUIRE(image.HasAlpha() == true);
|
|
||||||
REQUIRE_FALSE(image.HasMask());
|
|
||||||
// We need also to remove mask colour from transparent pixels
|
|
||||||
// for compatibility with wxGraphicsMask.
|
|
||||||
for ( int y = 0; y < image.GetHeight(); y++ )
|
|
||||||
for ( int x = 0; x < image.GetWidth(); x++ )
|
|
||||||
{
|
|
||||||
if ( image.GetAlpha(x, y) == wxALPHA_TRANSPARENT )
|
|
||||||
{
|
|
||||||
image.SetRGB(x, y, 0, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTION("Default GC")
|
SECTION("Default GC")
|
||||||
{
|
{
|
||||||
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDefaultRenderer();
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDefaultRenderer();
|
||||||
@@ -401,22 +425,6 @@ TEST_CASE("GraphicsBitmapTestCase::Create", "[graphbitmap][create]")
|
|||||||
const wxColour maskCol(image.GetMaskRed(), image.GetMaskGreen(), image.GetMaskBlue());
|
const wxColour maskCol(image.GetMaskRed(), image.GetMaskGreen(), image.GetMaskBlue());
|
||||||
REQUIRE(maskCol.IsOk());
|
REQUIRE(maskCol.IsOk());
|
||||||
|
|
||||||
// wxGraphicsBitmap doesn't have a mask so we need wxImage without mask
|
|
||||||
// to be compared with created wxGraphicsBitmap.
|
|
||||||
image.InitAlpha();
|
|
||||||
REQUIRE(image.HasAlpha() == true);
|
|
||||||
REQUIRE_FALSE(image.HasMask());
|
|
||||||
// We need also to remove mask colour from transparent pixels
|
|
||||||
// for compatibility with wxGraphicsMask.
|
|
||||||
for ( int y = 0; y < image.GetHeight(); y++ )
|
|
||||||
for ( int x = 0; x < image.GetWidth(); x++ )
|
|
||||||
{
|
|
||||||
if ( image.GetAlpha(x, y) == wxALPHA_TRANSPARENT )
|
|
||||||
{
|
|
||||||
image.SetRGB(x, y, 0, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTION("Default GC")
|
SECTION("Default GC")
|
||||||
{
|
{
|
||||||
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDefaultRenderer();
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDefaultRenderer();
|
||||||
@@ -522,22 +530,6 @@ TEST_CASE("GraphicsBitmapTestCase::Create", "[graphbitmap][create]")
|
|||||||
const wxColour maskCol(image.GetMaskRed(), image.GetMaskGreen(), image.GetMaskBlue());
|
const wxColour maskCol(image.GetMaskRed(), image.GetMaskGreen(), image.GetMaskBlue());
|
||||||
REQUIRE(maskCol.IsOk());
|
REQUIRE(maskCol.IsOk());
|
||||||
|
|
||||||
// wxGraphicsBitmap doesn't have a mask so we need wxImage without mask
|
|
||||||
// to be compared with created wxGraphicsBitmap.
|
|
||||||
BlendMaskWithAlpha(image);
|
|
||||||
REQUIRE(image.HasAlpha() == true);
|
|
||||||
REQUIRE_FALSE(image.HasMask());
|
|
||||||
// We need also to remove mask colour from transparent pixels
|
|
||||||
// for compatibility with wxGraphicsMask.
|
|
||||||
for ( int y = 0; y < image.GetHeight(); y++ )
|
|
||||||
for ( int x = 0; x < image.GetWidth(); x++ )
|
|
||||||
{
|
|
||||||
if ( image.GetAlpha(x, y) == wxALPHA_TRANSPARENT )
|
|
||||||
{
|
|
||||||
image.SetRGB(x, y, 0, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTION("Default GC")
|
SECTION("Default GC")
|
||||||
{
|
{
|
||||||
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDefaultRenderer();
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDefaultRenderer();
|
||||||
@@ -653,22 +645,6 @@ TEST_CASE("GraphicsBitmapTestCase::SubBitmap", "[graphbitmap][subbitmap][create]
|
|||||||
const wxColour maskCol(image.GetMaskRed(), image.GetMaskGreen(), image.GetMaskBlue());
|
const wxColour maskCol(image.GetMaskRed(), image.GetMaskGreen(), image.GetMaskBlue());
|
||||||
REQUIRE(maskCol.IsOk());
|
REQUIRE(maskCol.IsOk());
|
||||||
|
|
||||||
// wxGraphicsBitmap doesn't have a mask so we need wxImage without mask
|
|
||||||
// to be compared with created wxGraphicsBitmap.
|
|
||||||
image.InitAlpha();
|
|
||||||
REQUIRE(image.HasAlpha() == true);
|
|
||||||
REQUIRE_FALSE(image.HasMask());
|
|
||||||
// We need also to remove mask colour from transparent pixels
|
|
||||||
// for compatibility with wxGraphicsMask.
|
|
||||||
for ( int y = 0; y < image.GetHeight(); y++ )
|
|
||||||
for ( int x = 0; x < image.GetWidth(); x++ )
|
|
||||||
{
|
|
||||||
if ( image.GetAlpha(x, y) == wxALPHA_TRANSPARENT )
|
|
||||||
{
|
|
||||||
image.SetRGB(x, y, 0, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTION("Default GC")
|
SECTION("Default GC")
|
||||||
{
|
{
|
||||||
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDefaultRenderer();
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDefaultRenderer();
|
||||||
@@ -913,22 +889,6 @@ TEST_CASE("GraphicsBitmapTestCase::SubBitmap", "[graphbitmap][subbitmap][create]
|
|||||||
const wxColour maskCol(image.GetMaskRed(), image.GetMaskGreen(), image.GetMaskBlue());
|
const wxColour maskCol(image.GetMaskRed(), image.GetMaskGreen(), image.GetMaskBlue());
|
||||||
REQUIRE(maskCol.IsOk());
|
REQUIRE(maskCol.IsOk());
|
||||||
|
|
||||||
// wxGraphicsBitmap doesn't have a mask so we need wxImage without mask
|
|
||||||
// to be compared with created wxGraphicsBitmap.
|
|
||||||
BlendMaskWithAlpha(image);
|
|
||||||
REQUIRE(image.HasAlpha() == true);
|
|
||||||
REQUIRE_FALSE(image.HasMask());
|
|
||||||
// We need also to remove mask colour from transparent pixels
|
|
||||||
// for compatibility with wxGraphicsMask.
|
|
||||||
for ( int y = 0; y < image.GetHeight(); y++ )
|
|
||||||
for ( int x = 0; x < image.GetWidth(); x++ )
|
|
||||||
{
|
|
||||||
if ( image.GetAlpha(x, y) == wxALPHA_TRANSPARENT )
|
|
||||||
{
|
|
||||||
image.SetRGB(x, y, 0, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTION("Default GC")
|
SECTION("Default GC")
|
||||||
{
|
{
|
||||||
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDefaultRenderer();
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDefaultRenderer();
|
||||||
@@ -966,6 +926,230 @@ TEST_CASE("GraphicsBitmapTestCase::SubBitmap", "[graphbitmap][subbitmap][create]
|
|||||||
#endif // wxUSE_GRAPHICS_CAIRO
|
#endif // wxUSE_GRAPHICS_CAIRO
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("GraphicsBitmapTestCase::CreateFromImage", "[graphbitmap][create][fromimage]")
|
||||||
|
{
|
||||||
|
const wxColour maskCol(*wxRED);
|
||||||
|
const wxColour fillCol(*wxGREEN);
|
||||||
|
|
||||||
|
SECTION("RGB image without mask")
|
||||||
|
{
|
||||||
|
wxImage img(4, 4);
|
||||||
|
for ( int y = 0; y < img.GetHeight(); y++ )
|
||||||
|
for ( int x = 0; x < img.GetWidth(); x++ )
|
||||||
|
{
|
||||||
|
if ( x < img.GetWidth() / 2 )
|
||||||
|
img.SetRGB(x, y, maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
else
|
||||||
|
img.SetRGB(x, y, fillCol.Red(), fillCol.Green(), fillCol.Blue());
|
||||||
|
}
|
||||||
|
REQUIRE_FALSE(img.HasAlpha());
|
||||||
|
REQUIRE_FALSE(img.HasMask());
|
||||||
|
|
||||||
|
SECTION("Default GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDefaultRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(__WXMSW__)
|
||||||
|
#if wxUSE_GRAPHICS_GDIPLUS
|
||||||
|
SECTION("GDI+ GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetGDIPlusRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
#endif // wxUSE_GRAPHICS_GDIPLUS
|
||||||
|
|
||||||
|
#if wxUSE_GRAPHICS_DIRECT2D
|
||||||
|
SECTION("Direct2D GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDirect2DRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
#endif // wxUSE_GRAPHICS_DIRECT2D
|
||||||
|
#endif // __WXMSW__
|
||||||
|
|
||||||
|
#if wxUSE_CAIRO
|
||||||
|
SECTION("Cairo GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetCairoRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
#endif // wxUSE_GRAPHICS_CAIRO
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("RGB image with mask")
|
||||||
|
{
|
||||||
|
wxImage img(4, 4);
|
||||||
|
for ( int y = 0; y < img.GetHeight(); y++ )
|
||||||
|
for ( int x = 0; x < img.GetWidth(); x++ )
|
||||||
|
{
|
||||||
|
if ( x < img.GetWidth() / 2 )
|
||||||
|
img.SetRGB(x, y, maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
else
|
||||||
|
img.SetRGB(x, y, fillCol.Red(), fillCol.Green(), fillCol.Blue());
|
||||||
|
}
|
||||||
|
img.SetMaskColour(maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
REQUIRE_FALSE(img.HasAlpha());
|
||||||
|
REQUIRE(img.HasMask() == true);
|
||||||
|
|
||||||
|
SECTION("Default GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDefaultRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(__WXMSW__)
|
||||||
|
#if wxUSE_GRAPHICS_GDIPLUS
|
||||||
|
SECTION("GDI+ GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetGDIPlusRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
#endif // wxUSE_GRAPHICS_GDIPLUS
|
||||||
|
|
||||||
|
#if wxUSE_GRAPHICS_DIRECT2D
|
||||||
|
SECTION("Direct2D GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDirect2DRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
#endif // wxUSE_GRAPHICS_DIRECT2D
|
||||||
|
#endif // __WXMSW__
|
||||||
|
|
||||||
|
#if wxUSE_CAIRO
|
||||||
|
SECTION("Cairo GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetCairoRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
#endif // wxUSE_GRAPHICS_CAIRO
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("RGBA image without mask")
|
||||||
|
{
|
||||||
|
wxImage img(4, 4);
|
||||||
|
img.SetAlpha();
|
||||||
|
for ( int y = 0; y < img.GetHeight(); y++ )
|
||||||
|
for ( int x = 0; x < img.GetWidth(); x++ )
|
||||||
|
{
|
||||||
|
if ( x < img.GetWidth() / 2 )
|
||||||
|
img.SetRGB(x, y, maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
else
|
||||||
|
img.SetRGB(x, y, fillCol.Red(), fillCol.Green(), fillCol.Blue());
|
||||||
|
|
||||||
|
if ( y < img.GetHeight() / 2 )
|
||||||
|
img.SetAlpha(x, y, 128);
|
||||||
|
else
|
||||||
|
img.SetAlpha(x, y, 0);
|
||||||
|
}
|
||||||
|
REQUIRE(img.HasAlpha() == true);
|
||||||
|
REQUIRE_FALSE(img.HasMask());
|
||||||
|
|
||||||
|
SECTION("Default GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDefaultRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(__WXMSW__)
|
||||||
|
#if wxUSE_GRAPHICS_GDIPLUS
|
||||||
|
SECTION("GDI+ GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetGDIPlusRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
#endif // wxUSE_GRAPHICS_GDIPLUS
|
||||||
|
|
||||||
|
#if wxUSE_GRAPHICS_DIRECT2D
|
||||||
|
SECTION("Direct2D GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDirect2DRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
#endif // wxUSE_GRAPHICS_DIRECT2D
|
||||||
|
#endif // __WXMSW__
|
||||||
|
|
||||||
|
#if wxUSE_CAIRO
|
||||||
|
SECTION("Cairo GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetCairoRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
#endif // wxUSE_GRAPHICS_CAIRO
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("RGBA image with mask")
|
||||||
|
{
|
||||||
|
wxImage img(4, 4);
|
||||||
|
img.SetAlpha();
|
||||||
|
for ( int y = 0; y < img.GetHeight(); y++ )
|
||||||
|
for ( int x = 0; x < img.GetWidth(); x++ )
|
||||||
|
{
|
||||||
|
if ( x < img.GetWidth() / 2 )
|
||||||
|
img.SetRGB(x, y, maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
else
|
||||||
|
img.SetRGB(x, y, fillCol.Red(), fillCol.Green(), fillCol.Blue());
|
||||||
|
|
||||||
|
if ( y < img.GetHeight() / 2 )
|
||||||
|
img.SetAlpha(x, y, 128);
|
||||||
|
else
|
||||||
|
img.SetAlpha(x, y, 0);
|
||||||
|
}
|
||||||
|
img.SetMaskColour(maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
REQUIRE(img.HasAlpha() == true);
|
||||||
|
REQUIRE(img.HasMask() == true);
|
||||||
|
|
||||||
|
SECTION("Default GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDefaultRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(__WXMSW__)
|
||||||
|
#if wxUSE_GRAPHICS_GDIPLUS
|
||||||
|
SECTION("GDI+ GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetGDIPlusRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
#endif // wxUSE_GRAPHICS_GDIPLUS
|
||||||
|
|
||||||
|
#if wxUSE_GRAPHICS_DIRECT2D
|
||||||
|
SECTION("Direct2D GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetDirect2DRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
#endif // wxUSE_GRAPHICS_DIRECT2D
|
||||||
|
#endif // __WXMSW__
|
||||||
|
|
||||||
|
#if wxUSE_CAIRO
|
||||||
|
SECTION("Cairo GC")
|
||||||
|
{
|
||||||
|
wxGraphicsRenderer* gr = wxGraphicsRenderer::GetCairoRenderer();
|
||||||
|
REQUIRE(gr != NULL);
|
||||||
|
CheckCreateGraphBitmapFromImage(gr, img);
|
||||||
|
}
|
||||||
|
#endif // wxUSE_GRAPHICS_CAIRO
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif // wxUSE_GRAPHICS_CONTEXT
|
#endif // wxUSE_GRAPHICS_CONTEXT
|
||||||
|
|
||||||
#endif // wxHAS_RAW_BITMAP
|
#endif // wxHAS_RAW_BITMAP
|
||||||
|
Reference in New Issue
Block a user