From 1ef7063ca9bf97f80fb81ff77c9d17d0c4be71bf Mon Sep 17 00:00:00 2001 From: U-BRIAN-X60\Brian Silverman Date: Fri, 16 Nov 2007 20:54:29 +0000 Subject: multiple instances run properly --- (limited to 'sprites.py') diff --git a/sprites.py b/sprites.py deleted file mode 100755 index 245bac3..0000000 --- a/sprites.py +++ /dev/null @@ -1,120 +0,0 @@ -import pygtk -pygtk.require('2.0') -import gtk -import gobject -import pango - -sprites = [] -gc = None -window = None -black = None - -class Sprite: - def __init__(self,x,y,image,altlabel=False): - self.x = x - self.y = y - self.setimage(image) - self.label = None - if altlabel: self.draw_label = self.draw_label2 - else: self.draw_label = self.draw_label1 - - def setimage(self,image): - self.image = image - if isinstance(image,gtk.gdk.Pixbuf): - self.width = self.image.get_width() - self.height = self.image.get_height() - else: self.width,self.height=image.get_size() - - - def move(self,pos): - self.inval() - self.x,self.y = pos - self.inval() - - def setshape(self,image): - self.inval() - self.setimage(image) - self.inval() - - def setlayer(self, layer): - if self in sprites: sprites.remove(self) - self.layer = layer - for i in range(len(sprites)): - if layer < sprites[i].layer: sprites.insert(i, self); self.inval(); return - sprites.append(self) - self.inval() - - def hide(self): - if self not in sprites: return - self.inval() - sprites.remove(self) - - def setlabel(self,label): - self.label = label - self.inval() - - def inval(self): - area.invalidate_rect(gtk.gdk.Rectangle(self.x,self.y,self.width,self.height), False) - - def draw(self): - if isinstance(self.image,gtk.gdk.Pixbuf): area.draw_pixbuf(gc, self.image, 0, 0, self.x, self.y) - else: area.draw_drawable(gc,self.image,0,0,self.x,self.y,-1,-1) - if self.label!=None: self.draw_label(self.label) - - def hit(self,pos): - x,y = pos - if xself.x+self.width: return False - if yself.y+self.height: return False - if isinstance(self.image,gtk.gdk.Pixmap): return True - dx,dy = x-self.x, y-self.y - return ord(self.image.get_pixels()[(dy*self.width+dx)*4+3]) == 255 - - def draw_label1(self, label): - fd = pango.FontDescription('Sans') - fd.set_size(7*pango.SCALE) - pl = window.create_pango_layout(str(label)) - pl.set_font_description(fd) - swidth = pl.get_size()[0]/pango.SCALE - sheight = pl.get_size()[1]/pango.SCALE - centerx = self.x+self.width/2 - centery = self.y+self.height/2 - gc.set_foreground(black) - area.draw_layout(gc,centerx-swidth/2,centery-sheight/2,pl) - - def draw_label2(self, label): - fd = pango.FontDescription('Sans') - fd.set_size(9*pango.SCALE) - pl = window.create_pango_layout(str(label)) - pl.set_font_description(fd) - sheight = pl.get_size()[1]/pango.SCALE - centery = self.y+self.height/2 - gc.set_foreground(black) - area.draw_layout(gc,self.x+50,centery-sheight/2,pl) - - -def findsprite(pos): - list = sprites[:] - list.reverse() - for s in list: - if s.hit(pos): return s - return None - -def redrawsprites(): - for s in sprites: s.draw() - -def getpixel(image,x,y): - array = image.get_pixels() - offset = (y*image.get_width()+x)*4 - r,g,b,a = ord(array[offset]),ord(array[offset+1]),ord(array[offset+2]),ord(array[offset+3]) - return (a<<24)+(b<<16)+(g<<8)+r - -def setspritecontext(w,a,g): - global window,area,gc,black - window=w - area =a - gc = g - black = gc.get_colormap().alloc_color('black') - -def spritelist(): return sprites \ No newline at end of file -- cgit v0.9.1