This demo shows a couple of uses of bitmap images as masks. You can use them either as textures for images or as the mask for another texture (the face on the left is used as a mask for a blue and yellow grating).
To work the demo needs a square image called face.jpg (e.g. ../images/face.jpg)
#! /usr/local/bin/python2.5
from psychopy import core, visual, event
import psychopy.sound
#create a window to draw in
myWin = visual.Window((600,600), allowGUI=False, rgb=(-1,-1,-1))
#INITIALISE SOME STIMULI
faceRGB = visual.PatchStim(myWin,tex='face.jpg',
mask=None,
pos=(0.0,0.0),
size=(1.0,1.0),
sf=(1.0, 1.0))
faceALPHA = visual.PatchStim(myWin,pos=(-0.5,0),
tex="sin",mask="face.jpg",
rgb=[1.0,1.0,-1.0],
size=(0.5,0.5), sf=1.0, units="norm")
message = visual.TextStim(myWin,pos=(-0.95,-0.95),
text='[Esc] to quit', rgb=1, alignHoriz='left', alignVert='bottom')
trialClock = core.Clock()
t=lastFPSupdate=0
while True:
t=trialClock.getTime()
faceRGB.setOri(1,'+')#advance ori by 1 degree
faceRGB.draw()
faceALPHA.setPhase(0.01,"+")#advance phase by 1/100th of a cycle
faceALPHA.draw()
#update fps every second
if t-lastFPSupdate>1.0:
lastFPS = myWin.fps()
lastFPSupdate=t
message.setText("%ifps, [Esc] to quit" %lastFPS)
message.draw()
myWin.flip()
#handle key presses each frame
for keys in event.getKeys():
if keys in ['escape','q']:
print myWin.fps()
myWin.close()
core.quit()
event.clearEvents()