]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/wxMask.py
   2 from wxPython
.wx 
import * 
   4 #---------------------------------------------------------------------- 
   8     ('wxAND_INVERT', wxAND_INVERT
), 
   9     ('wxAND_REVERSE', wxAND_REVERSE
), 
  13     ('wxINVERT', wxINVERT
), 
  16     # this one causes an assert on wxGTK, and doesn't seem to 
  17     # do much on MSW anyway, so I'll just take it out.... 
  22     ('wxOR_INVERT', wxOR_INVERT
), 
  23     ('wxOR_REVERSE', wxOR_REVERSE
), 
  25     ('wxSRC_INVERT', wxSRC_INVERT
), 
  31 class TestMaskWindow(wxScrolledWindow
): 
  32     def __init__(self
, parent
): 
  33         wxScrolledWindow
.__init
__(self
, parent
, -1) 
  34         self
.SetBackgroundColour(wxColour(0,128,0)) 
  36         # A reference bitmap that we won't mask 
  37         self
.bmp_nomask  
= images
.getTestStar2Bitmap() 
  40         self
.bmp_withmask  
= images
.getTestStar2Bitmap() 
  42         # this mask comes from a monochrome bitmap 
  43         self
.bmp_themask 
= images
.getTestMaskBitmap() 
  44         self
.bmp_themask
.SetDepth(1) 
  45         mask 
= wxMask(self
.bmp_themask
) 
  47         # set the mask on our bitmap 
  48         self
.bmp_withmask
.SetMask(mask
) 
  50         # Now we'll create a mask in a bit of an easier way, by picking a 
  51         # colour in the image that is to be the transparent colour. 
  52         self
.bmp_withcolourmask  
= images
.getTestStar2Bitmap() 
  53         mask 
= wxMaskColour(self
.bmp_withcolourmask
, wxWHITE
) 
  54         self
.bmp_withcolourmask
.SetMask(mask
) 
  56         self
.SetScrollbars(20, 20, 700/20, 460/20) 
  58         EVT_PAINT(self
, self
.OnPaint
) 
  61     def OnPaint (self
, e
): 
  64         dc
.SetTextForeground(wxWHITE
) 
  66         # make an interesting background... 
  67         dc
.SetPen(wxMEDIUM_GREY_PEN
) 
  69             dc
.DrawLine(0,i
*10,i
*10,0) 
  71         # draw raw image, mask, and masked images 
  72         dc
.DrawText('original image', 0,0) 
  73         dc
.DrawBitmap(self
.bmp_nomask
, 0,20, 0) 
  74         dc
.DrawText('with colour mask', 0,100) 
  75         dc
.DrawBitmap(self
.bmp_withcolourmask
, 0,120, 1) 
  76         dc
.DrawText('the mask image', 0,200) 
  77         dc
.DrawBitmap(self
.bmp_themask
, 0,220, 0) 
  78         dc
.DrawText('masked image', 0,300) 
  79         dc
.DrawBitmap(self
.bmp_withmask
, 0,320, 1) 
  81         cx
,cy 
= self
.bmp_themask
.GetWidth(), self
.bmp_themask
.GetHeight() 
  83         # draw array of assorted blit operations 
  86         for text
, code 
in logicList
: 
  87             x
,y 
= 120+150*(i
%4), 20+100*(i
/4) 
  88             dc
.DrawText(text
, x
, y
-20) 
  89             mdc
.SelectObject(self
.bmp_withcolourmask
) 
  90             dc
.Blit(x
,y
, cx
,cy
, mdc
, 0,0, code
, true
) 
  94 # On wxGTK there needs to be a panel under wxScrolledWindows if they are 
  95 # going to be in a wxNotebook... 
  96 class TestPanel(wxPanel
): 
  97     def __init__(self
, parent
, ID
): 
  98         wxPanel
.__init
__(self
, parent
, ID
) 
  99         self
.win 
= TestMaskWindow(self
) 
 100         EVT_SIZE(self
, self
.OnSize
) 
 102     def OnSize(self
, evt
): 
 103         self
.win
.SetSize(evt
.GetSize()) 
 106 #---------------------------------------------------------------------- 
 108 def runTest(frame
, nb
, log
): 
 109     win 
= TestPanel(nb
, -1) 
 112 #----------------------------------------------------------------------