975 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			975 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        tests/graphics/imagelist.cpp
 | |
| // Purpose:     image list unit tests
 | |
| // Author:      Artur Wieczorek
 | |
| // Created:     2021-01-11
 | |
| // Copyright:   (c) 2021 wxWidgets development team
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // headers
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| #include "testprec.h"
 | |
| 
 | |
| 
 | |
| #include "wx/bitmap.h"
 | |
| #include "wx/graphics.h"
 | |
| #include "wx/icon.h"
 | |
| #include "wx/imaglist.h"
 | |
| 
 | |
| #include "wx/dcmemory.h"
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // tests
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| TEST_CASE("ImageList:WithMask", "[imagelist][withmask]")
 | |
| {
 | |
|     wxInitAllImageHandlers();
 | |
| 
 | |
|     wxBitmap bmpRGB(32, 32, 24);
 | |
|     {
 | |
|         wxMemoryDC mdc(bmpRGB);
 | |
|         mdc.SetBackground(*wxBLUE_BRUSH);
 | |
|         mdc.Clear();
 | |
|         mdc.SetBrush(*wxRED_BRUSH);
 | |
|         mdc.DrawRectangle(4, 4, 24, 24);
 | |
|     }
 | |
|     REQUIRE(bmpRGB.IsOk());
 | |
| 
 | |
|     wxBitmap bmpRGBA;
 | |
|     bmpRGBA.LoadFile("image/wx.png", wxBITMAP_TYPE_PNG);
 | |
|     REQUIRE(bmpRGBA.IsOk());
 | |
| 
 | |
|     wxBitmap bmpMask(32, 32, 1);
 | |
|     {
 | |
|         wxMemoryDC mdc(bmpMask);
 | |
| #if wxUSE_GRAPHICS_CONTEXT
 | |
|         wxGraphicsContext* gc = mdc.GetGraphicsContext();
 | |
|         if ( gc )
 | |
|             gc->SetAntialiasMode(wxANTIALIAS_NONE);
 | |
| #endif //wxUSE_GRAPHICS_CONTEXT
 | |
|         mdc.SetBackground(*wxBLACK_BRUSH);
 | |
|         mdc.Clear();
 | |
|         mdc.SetBrush(*wxWHITE_BRUSH);
 | |
|         mdc.DrawRectangle(0, 0, 16, 32);
 | |
|     }
 | |
| 
 | |
|     wxBitmap bmpRGBWithMask(bmpRGB);
 | |
|     bmpRGBWithMask.SetMask(new wxMask(bmpMask));
 | |
|     REQUIRE(bmpRGBWithMask.IsOk());
 | |
| 
 | |
|     wxBitmap bmpRGBAWithMask(bmpRGBA);
 | |
|     bmpRGBAWithMask.SetMask(new wxMask(bmpMask));
 | |
|     REQUIRE(bmpRGBAWithMask.IsOk());
 | |
| 
 | |
|     wxIcon ico;
 | |
|     ico.LoadFile("image/wx.ico", wxBITMAP_TYPE_ICO);
 | |
|     REQUIRE(ico.IsOk());
 | |
| 
 | |
|     REQUIRE(bmpRGB.HasAlpha() == false);
 | |
|     REQUIRE(bmpRGB.GetMask() == NULL);
 | |
| 
 | |
|     REQUIRE(bmpRGBWithMask.HasAlpha() == false);
 | |
|     REQUIRE(bmpRGBWithMask.GetMask() != NULL);
 | |
| 
 | |
|     REQUIRE(bmpRGBA.HasAlpha() == true);
 | |
|     REQUIRE(bmpRGBA.GetMask() == NULL);
 | |
| 
 | |
|     REQUIRE(bmpRGBAWithMask.HasAlpha() == true);
 | |
|     REQUIRE(bmpRGBAWithMask.GetMask() != NULL);
 | |
| 
 | |
|     wxImageList il(32, 32, true);
 | |
| 
 | |
|     SECTION("Add RGB image to list")
 | |
|     {
 | |
|         il.RemoveAll();
 | |
|         int idx = il.Add(bmpRGB);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
|         wxBitmap bmp1 = il.GetBitmap(idx);
 | |
|         CHECK(bmp1.HasAlpha() == false);
 | |
|         CHECK(bmp1.GetMask() != NULL);
 | |
|         CHECK(bmp1.GetWidth() == 32);
 | |
|         CHECK(bmp1.GetHeight() == 32);
 | |
| 
 | |
|         idx = il.Add(bmpRGBWithMask);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
|         wxBitmap bmp2 = il.GetBitmap(idx);
 | |
|         CHECK(bmp2.HasAlpha() == false);
 | |
|         CHECK(bmp2.GetMask() != NULL);
 | |
|         CHECK(bmp2.GetWidth() == 32);
 | |
|         CHECK(bmp2.GetHeight() == 32);
 | |
| 
 | |
|         idx = il.Add(bmpRGB, *wxRED);
 | |
|         CHECK(il.GetImageCount() == 3);
 | |
|         wxBitmap bmp3 = il.GetBitmap(idx);
 | |
|         CHECK(bmp3.HasAlpha() == false);
 | |
|         CHECK(bmp3.GetMask() != NULL);
 | |
|         CHECK(bmp3.GetWidth() == 32);
 | |
|         CHECK(bmp3.GetHeight() == 32);
 | |
|     }
 | |
| 
 | |
|     SECTION("Add RGBA image to list")
 | |
|     {
 | |
|         il.RemoveAll();
 | |
|         int idx = il.Add(bmpRGBA);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
|         wxBitmap bmp1 = il.GetBitmap(idx);
 | |
|         CHECK(bmp1.HasAlpha() == false);
 | |
|         CHECK(bmp1.GetMask() != NULL);
 | |
|         CHECK(bmp1.GetWidth() == 32);
 | |
|         CHECK(bmp1.GetHeight() == 32);
 | |
| 
 | |
|         idx = il.Add(bmpRGBAWithMask);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
|         wxBitmap bmp2 = il.GetBitmap(idx);
 | |
|         CHECK(bmp2.HasAlpha() == false);
 | |
|         CHECK(bmp2.GetMask() != NULL);
 | |
|         CHECK(bmp2.GetWidth() == 32);
 | |
|         CHECK(bmp2.GetHeight() == 32);
 | |
| 
 | |
|         idx = il.Add(bmpRGBA, *wxRED);
 | |
|         CHECK(il.GetImageCount() == 3);
 | |
|         wxBitmap bmp3 = il.GetBitmap(idx);
 | |
|         CHECK(bmp3.HasAlpha() == false);
 | |
|         CHECK(bmp3.GetMask() != NULL);
 | |
|         CHECK(bmp3.GetWidth() == 32);
 | |
|         CHECK(bmp3.GetHeight() == 32);
 | |
|     }
 | |
| 
 | |
|     SECTION("Add icon to list")
 | |
|     {
 | |
|         il.RemoveAll();
 | |
|         int idx = il.Add(ico);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
|         wxIcon icon1 = il.GetIcon(idx);
 | |
|         CHECK(icon1.GetWidth() == 32);
 | |
|         CHECK(icon1.GetHeight() == 32);
 | |
|     }
 | |
| 
 | |
|     SECTION("Replace with RGB image")
 | |
|     {
 | |
|         il.RemoveAll();
 | |
|         int idx1 = il.Add(bmpRGBA);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
|         int idx2 = il.Add(bmpRGBAWithMask);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         il.Replace(idx1, bmpRGB);
 | |
|         il.Replace(idx2, bmpRGBWithMask);
 | |
| 
 | |
|         wxBitmap bmp1 = il.GetBitmap(idx1);
 | |
|         CHECK(bmp1.HasAlpha() == false);
 | |
|         CHECK(bmp1.GetMask() != NULL);
 | |
|         CHECK(bmp1.GetWidth() == 32);
 | |
|         CHECK(bmp1.GetHeight() == 32);
 | |
| 
 | |
|         wxBitmap bmp2 = il.GetBitmap(idx2);
 | |
|         CHECK(bmp2.HasAlpha() == false);
 | |
|         CHECK(bmp2.GetMask() != NULL);
 | |
|         CHECK(bmp2.GetWidth() == 32);
 | |
|         CHECK(bmp2.GetHeight() == 32);
 | |
|     }
 | |
| 
 | |
|     SECTION("Replace with RGBA image")
 | |
|     {
 | |
|         il.RemoveAll();
 | |
|         int idx1 = il.Add(bmpRGB);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
|         int idx2 = il.Add(bmpRGBWithMask);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         il.Replace(idx1, bmpRGBA);
 | |
|         il.Replace(idx2, bmpRGBAWithMask);
 | |
| 
 | |
|         wxBitmap bmp1 = il.GetBitmap(idx1);
 | |
|         CHECK(bmp1.HasAlpha() == false);
 | |
|         CHECK(bmp1.GetMask() != NULL);
 | |
|         CHECK(bmp1.GetWidth() == 32);
 | |
|         CHECK(bmp1.GetHeight() == 32);
 | |
| 
 | |
|         wxBitmap bmp2 = il.GetBitmap(idx2);
 | |
|         CHECK(bmp2.HasAlpha() == false);
 | |
|         CHECK(bmp2.GetMask() != NULL);
 | |
|         CHECK(bmp2.GetWidth() == 32);
 | |
|         CHECK(bmp2.GetHeight() == 32);
 | |
|     }
 | |
| 
 | |
|     SECTION("Add images with incompatible sizes")
 | |
|     {
 | |
|         il.RemoveAll();
 | |
|         wxSize sz = il.GetSize();
 | |
| 
 | |
|         wxBitmap bmpSmallerW(sz.GetWidth() / 2, sz.GetHeight(), 24);
 | |
|         {
 | |
|             wxMemoryDC mdc(bmpSmallerW);
 | |
|             mdc.SetBackground(*wxBLUE_BRUSH);
 | |
|             mdc.Clear();
 | |
|         }
 | |
|         REQUIRE(bmpSmallerW.IsOk());
 | |
| 
 | |
|         wxBitmap bmpSmallerH(sz.GetWidth(), sz.GetHeight() / 2, 24);
 | |
|         {
 | |
|             wxMemoryDC mdc(bmpSmallerH);
 | |
|             mdc.SetBackground(*wxBLUE_BRUSH);
 | |
|             mdc.Clear();
 | |
|         }
 | |
|         REQUIRE(bmpSmallerH.IsOk());
 | |
| 
 | |
|         wxBitmap bmpSmallerWH(sz.GetWidth() / 2, sz.GetHeight() / 2, 24);
 | |
|         {
 | |
|             wxMemoryDC mdc(bmpSmallerWH);
 | |
|             mdc.SetBackground(*wxBLUE_BRUSH);
 | |
|             mdc.Clear();
 | |
|         }
 | |
|         REQUIRE(bmpSmallerWH.IsOk());
 | |
| 
 | |
|         wxBitmap bmpBiggerW(sz.GetWidth() * 3 / 2, sz.GetHeight(), 24);
 | |
|         {
 | |
|             wxMemoryDC mdc(bmpBiggerW);
 | |
|             mdc.SetBackground(*wxBLUE_BRUSH);
 | |
|             mdc.Clear();
 | |
|         }
 | |
|         REQUIRE(bmpBiggerW.IsOk());
 | |
| 
 | |
|         wxBitmap bmpBiggerW2x(sz.GetWidth() * 2, sz.GetHeight(), 24);
 | |
|         {
 | |
|             wxMemoryDC mdc(bmpBiggerW2x);
 | |
|             mdc.SetBackground(*wxBLUE_BRUSH);
 | |
|             mdc.Clear();
 | |
|         }
 | |
|         REQUIRE(bmpBiggerW2x.IsOk());
 | |
| 
 | |
|         wxBitmap bmpBiggerH(sz.GetWidth(), sz.GetHeight() * 3 / 2, 24);
 | |
|         {
 | |
|             wxMemoryDC mdc(bmpBiggerH);
 | |
|             mdc.SetBackground(*wxBLUE_BRUSH);
 | |
|             mdc.Clear();
 | |
|         }
 | |
|         REQUIRE(bmpBiggerH.IsOk());
 | |
| 
 | |
|         wxBitmap bmpBiggerH2x(sz.GetWidth(), sz.GetHeight() * 2, 24);
 | |
|         {
 | |
|             wxMemoryDC mdc(bmpBiggerH2x);
 | |
|             mdc.SetBackground(*wxBLUE_BRUSH);
 | |
|             mdc.Clear();
 | |
|         }
 | |
|         REQUIRE(bmpBiggerH2x.IsOk());
 | |
| 
 | |
|         wxBitmap bmpBiggerWH(sz.GetWidth() * 3 / 2, sz.GetHeight() * 3 / 2, 24);
 | |
|         {
 | |
|             wxMemoryDC mdc(bmpBiggerWH);
 | |
|             mdc.SetBackground(*wxBLUE_BRUSH);
 | |
|             mdc.Clear();
 | |
|         }
 | |
|         REQUIRE(bmpBiggerWH.IsOk());
 | |
| 
 | |
|         wxBitmap bmpBiggerWH2x(sz.GetWidth() * 2, sz.GetHeight() * 2, 24);
 | |
|         {
 | |
|             wxMemoryDC mdc(bmpBiggerWH2x);
 | |
|             mdc.SetBackground(*wxBLUE_BRUSH);
 | |
|             mdc.Clear();
 | |
|         }
 | |
|         REQUIRE(bmpBiggerWH2x.IsOk());
 | |
| 
 | |
|         // Adding
 | |
|         int cnt = il.GetImageCount();
 | |
|         int idx = il.Add(bmpSmallerW);
 | |
|         CHECK(idx == -1);
 | |
|         CHECK(il.GetImageCount() == cnt);
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         idx = il.Add(bmpSmallerH);
 | |
|         CHECK(idx >= 0);
 | |
|         CHECK(il.GetImageCount() == cnt + 1);
 | |
|         wxBitmap bmp = il.GetBitmap(idx);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         idx = il.Add(bmpSmallerWH);
 | |
|         CHECK(idx == -1);
 | |
|         CHECK(il.GetImageCount() == cnt);
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         idx = il.Add(bmpBiggerW);
 | |
|         CHECK(idx >= 0);
 | |
|         CHECK(il.GetImageCount() == cnt + 1);
 | |
|         bmp = il.GetBitmap(idx);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         idx = il.Add(bmpBiggerW2x);
 | |
|         CHECK(idx >= 0);
 | |
|         CHECK(il.GetImageCount() == cnt + 2);
 | |
|         bmp = il.GetBitmap(idx);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         idx = il.Add(bmpBiggerH);
 | |
|         CHECK(idx >= 0);
 | |
|         CHECK(il.GetImageCount() == cnt + 1);
 | |
|         bmp = il.GetBitmap(idx);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         idx = il.Add(bmpBiggerH2x);
 | |
|         CHECK(idx >= 0);
 | |
|         CHECK(il.GetImageCount() == cnt + 1);
 | |
|         bmp = il.GetBitmap(idx);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         idx = il.Add(bmpBiggerWH);
 | |
|         CHECK(idx >= 0);
 | |
|         CHECK(il.GetImageCount() == cnt + 1);
 | |
|         bmp = il.GetBitmap(idx);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         idx = il.Add(bmpBiggerWH2x);
 | |
|         CHECK(idx >= 0);
 | |
|         CHECK(il.GetImageCount() == cnt + 2);
 | |
|         bmp = il.GetBitmap(idx);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         // Replacing
 | |
|         il.RemoveAll();
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         bool ok = il.Replace(0, bmpRGBA);
 | |
|         CHECK(ok == false);
 | |
|         CHECK(il.GetImageCount() == cnt);
 | |
| 
 | |
|         // List with 1 image
 | |
|         idx = il.Add(bmpRGB);
 | |
|         CHECK(idx >= 0);
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         ok = il.Replace(0, bmpRGBA);
 | |
|         CHECK(ok == true);
 | |
|         CHECK(il.GetImageCount() == cnt);
 | |
|         bmp = il.GetBitmap(0);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         ok = il.Replace(0, bmpSmallerW);
 | |
|         CHECK(ok == true);
 | |
|         CHECK(il.GetImageCount() == cnt);
 | |
|         bmp = il.GetBitmap(0);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         ok = il.Replace(0, bmpSmallerH);
 | |
|         CHECK(ok == true);
 | |
|         CHECK(il.GetImageCount() == cnt);
 | |
|         bmp = il.GetBitmap(0);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         ok = il.Replace(0, bmpSmallerWH);
 | |
|         CHECK(ok == true);
 | |
|         CHECK(il.GetImageCount() == cnt);
 | |
|         bmp = il.GetBitmap(0);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         ok = il.Replace(0, bmpBiggerW);
 | |
|         CHECK(ok == true);
 | |
|         CHECK(il.GetImageCount() == cnt);
 | |
|         bmp = il.GetBitmap(0);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         ok = il.Replace(0, bmpBiggerW2x);
 | |
|         CHECK(ok == true);
 | |
|         CHECK(il.GetImageCount() == cnt);
 | |
|         bmp = il.GetBitmap(0);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         ok = il.Replace(0, bmpBiggerH);
 | |
|         CHECK(ok == true);
 | |
|         CHECK(il.GetImageCount() == cnt);
 | |
|         bmp = il.GetBitmap(0);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         ok = il.Replace(0, bmpBiggerH2x);
 | |
|         CHECK(ok == true);
 | |
|         CHECK(il.GetImageCount() == cnt);
 | |
|         bmp = il.GetBitmap(0);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         ok = il.Replace(0, bmpBiggerWH);
 | |
|         CHECK(ok == true);
 | |
|         CHECK(il.GetImageCount() == cnt);
 | |
|         bmp = il.GetBitmap(0);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
| 
 | |
|         cnt = il.GetImageCount();
 | |
|         ok = il.Replace(0, bmpBiggerWH2x);
 | |
|         CHECK(ok == true);
 | |
|         CHECK(il.GetImageCount() == cnt);
 | |
|         bmp = il.GetBitmap(0);
 | |
|         CHECK(bmp.GetWidth() == sz.GetWidth());
 | |
|         CHECK(bmp.GetHeight() == sz.GetHeight());
 | |
|     }
 | |
| }
 | |
