Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sprites.py
diff options
context:
space:
mode:
authorU-BRIAN-X60\Brian Silverman <Brian Silverman@Brian-X60.(none)>2007-11-16 20:54:29 (GMT)
committer U-BRIAN-X60\Brian Silverman <Brian Silverman@Brian-X60.(none)>2007-11-16 20:54:29 (GMT)
commit1ef7063ca9bf97f80fb81ff77c9d17d0c4be71bf (patch)
tree3deda83d804889c4d5f9e8c0ed436725711ca8e8 /sprites.py
parentebbaf1f427c01334106add9a11802381e170d7ce (diff)
multiple instances run properly
Diffstat (limited to 'sprites.py')
-rwxr-xr-xsprites.py120
1 files changed, 0 insertions, 120 deletions
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 x<self.x: return False
- if x>self.x+self.width: return False
- if y<self.y: return False
- if y>self.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