]> git.saurik.com Git - wxWidgets.git/blame - wxPython/demo/wxMask.py
fixed extraneous scrolling when scrollbars are added/removed (patch 788026; bug 746618)
[wxWidgets.git] / wxPython / demo / wxMask.py
CommitLineData
9b3d3bc4
RD
1
2from wxPython.wx import *
3
4#----------------------------------------------------------------------
5
8e425133
RD
6logicList = [
7 ('wxAND', wxAND),
8 ('wxAND_INVERT', wxAND_INVERT),
9 ('wxAND_REVERSE', wxAND_REVERSE),
10 ('wxCLEAR', wxCLEAR),
11 ('wxCOPY', wxCOPY),
12 ('wxEQUIV', wxEQUIV),
13 ('wxINVERT', wxINVERT),
14 ('wxNAND', wxNAND),
15
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....
18 #('wxNOR', wxNOR),
19
20 ('wxNO_OP', wxNO_OP),
21 ('wxOR', wxOR),
22 ('wxOR_INVERT', wxOR_INVERT),
23 ('wxOR_REVERSE', wxOR_REVERSE),
24 ('wxSET', wxSET),
25 ('wxSRC_INVERT', wxSRC_INVERT),
26 ('wxXOR', wxXOR),
27]
9b3d3bc4 28
96bfd053
RD
29import images
30
9b3d3bc4
RD
31class TestMaskWindow(wxScrolledWindow):
32 def __init__(self, parent):
33 wxScrolledWindow.__init__(self, parent, -1)
34 self.SetBackgroundColour(wxColour(0,128,0))
35
36 # A reference bitmap that we won't mask
96bfd053 37 self.bmp_nomask = images.getTestStar2Bitmap()
9b3d3bc4
RD
38
39 # One that we will
96bfd053 40 self.bmp_withmask = images.getTestStar2Bitmap()
9b3d3bc4
RD
41
42 # this mask comes from a monochrome bitmap
1e4a197e 43 self.bmp_themask = wxBitmapFromImage(images.getTestMaskImage(), 1)
9b3d3bc4
RD
44 mask = wxMask(self.bmp_themask)
45
46 # set the mask on our bitmap
47 self.bmp_withmask.SetMask(mask)
48
49 # Now we'll create a mask in a bit of an easier way, by picking a
50 # colour in the image that is to be the transparent colour.
96bfd053 51 self.bmp_withcolourmask = images.getTestStar2Bitmap()
9b3d3bc4
RD
52 mask = wxMaskColour(self.bmp_withcolourmask, wxWHITE)
53 self.bmp_withcolourmask.SetMask(mask)
54
f6bcfd97 55 self.SetScrollbars(20, 20, 700/20, 460/20)
9b3d3bc4 56
f6bcfd97 57 EVT_PAINT(self, self.OnPaint)
9b3d3bc4
RD
58
59
60 def OnPaint (self, e):
61 dc = wxPaintDC(self)
62 self.PrepareDC(dc)
63 dc.SetTextForeground(wxWHITE)
64
65 # make an interesting background...
66 dc.SetPen(wxMEDIUM_GREY_PEN)
67 for i in range(100):
68 dc.DrawLine(0,i*10,i*10,0)
69
70 # draw raw image, mask, and masked images
71 dc.DrawText('original image', 0,0)
72 dc.DrawBitmap(self.bmp_nomask, 0,20, 0)
73 dc.DrawText('with colour mask', 0,100)
74 dc.DrawBitmap(self.bmp_withcolourmask, 0,120, 1)
75 dc.DrawText('the mask image', 0,200)
76 dc.DrawBitmap(self.bmp_themask, 0,220, 0)
77 dc.DrawText('masked image', 0,300)
78 dc.DrawBitmap(self.bmp_withmask, 0,320, 1)
79
80 cx,cy = self.bmp_themask.GetWidth(), self.bmp_themask.GetHeight()
81
82 # draw array of assorted blit operations
83 mdc = wxMemoryDC()
8e425133
RD
84 i = 0
85 for text, code in logicList:
854862f5
RD
86 x,y = 120+150*(i%4), 20+100*(i/4)
87 dc.DrawText(text, x, y-20)
9b3d3bc4 88 mdc.SelectObject(self.bmp_withcolourmask)
1e4a197e 89 dc.Blit(x,y, cx,cy, mdc, 0,0, code, True)
8e425133 90 i = i + 1
9b3d3bc4
RD
91
92
b166c703
RD
93# On wxGTK there needs to be a panel under wxScrolledWindows if they are
94# going to be in a wxNotebook...
95class TestPanel(wxPanel):
96 def __init__(self, parent, ID):
97 wxPanel.__init__(self, parent, ID)
98 self.win = TestMaskWindow(self)
99 EVT_SIZE(self, self.OnSize)
100
101 def OnSize(self, evt):
102 self.win.SetSize(evt.GetSize())
9b3d3bc4
RD
103
104
105#----------------------------------------------------------------------
106
107def runTest(frame, nb, log):
b166c703 108 win = TestPanel(nb, -1)
9b3d3bc4
RD
109 return win
110
111#----------------------------------------------------------------------
112
113
114
115overview = """\
116"""
1e4a197e
RD
117
118
119
120if __name__ == '__main__':
121 import sys,os
122 import run
123 run.main(['', os.path.basename(sys.argv[0])])
124