| 
 | |
| TEST_CASE("ImageList:NoMask", "[imagelist][nomask]")
 | |
| {
 | |
|     wxInitAllImageHandlers();
 | |
| 
 | |
|     wxBitmap bmpRGB(32, 32, 24);
 | |
|     {
 | |
|         wxMemoryDC mdc(bmpRGB);
 | |
|         mdc.SetBackground(*wxBLUE_BRUSH);
 | |
|         mdc.Clear();
 | |
|         mdc.SetBrush(*wxRED_BRUSH);
 | |
|         mdc.DrawRectangle(4, 4, 24, 24);
 | |
|     }
 | |
|     REQUIRE(bmpRGB.IsOk());
 | |
| 
 | |
|     wxBitmap bmpRGBA;
 | |
|     bmpRGBA.LoadFile("image/wx.png", wxBITMAP_TYPE_PNG);
 | |
|     REQUIRE(bmpRGBA.IsOk());
 | |
| 
 | |
|     wxBitmap bmpMask(32, 32, 1);
 | |
|     {
 | |
|         wxMemoryDC mdc(bmpMask);
 | |
| #if wxUSE_GRAPHICS_CONTEXT
 | |
|         wxGraphicsContext* gc = mdc.GetGraphicsContext();
 | |
|         if ( gc )
 | |
|             gc->SetAntialiasMode(wxANTIALIAS_NONE);
 | |
| #endif //wxUSE_GRAPHICS_CONTEXT
 | |
|         mdc.SetBackground(*wxBLACK_BRUSH);
 | |
|         mdc.Clear();
 | |
|         mdc.SetBrush(*wxWHITE_BRUSH);
 | |
|         mdc.DrawRectangle(0, 0, 16, 32);
 | |
|     }
 | |
| 
 | |
|     wxBitmap bmpRGBWithMask(bmpRGB);
 | |
|     bmpRGBWithMask.SetMask(new wxMask(bmpMask));
 | |
|     REQUIRE(bmpRGBWithMask.IsOk());
 | |
| 
 | |
|     wxBitmap bmpRGBAWithMask(bmpRGBA);
 | |
|     bmpRGBAWithMask.SetMask(new wxMask(bmpMask));
 | |
|     REQUIRE(bmpRGBAWithMask.IsOk());
 | |
| 
 | |
|     wxIcon ico;
 | |
|     ico.LoadFile("image/wx.ico", wxBITMAP_TYPE_ICO);
 | |
|     REQUIRE(ico.IsOk());
 | |
| 
 | |
|     REQUIRE(bmpRGB.HasAlpha() == false);
 | |
|     REQUIRE(bmpRGB.GetMask() == NULL);
 | |
| 
 | |
|     REQUIRE(bmpRGBWithMask.HasAlpha() == false);
 | |
|     REQUIRE(bmpRGBWithMask.GetMask() != NULL);
 | |
| 
 | |
|     REQUIRE(bmpRGBA.HasAlpha() == true);
 | |
|     REQUIRE(bmpRGBA.GetMask() == NULL);
 | |
| 
 | |
|     REQUIRE(bmpRGBAWithMask.HasAlpha() == true);
 | |
|     REQUIRE(bmpRGBAWithMask.GetMask() != NULL);
 | |
| 
 | |
|     wxImageList il(32, 32, false);
 | |
| 
 | |
|     SECTION("Add RGB image to list")
 | |
|     {
 | |
|         il.RemoveAll();
 | |
|         int idx = il.Add(bmpRGB);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
|         wxBitmap bmp1 = il.GetBitmap(idx);
 | |
|         CHECK(bmp1.HasAlpha() == false);
 | |
|         CHECK(bmp1.GetMask() == NULL);
 | |
|         CHECK(bmp1.GetWidth() == 32);
 | |
|         CHECK(bmp1.GetHeight() == 32);
 | |
| 
 | |
|         idx = il.Add(bmpRGBWithMask);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
|         wxBitmap bmp2 = il.GetBitmap(idx);
 | |
|         CHECK(bmp2.HasAlpha() == true);
 | |
|         CHECK(bmp2.GetMask() == NULL);
 | |
|         CHECK(bmp2.GetWidth() == 32);
 | |
|         CHECK(bmp2.GetHeight() == 32);
 | |
| 
 | |
|         idx = il.Add(bmpRGB, *wxRED);
 | |
|         CHECK(il.GetImageCount() == 3);
 | |
|         wxBitmap bmp3 = il.GetBitmap(idx);
 | |
|         CHECK(bmp3.HasAlpha() == true);
 | |
|         CHECK(bmp3.GetMask() == NULL);
 | |
|         CHECK(bmp3.GetWidth() == 32);
 | |
|         CHECK(bmp3.GetHeight() == 32);
 | |
|     }
 | |
| 
 | |
|     SECTION("Add RGBA image to list")
 | |
|     {
 | |
|         il.RemoveAll();
 | |
|         int idx = il.Add(bmpRGBA);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
|         wxBitmap bmp1 = il.GetBitmap(idx);
 | |
|         CHECK(bmp1.HasAlpha() == true);
 | |
|         CHECK(bmp1.GetMask() == NULL);
 | |
|         CHECK(bmp1.GetWidth() == 32);
 | |
|         CHECK(bmp1.GetHeight() == 32);
 | |
| 
 | |
|         idx = il.Add(bmpRGBAWithMask);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
|         wxBitmap bmp2 = il.GetBitmap(idx);
 | |
|         CHECK(bmp2.HasAlpha() == true);
 | |
|         CHECK(bmp2.GetMask() == NULL);
 | |
|         CHECK(bmp2.GetWidth() == 32);
 | |
|         CHECK(bmp2.GetHeight() == 32);
 | |
| 
 | |
|         idx = il.Add(bmpRGBA, *wxRED);
 | |
|         CHECK(il.GetImageCount() == 3);
 | |
|         wxBitmap bmp3 = il.GetBitmap(idx);
 | |
|         CHECK(bmp3.HasAlpha() == true);
 | |
|         CHECK(bmp3.GetMask() == NULL);
 | |
|         CHECK(bmp3.GetWidth() == 32);
 | |
|         CHECK(bmp3.GetHeight() == 32);
 | |
|     }
 | |
| 
 | |
|     SECTION("Add icon to list")
 | |
|     {
 | |
|         il.RemoveAll();
 | |
|         int idx = il.Add(ico);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
|         wxIcon icon1 = il.GetIcon(idx);
 | |
|         CHECK(icon1.GetWidth() == 32);
 | |
|         CHECK(icon1.GetHeight() == 32);
 | |
|     }
 | |
| 
 | |
|     SECTION("Replace with RGB image")
 | |
|     {
 | |
|         il.RemoveAll();
 | |
|         int idx1 = il.Add(bmpRGBA);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
|         int idx2 = il.Add(bmpRGBAWithMask);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         il.Replace(idx1, bmpRGB);
 | |
|         il.Replace(idx2, bmpRGBWithMask);
 | |
| 
 | |
|         wxBitmap bmp1 = il.GetBitmap(idx1);
 | |
|         CHECK(bmp1.HasAlpha() == false);
 | |
|         CHECK(bmp1.GetMask() == NULL);
 | |
|         CHECK(bmp1.GetWidth() == 32);
 | |
|         CHECK(bmp1.GetHeight() == 32);
 | |
| 
 | |
|         wxBitmap bmp2 = il.GetBitmap(idx2);
 | |
|         CHECK(bmp2.HasAlpha() == true);
 | |
|         CHECK(bmp2.GetMask() == NULL);
 | |
|         CHECK(bmp2.GetWidth() == 32);
 | |
|         CHECK(bmp2.GetHeight() == 32);
 | |
|     }
 | |
| 
 | |
|     SECTION("Replace with RGBA image")
 | |
|     {
 | |
|         il.RemoveAll();
 | |
|         int idx1 = il.Add(bmpRGB);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
|         int idx2 = il.Add(bmpRGBWithMask);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         il.Replace(idx1, bmpRGBA);
 | |
|         il.Replace(idx2, bmpRGBAWithMask);
 | |
| 
 | |
|         wxBitmap bmp1 = il.GetBitmap(idx1);
 | |
|         CHECK(bmp1.HasAlpha() == true);
 | |
|         CHECK(bmp1.GetMask() == NULL);
 | |
|         CHECK(bmp1.GetWidth() == 32);
 | |
|         CHECK(bmp1.GetHeight() == 32);
 | |
| 
 | |
|         wxBitmap bmp2 = il.GetBitmap(idx2);
 | |
|         CHECK(bmp2.HasAlpha() == true);
 | |
|         CHECK(bmp2.GetMask() == NULL);
 | |
|         CHECK(bmp2.GetWidth() == 32);
 | |
|         CHECK(bmp2.GetHeight() == 32);
 | |
|     }
 | |
| }
 | |
