Renamed demo modules to be wx-less.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25064 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		
							
								
								
									
										135
									
								
								wxPython/demo/Mask.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										135
									
								
								wxPython/demo/Mask.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,135 @@
 | 
			
		||||
# 11/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
 | 
			
		||||
#
 | 
			
		||||
# o Updated for wx namespace
 | 
			
		||||
# 
 | 
			
		||||
 | 
			
		||||
import  wx
 | 
			
		||||
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
logicList = [
 | 
			
		||||
    ('wx.AND', wx.AND),
 | 
			
		||||
    ('wx.AND_INVERT', wx.AND_INVERT),
 | 
			
		||||
    ('wx.AND_REVERSE', wx.AND_REVERSE),
 | 
			
		||||
    ('wx.CLEAR', wx.CLEAR),
 | 
			
		||||
    ('wx.COPY', wx.COPY),
 | 
			
		||||
    ('wx.EQUIV', wx.EQUIV),
 | 
			
		||||
    ('wx.INVERT', wx.INVERT),
 | 
			
		||||
    ('wx.NAND', wx.NAND),
 | 
			
		||||
 | 
			
		||||
    # this one causes an assert on wxGTK, and doesn't seem to
 | 
			
		||||
    # do much on MSW anyway, so I'll just take it out....
 | 
			
		||||
    #('wxNOR', wxNOR),
 | 
			
		||||
 | 
			
		||||
    ('wx.NO_OP', wx.NO_OP),
 | 
			
		||||
    ('wx.OR', wx.OR),
 | 
			
		||||
    ('wx.OR_INVERT', wx.OR_INVERT),
 | 
			
		||||
    ('wx.OR_REVERSE', wx.OR_REVERSE),
 | 
			
		||||
    ('wx.SET', wx.SET),
 | 
			
		||||
    ('wx.SRC_INVERT', wx.SRC_INVERT),
 | 
			
		||||
    ('wx.XOR', wx.XOR),
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
import images
 | 
			
		||||
 | 
			
		||||
class TestMaskWindow(wx.ScrolledWindow):
 | 
			
		||||
    def __init__(self, parent):
 | 
			
		||||
        wx.ScrolledWindow.__init__(self, parent, -1)
 | 
			
		||||
        self.SetBackgroundColour(wx.Colour(0,128,0))
 | 
			
		||||
 | 
			
		||||
        # A reference bitmap that we won't mask
 | 
			
		||||
        self.bmp_nomask  = images.getTestStar2Bitmap()
 | 
			
		||||
 | 
			
		||||
        # One that we will
 | 
			
		||||
        self.bmp_withmask  = images.getTestStar2Bitmap()
 | 
			
		||||
 | 
			
		||||
        # this mask comes from a monochrome bitmap
 | 
			
		||||
        self.bmp_themask = wx.BitmapFromImage(images.getTestMaskImage(), 1)
 | 
			
		||||
        mask = wx.Mask(self.bmp_themask)
 | 
			
		||||
 | 
			
		||||
        # set the mask on our bitmap
 | 
			
		||||
        self.bmp_withmask.SetMask(mask)
 | 
			
		||||
 | 
			
		||||
        # Now we'll create a mask in a bit of an easier way, by picking a
 | 
			
		||||
        # colour in the image that is to be the transparent colour.
 | 
			
		||||
        self.bmp_withcolourmask  = images.getTestStar2Bitmap()
 | 
			
		||||
        mask = wx.MaskColour(self.bmp_withcolourmask, wx.WHITE)
 | 
			
		||||
        self.bmp_withcolourmask.SetMask(mask)
 | 
			
		||||
 | 
			
		||||
        self.SetScrollbars(20, 20, 700/20, 460/20)
 | 
			
		||||
 | 
			
		||||
        self.Bind(wx.EVT_PAINT, self.OnPaint)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def OnPaint (self, e):
 | 
			
		||||
        dc = wx.PaintDC(self)
 | 
			
		||||
        self.PrepareDC(dc)
 | 
			
		||||
        dc.SetTextForeground(wx.WHITE)
 | 
			
		||||
 | 
			
		||||
        # make an interesting background...
 | 
			
		||||
        dc.SetPen(wx.MEDIUM_GREY_PEN)
 | 
			
		||||
        for i in range(100):
 | 
			
		||||
            dc.DrawLine((0,i*10), (i*10,0))
 | 
			
		||||
 | 
			
		||||
        # draw raw image, mask, and masked images
 | 
			
		||||
        dc.DrawText('original image', (0,0))
 | 
			
		||||
        dc.DrawBitmap(self.bmp_nomask, (0,20), 0)
 | 
			
		||||
        dc.DrawText('with colour mask', (0,100))
 | 
			
		||||
        dc.DrawBitmap(self.bmp_withcolourmask, (0,120), 1)
 | 
			
		||||
        dc.DrawText('the mask image', (0,200))
 | 
			
		||||
        dc.DrawBitmap(self.bmp_themask, (0,220), 0)
 | 
			
		||||
        dc.DrawText('masked image', (0,300))
 | 
			
		||||
        dc.DrawBitmap(self.bmp_withmask, (0,320), 1)
 | 
			
		||||
 | 
			
		||||
        cx,cy = self.bmp_themask.GetWidth(), self.bmp_themask.GetHeight()
 | 
			
		||||
 | 
			
		||||
        # draw array of assorted blit operations
 | 
			
		||||
        mdc = wx.MemoryDC()
 | 
			
		||||
        i = 0
 | 
			
		||||
 | 
			
		||||
        for text, code in logicList:
 | 
			
		||||
            x,y = 120+150*(i%4), 20+100*(i/4)
 | 
			
		||||
            dc.DrawText(text, (x, y-20))
 | 
			
		||||
            mdc.SelectObject(self.bmp_withcolourmask)
 | 
			
		||||
            dc.Blit((x,y), (cx,cy), mdc, (0,0), code, True)
 | 
			
		||||
            i = i + 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# On wxGTK there needs to be a panel under wx.ScrolledWindows if they are
 | 
			
		||||
# going to be in a wxNotebook...
 | 
			
		||||
class TestPanel(wx.Panel):
 | 
			
		||||
    def __init__(self, parent, ID):
 | 
			
		||||
        wx.Panel.__init__(self, parent, ID)
 | 
			
		||||
        self.win = TestMaskWindow(self)
 | 
			
		||||
        self.Bind(wx.EVT_SIZE, self.OnSize)
 | 
			
		||||
 | 
			
		||||
    def OnSize(self, evt):
 | 
			
		||||
        self.win.SetSize(evt.GetSize())
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
def runTest(frame, nb, log):
 | 
			
		||||
    win = TestPanel(nb, -1)
 | 
			
		||||
    return win
 | 
			
		||||
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
overview = """\
 | 
			
		||||
This class encapsulates a monochrome mask bitmap, where the masked area is black 
 | 
			
		||||
and the unmasked area is white. When associated with a bitmap and drawn in a device 
 | 
			
		||||
context, the unmasked area of the bitmap will be drawn, and the masked area will 
 | 
			
		||||
not be drawn.
 | 
			
		||||
 | 
			
		||||
This example shows not only how to create a Mask, but the effects of the Device
 | 
			
		||||
Context (dc) <code>Blit()</code> method's logic codes.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    import sys,os
 | 
			
		||||
    import run
 | 
			
		||||
    run.main(['', os.path.basename(sys.argv[0])])
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user