Add tests of wxImage::InitAlpha()
This commit is contained in:
@@ -1966,10 +1966,148 @@ TEST_CASE("wxImage::Clipboard", "[image][clipboard]")
|
|||||||
wxImage imgRetrieved = dobj2.GetImage();
|
wxImage imgRetrieved = dobj2.GetImage();
|
||||||
REQUIRE(imgRetrieved.IsOk());
|
REQUIRE(imgRetrieved.IsOk());
|
||||||
|
|
||||||
CompareImage(*wxImage::FindHandler(wxBITMAP_TYPE_PNG), imgRetrieved, 0, &imgOriginal);
|
CHECK_THAT(imgOriginal, RGBASameAs(imgRetrieved));
|
||||||
#endif // wxUSE_CLIPBOARD && wxUSE_DATAOBJ
|
#endif // wxUSE_CLIPBOARD && wxUSE_DATAOBJ
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define CHECK_EQUAL_COLOUR_RGB(c1, c2) \
|
||||||
|
CHECK( (int)c1.Red() == (int)c2.Red() ); \
|
||||||
|
CHECK( (int)c1.Green() == (int)c2.Green() ); \
|
||||||
|
CHECK( (int)c1.Blue() == (int)c2.Blue() )
|
||||||
|
|
||||||
|
#define CHECK_EQUAL_COLOUR_RGBA(c1, c2) \
|
||||||
|
CHECK( (int)c1.Red() == (int)c2.Red() ); \
|
||||||
|
CHECK( (int)c1.Green() == (int)c2.Green() ); \
|
||||||
|
CHECK( (int)c1.Blue() == (int)c2.Blue() ); \
|
||||||
|
CHECK( (int)c1.Alpha() == (int)c2.Alpha() )
|
||||||
|
|
||||||
|
TEST_CASE("wxImage::InitAlpha", "[image][initalpha]")
|
||||||
|
{
|
||||||
|
const wxColour maskCol(*wxRED);
|
||||||
|
const wxColour fillCol(*wxGREEN);
|
||||||
|
|
||||||
|
SECTION("RGB image without mask")
|
||||||
|
{
|
||||||
|
wxImage img(2, 2);
|
||||||
|
img.SetRGB(0, 0, maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
img.SetRGB(0, 1, maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
img.SetRGB(1, 0, fillCol.Red(), fillCol.Green(), fillCol.Blue());
|
||||||
|
img.SetRGB(1, 1, fillCol.Red(), fillCol.Green(), fillCol.Blue());
|
||||||
|
REQUIRE_FALSE(img.HasAlpha());
|
||||||
|
REQUIRE_FALSE(img.HasMask());
|
||||||
|
|
||||||
|
wxImage imgRes = img;
|
||||||
|
imgRes.InitAlpha();
|
||||||
|
REQUIRE(imgRes.HasAlpha() == true);
|
||||||
|
REQUIRE_FALSE(imgRes.HasMask());
|
||||||
|
|
||||||
|
for (int y = 0; y < img.GetHeight(); y++)
|
||||||
|
for (int x = 0; x < img.GetWidth(); x++)
|
||||||
|
{
|
||||||
|
wxColour cSrc(img.GetRed(x, y), img.GetGreen(x, y), img.GetBlue(x, y));
|
||||||
|
wxColour cRes(imgRes.GetRed(x, y), imgRes.GetGreen(x, y), imgRes.GetBlue(x, y), imgRes.GetAlpha(x, y));
|
||||||
|
|
||||||
|
CHECK_EQUAL_COLOUR_RGB(cRes, cSrc);
|
||||||
|
CHECK((int)cRes.Alpha() == (int)wxIMAGE_ALPHA_OPAQUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("RGB image with mask")
|
||||||
|
{
|
||||||
|
wxImage img(2, 2);
|
||||||
|
img.SetRGB(0, 0, maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
img.SetRGB(0, 1, maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
img.SetRGB(1, 0, fillCol.Red(), fillCol.Green(), fillCol.Blue());
|
||||||
|
img.SetRGB(1, 1, fillCol.Red(), fillCol.Green(), fillCol.Blue());
|
||||||
|
img.SetMaskColour(maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
REQUIRE_FALSE(img.HasAlpha());
|
||||||
|
REQUIRE(img.HasMask() == true);
|
||||||
|
|
||||||
|
wxImage imgRes = img;
|
||||||
|
imgRes.InitAlpha();
|
||||||
|
REQUIRE(imgRes.HasAlpha() == true);
|
||||||
|
REQUIRE_FALSE(imgRes.HasMask());
|
||||||
|
|
||||||
|
for ( int y = 0; y < img.GetHeight(); y++ )
|
||||||
|
for ( int x = 0; x < img.GetWidth(); x++ )
|
||||||
|
{
|
||||||
|
wxColour cSrc(img.GetRed(x, y), img.GetGreen(x, y), img.GetBlue(x, y));
|
||||||
|
wxColour cRes(imgRes.GetRed(x, y), imgRes.GetGreen(x, y), imgRes.GetBlue(x, y), imgRes.GetAlpha(x, y));
|
||||||
|
|
||||||
|
CHECK_EQUAL_COLOUR_RGB(cRes, cSrc);
|
||||||
|
if ( cRes == maskCol )
|
||||||
|
{
|
||||||
|
CHECK((int)cRes.Alpha() == (int)wxIMAGE_ALPHA_TRANSPARENT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CHECK((int)cRes.Alpha() == (int)wxIMAGE_ALPHA_OPAQUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("RGBA image without mask")
|
||||||
|
{
|
||||||
|
wxImage img(2, 2);
|
||||||
|
img.SetRGB(0, 0, maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
img.SetRGB(0, 1, maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
img.SetRGB(1, 0, fillCol.Red(), fillCol.Green(), fillCol.Blue());
|
||||||
|
img.SetRGB(1, 1, fillCol.Red(), fillCol.Green(), fillCol.Blue());
|
||||||
|
img.SetAlpha();
|
||||||
|
img.SetAlpha(0, 0, 128);
|
||||||
|
img.SetAlpha(0, 1, 0);
|
||||||
|
img.SetAlpha(1, 0, 128);
|
||||||
|
img.SetAlpha(1, 1, 0);
|
||||||
|
REQUIRE(img.HasAlpha() == true);
|
||||||
|
REQUIRE_FALSE(img.HasMask());
|
||||||
|
|
||||||
|
wxImage imgRes = img;
|
||||||
|
CHECK_THROWS(imgRes.InitAlpha());
|
||||||
|
REQUIRE(imgRes.HasAlpha() == true);
|
||||||
|
REQUIRE_FALSE(imgRes.HasMask());
|
||||||
|
|
||||||
|
for ( int y = 0; y < img.GetHeight(); y++ )
|
||||||
|
for ( int x = 0; x < img.GetWidth(); x++ )
|
||||||
|
{
|
||||||
|
wxColour cSrc(img.GetRed(x, y), img.GetGreen(x, y), img.GetBlue(x, y), img.GetAlpha(x, y));
|
||||||
|
wxColour cRes(imgRes.GetRed(x, y), imgRes.GetGreen(x, y), imgRes.GetBlue(x, y), imgRes.GetAlpha(x, y));
|
||||||
|
|
||||||
|
CHECK_EQUAL_COLOUR_RGBA(cRes, cSrc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("RGBA image with mask")
|
||||||
|
{
|
||||||
|
wxImage img(2, 2);
|
||||||
|
img.SetRGB(0, 0, maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
img.SetRGB(0, 1, maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
img.SetRGB(1, 0, fillCol.Red(), fillCol.Green(), fillCol.Blue());
|
||||||
|
img.SetRGB(1, 1, fillCol.Red(), fillCol.Green(), fillCol.Blue());
|
||||||
|
img.SetAlpha();
|
||||||
|
img.SetAlpha(0, 0, 128);
|
||||||
|
img.SetAlpha(0, 1, 0);
|
||||||
|
img.SetAlpha(1, 0, 128);
|
||||||
|
img.SetAlpha(1, 1, 0);
|
||||||
|
img.SetMaskColour(maskCol.Red(), maskCol.Green(), maskCol.Blue());
|
||||||
|
REQUIRE(img.HasAlpha() == true);
|
||||||
|
REQUIRE(img.HasMask() == true);
|
||||||
|
|
||||||
|
wxImage imgRes = img;
|
||||||
|
CHECK_THROWS(imgRes.InitAlpha());
|
||||||
|
REQUIRE(imgRes.HasAlpha() == true);
|
||||||
|
REQUIRE(imgRes.HasMask() == true);
|
||||||
|
|
||||||
|
for ( int y = 0; y < img.GetHeight(); y++ )
|
||||||
|
for ( int x = 0; x < img.GetWidth(); x++ )
|
||||||
|
{
|
||||||
|
wxColour cSrc(img.GetRed(x, y), img.GetGreen(x, y), img.GetBlue(x, y), img.GetAlpha(x, y));
|
||||||
|
wxColour cRes(imgRes.GetRed(x, y), imgRes.GetGreen(x, y), imgRes.GetBlue(x, y), imgRes.GetAlpha(x, y));
|
||||||
|
|
||||||
|
CHECK_EQUAL_COLOUR_RGBA(cRes, cSrc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TODO: add lots of more tests to wxImage functions
|
TODO: add lots of more tests to wxImage functions
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user