| 
 | |
| TEST_CASE("ImageList:NegativeTests", "[imagelist][negative]")
 | |
| {
 | |
|     wxBitmap bmp(32, 32, 24);
 | |
|     {
 | |
|         wxMemoryDC mdc(bmp);
 | |
|         mdc.SetBackground(*wxBLUE_BRUSH);
 | |
|         mdc.Clear();
 | |
|         mdc.SetBrush(*wxRED_BRUSH);
 | |
|         mdc.DrawRectangle(4, 4, 24, 24);
 | |
|     }
 | |
|     REQUIRE(bmp.IsOk());
 | |
| 
 | |
|     SECTION("Invalid size (negative)")
 | |
|     {
 | |
|         wxImageList il;
 | |
|         bool ok = il.Create(-1, -1);
 | |
|         CHECK_FALSE(ok);
 | |
| #ifdef __WXDEBUG__
 | |
|         REQUIRE_THROWS(il.GetImageCount());
 | |
| #else
 | |
|         CHECK(il.GetImageCount() == 0);
 | |
| #endif
 | |
| 
 | |
|         wxSize sz = il.GetSize();
 | |
|         CHECK(sz.x == 0);
 | |
|         CHECK(sz.y == 0);
 | |
| 
 | |
|         int w = -1;
 | |
|         int h = -1;
 | |
| #ifdef __WXDEBUG__
 | |
|         REQUIRE_THROWS(il.GetSize(0, w, h));
 | |
| #else
 | |
|         ok = il.GetSize(0, w, h);
 | |
|         CHECK_FALSE(ok);
 | |
|         CHECK(w == 0);
 | |
|         CHECK(h == 0);
 | |
| #endif
 | |
| 
 | |
|         int idx = il.Add(bmp);
 | |
|         CHECK(idx == -1);
 | |
| #ifdef __WXDEBUG__
 | |
|         REQUIRE_THROWS(il.GetImageCount());
 | |
| #else
 | |
|         CHECK(il.GetImageCount() == 0);
 | |
| #endif
 | |
|     }
 | |
| 
 | |
|     SECTION("Invalid size (zero)")
 | |
|     {
 | |
|         wxImageList il;
 | |
|         bool ok = il.Create(0, 0);
 | |
|         CHECK_FALSE(ok);
 | |
| #ifdef __WXDEBUG__
 | |
|         REQUIRE_THROWS(il.GetImageCount());
 | |
| #else
 | |
|         CHECK(il.GetImageCount() == 0);
 | |
| #endif
 | |
| 
 | |
|         wxSize sz = il.GetSize();
 | |
|         CHECK(sz.x == 0);
 | |
|         CHECK(sz.y == 0);
 | |
| 
 | |
|         int w = -1;
 | |
|         int h = -1;
 | |
| #ifdef __WXDEBUG__
 | |
|         REQUIRE_THROWS(ok = il.GetSize(0, w, h));
 | |
| #else
 | |
|         ok = il.GetSize(0, w, h);
 | |
|         CHECK_FALSE(ok);
 | |
|         CHECK(w == 0);
 | |
|         CHECK(h == 0);
 | |
| #endif
 | |
| 
 | |
|         int idx = il.Add(bmp);
 | |
|         CHECK(idx == -1);
 | |
| #ifdef __WXDEBUG__
 | |
|         REQUIRE_THROWS(il.GetImageCount());
 | |
| #else
 | |
|         CHECK(il.GetImageCount() == 0);
 | |
| #endif
 | |
| 
 | |
|         ok = il.Replace(0, bmp);
 | |
|         CHECK_FALSE(ok);
 | |
| #ifdef __WXDEBUG__
 | |
|         REQUIRE_THROWS(il.GetImageCount());
 | |
| #else
 | |
|         CHECK(il.GetImageCount() == 0);
 | |
| #endif
 | |
|     }
 | |
| 
 | |
|     SECTION("Invalid Get/Replace/Remove indices")
 | |
|     {
 | |
|         wxImageList il(32, 32, false);
 | |
|         CHECK(il.GetImageCount() == 0);
 | |
| 
 | |
|         wxSize sz = il.GetSize();
 | |
|         CHECK(sz.x == 32);
 | |
|         CHECK(sz.y == 32);
 | |
| 
 | |
|         int w = -1;
 | |
|         int h = -1;
 | |
|         bool ok = il.GetSize(0, w, h);
 | |
|         CHECK(ok == true);
 | |
|         CHECK(w == 32);
 | |
|         CHECK(h == 32);
 | |
| 
 | |
|         int idx = il.Add(bmp);
 | |
|         CHECK(idx == 0);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         wxBitmap bmp2 = il.GetBitmap(-1);
 | |
|         CHECK_FALSE(bmp2.IsOk());
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         wxBitmap bmp3 = il.GetBitmap(5);
 | |
|         CHECK_FALSE(bmp3.IsOk());
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         wxIcon icon2 = il.GetIcon(-1);
 | |
|         CHECK_FALSE(icon2.IsOk());
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         wxBitmap icon3 = il.GetIcon(5);
 | |
|         CHECK_FALSE(icon3.IsOk());
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         ok = il.Replace(-1, bmp);
 | |
|         CHECK_FALSE(ok);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         ok = il.Replace(5, bmp);
 | |
|         CHECK_FALSE(ok);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         ok = il.Remove(-1);
 | |
|         CHECK_FALSE(ok);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         ok = il.Remove(5);
 | |
|         CHECK_FALSE(ok);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
|     }
 | |
| }
 | |
