X-Git-Url: https://scm.cri.ensmp.fr/git/minwii.git/blobdiff_plain/346a9b8e1fcfe30629f0d1ee4675e9e8f89890cf..4c4732c6ed8cb0aaa70fb2d4c6e5a958868c5349:/src/pgu/ani.py diff --git a/src/pgu/ani.py b/src/pgu/ani.py deleted file mode 100644 index c33d380..0000000 --- a/src/pgu/ani.py +++ /dev/null @@ -1,90 +0,0 @@ -"""animation loading and manipulating functions. - -

please note that this file is alpha, and is subject to modification in -future versions of pgu!

-""" - -print 'pgu.ani','This module is alpha, and is subject to change.' - -import math -import pygame - -def _ani_load(tv,name,parts,frames,shape): - l = len(frames) - #print name,parts,l - n = parts.pop() - if len(parts): - s = l/n - for i in xrange(0,n): - _ani_load(tv,name + ".%d"%i,parts[:],frames[s*i:s*(i+1)],shape) - return - - for i in xrange(0,n): - tv.images[name+".%d"%i] = frames[i],shape - -def ani_load(tv,name,img,size,shape,parts): - """load an animation from an image - -
ani_load(tv,name,image,size,shape,parts)
- -
-
tv
vid to load into -
name
prefix name to give the images -
image
image to load anis from -
size
w,h size of image -
shape
shape of image (usually a subset of 0,0,w,h) used for collision detection -
parts
list of parts to divide the animation into -
for example parts = [4,5] would yield 4 animations 5 frames long, 20 total -
for example parts = [a,b,c] would yield ... images['name.a.b.c'] ..., a*b*c total -
- - """ - parts = parts[:] - parts.reverse() - w,h = size - frames = [] - for y in xrange(0,img.get_height(),h): - for x in xrange(0,img.get_width(),w): - frames.append(img.subsurface(x,y,w,h)) - _ani_load(tv,name,parts,frames,shape) - - -def image_rotate(tv,name,img,shape,angles,diff=0): - """rotate an image and put it into tv.images - -
image_rotate(tv,name,image,shape,angles,diff=0)
- -
-
tv
vid to load into -
name
prefix name to give the images -
image
image to load anis from -
shape
shape fimage (usually a subset of 0,0,w,h) used for collision detection -
angles
a list of angles to render in degrees -
diff
a number to add to the angles, to correct for source image not actually being at 0 degrees -
- """ - w1,h1 = img.get_width(),img.get_height() - shape = pygame.Rect(shape) - ps = shape.topleft,shape.topright,shape.bottomleft,shape.bottomright - for a in angles: - img2 = pygame.transform.rotate(img,a+diff) - w2,h2 = img2.get_width(),img2.get_height() - minx,miny,maxx,maxy = 1024,1024,0,0 - for x,y in ps: - x,y = x-w1/2,y-h1/2 - a2 = math.radians(a+diff) - #NOTE: the + and - are switched from the normal formula because of - #the weird way that pygame does the angle... - x2 = x*math.cos(a2) + y*math.sin(a2) - y2 = y*math.cos(a2) - x*math.sin(a2) - x2,y2 = x2+w2/2,y2+h2/2 - minx = min(minx,x2) - miny = min(miny,y2) - maxx = max(maxx,x2) - maxy = max(maxy,y2) - r = pygame.Rect(minx,miny,maxx-minx,maxy-miny) - #print r - #((ww-w)/2,(hh-h)/2,w,h) - tv.images["%s.%d"%(name,a)] = img2,r - -