| 
 | |
| TEST_CASE("ImageList:HiDPI", "[imagelist][hidpi]")
 | |
| {
 | |
| #if defined(__WXMSW__)  || ( defined(__WXGTK20__) && !defined(__WXGTK3__) )
 | |
| 
 | |
|     WARN("Skipping HiDPI image tests known not to work in wxMSW and wxGTK2.");
 | |
| #else
 | |
|     wxImage img(16, 8);
 | |
|     img.SetRGB(wxRect(0, 0, 16, 8), 255, 128, 64);
 | |
|     REQUIRE(img.IsOk());
 | |
| 
 | |
|     wxBitmap bmp1x(img, -1, 1.0);
 | |
|     REQUIRE(bmp1x.IsOk());
 | |
|     CHECK(bmp1x.GetWidth() == 16);
 | |
|     CHECK(bmp1x.GetHeight() == 8);
 | |
|     CHECK(bmp1x.GetScaledWidth() == 16);
 | |
|     CHECK(bmp1x.GetScaledHeight() == 8);
 | |
|     CHECK_FALSE(bmp1x.HasAlpha());
 | |
|     CHECK(bmp1x.GetMask() == NULL);
 | |
| 
 | |
|     wxBitmap bmp2x(img, -1, 2.0);
 | |
|     REQUIRE(bmp2x.IsOk());
 | |
|     CHECK(bmp2x.GetWidth() == 16);
 | |
|     CHECK(bmp2x.GetHeight() == 8);
 | |
|     CHECK(bmp2x.GetScaledWidth() == 8);
 | |
|     CHECK(bmp2x.GetScaledHeight() == 4);
 | |
|     CHECK_FALSE(bmp2x.HasAlpha());
 | |
|     CHECK(bmp2x.GetMask() == NULL);
 | |
| 
 | |
|     SECTION("Add images 2x to the list 2x")
 | |
|     {
 | |
|         // Logical image size
 | |
|         wxImageList il(8, 4, false);
 | |
| 
 | |
|         int idx = il.Add(bmp2x);
 | |
|         CHECK(idx == 0);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         idx = il.Add(bmp1x);
 | |
|         CHECK(idx == -1);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         idx = il.Add(bmp2x);
 | |
|         CHECK(idx == 1);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         idx = il.Add(bmp1x);
 | |
|         CHECK(idx == -1);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         wxBitmap bmp = il.GetBitmap(1);
 | |
|         CHECK(bmp.IsOk() == true);
 | |
|         CHECK(bmp.GetScaleFactor() == 2.0);
 | |
|         CHECK(bmp.GetScaledWidth() == 8);
 | |
|         CHECK(bmp.GetScaledHeight() == 4);
 | |
|         CHECK(bmp.GetWidth() == 16);
 | |
|         CHECK(bmp.GetHeight() == 8);
 | |
|         CHECK_FALSE(bmp.HasAlpha());
 | |
|         CHECK(bmp.GetMask() == NULL);
 | |
|     }
 | |
| 
 | |
|     SECTION("Add images 2x to the list 1x")
 | |
|     {
 | |
|         // Logical image size
 | |
|         wxImageList il(16, 8, false);
 | |
| 
 | |
|         int idx = il.Add(bmp1x);
 | |
|         CHECK(idx == 0);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         idx = il.Add(bmp2x);
 | |
|         CHECK(idx == -1);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         idx = il.Add(bmp1x);
 | |
|         CHECK(idx == 1);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         idx = il.Add(bmp2x);
 | |
|         CHECK(idx == -1);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         wxBitmap bmp = il.GetBitmap(1);
 | |
|         CHECK(bmp.IsOk() == true);
 | |
|         CHECK(bmp.GetScaleFactor() == 1.0);
 | |
|         CHECK(bmp.GetScaledWidth() == 16);
 | |
|         CHECK(bmp.GetScaledHeight() == 8);
 | |
|         CHECK(bmp.GetWidth() == 16);
 | |
|         CHECK(bmp.GetHeight() == 8);
 | |
|         CHECK_FALSE(bmp.HasAlpha());
 | |
|         CHECK(bmp.GetMask() == NULL);
 | |
|     }
 | |
| 
 | |
|     SECTION("Replaces images in the list 2x")
 | |
|     {
 | |
|         // Logical image size
 | |
|         wxImageList il(8, 4, false);
 | |
| 
 | |
|         int idx = il.Add(bmp2x);
 | |
|         CHECK(idx == 0);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         idx = il.Add(bmp2x);
 | |
|         CHECK(idx == 1);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         bool ok = il.Replace(1, bmp1x);
 | |
|         CHECK_FALSE(ok);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         ok = il.Replace(0, bmp2x);
 | |
|         CHECK(ok == true);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         wxBitmap bmp = il.GetBitmap(0);
 | |
|         CHECK(bmp.IsOk() == true);
 | |
|         CHECK(bmp.GetScaleFactor() == 2.0);
 | |
|         CHECK(bmp.GetScaledWidth() == 8);
 | |
|         CHECK(bmp.GetScaledHeight() == 4);
 | |
|         CHECK(bmp.GetWidth() == 16);
 | |
|         CHECK(bmp.GetHeight() == 8);
 | |
|         CHECK_FALSE(bmp.HasAlpha());
 | |
|         CHECK(bmp.GetMask() == NULL);
 | |
|     }
 | |
| 
 | |
|     SECTION("Replaces images in the list 1x")
 | |
|     {
 | |
|         // Logical image size
 | |
|         wxImageList il(16, 8, false);
 | |
| 
 | |
|         int idx = il.Add(bmp1x);
 | |
|         CHECK(idx == 0);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         idx = il.Add(bmp1x);
 | |
|         CHECK(idx == 1);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         bool ok = il.Replace(1, bmp2x);
 | |
|         CHECK_FALSE(ok);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         ok = il.Replace(0, bmp1x);
 | |
|         CHECK(ok == true);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         wxBitmap bmp = il.GetBitmap(0);
 | |
|         CHECK(bmp.GetScaleFactor() == 1.0);
 | |
|         CHECK(bmp.GetScaledWidth() == 16);
 | |
|         CHECK(bmp.GetScaledHeight() == 8);
 | |
|         CHECK(bmp.GetWidth() == 16);
 | |
|         CHECK(bmp.GetHeight() == 8);
 | |
|         CHECK_FALSE(bmp.HasAlpha());
 | |
|         CHECK(bmp.GetMask() == NULL);
 | |
|     }
 | |
| 
 | |
|     SECTION("Changes list 1x to 2x")
 | |
|     {
 | |
|         wxImage img2(32, 16);
 | |
|         img2.SetRGB(wxRect(0, 0, 32, 16), 255, 128, 64);
 | |
|         REQUIRE(img2.IsOk());
 | |
| 
 | |
|         wxBitmap bmp2x2(img2, -1, 2.0);
 | |
|         REQUIRE(bmp2x2.IsOk());
 | |
|         CHECK(bmp2x2.GetWidth() == 32);
 | |
|         CHECK(bmp2x2.GetHeight() == 16);
 | |
|         CHECK(bmp2x2.GetScaledWidth() == 16);
 | |
|         CHECK(bmp2x2.GetScaledHeight() == 8);
 | |
|         CHECK(bmp2x2.HasAlpha() == false);
 | |
|         CHECK(bmp2x2.GetMask() == NULL);
 | |
| 
 | |
|         // Logical image size
 | |
|         wxImageList il(16, 8, false);
 | |
| 
 | |
|         // Now it should be the list with 1x images
 | |
|         int idx = il.Add(bmp1x);
 | |
|         CHECK(idx == 0);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         idx = il.Add(bmp1x);
 | |
|         CHECK(idx == 1);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         idx = il.Add(bmp2x2);
 | |
|         CHECK(idx == -1);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         wxBitmap bmp = il.GetBitmap(0);
 | |
|         CHECK(bmp.GetScaleFactor() == 1.0);
 | |
|         CHECK(bmp.GetScaledWidth() == 16);
 | |
|         CHECK(bmp.GetScaledHeight() == 8);
 | |
|         CHECK(bmp.GetWidth() == 16);
 | |
|         CHECK(bmp.GetHeight() == 8);
 | |
|         CHECK_FALSE(bmp.HasAlpha());
 | |
|         CHECK(bmp.GetMask() == NULL);
 | |
| 
 | |
|         il.RemoveAll();
 | |
| 
 | |
|         // Now it should be the list with 2x images (the same logical size 16x8)
 | |
|         idx = il.Add(bmp2x2);
 | |
|         CHECK(idx == 0);
 | |
|         CHECK(il.GetImageCount() == 1);
 | |
| 
 | |
|         idx = il.Add(bmp2x2);
 | |
|         CHECK(idx == 1);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         idx = il.Add(bmp1x);
 | |
|         CHECK(idx == -1);
 | |
|         CHECK(il.GetImageCount() == 2);
 | |
| 
 | |
|         bmp = il.GetBitmap(0);
 | |
|         CHECK(bmp.GetScaleFactor() == 2.0);
 | |
|         CHECK(bmp.GetScaledWidth() == 16);
 | |
|         CHECK(bmp.GetScaledHeight() == 8);
 | |
|         CHECK(bmp.GetWidth() == 32);
 | |
|         CHECK(bmp.GetHeight() == 16);
 | |
|         CHECK_FALSE(bmp.HasAlpha());
 | |
|         CHECK(bmp.GetMask() == NULL);
 | |
|     }
 | |
| #endif // !__WXMSW__
 | |
| }
 |