This class allows OpenGL texture coordinates to be easily scaled and translated Access the coordinates by index.
Index 0: left bottom
Index 1: left top
Index 2: right top
Index 3: right bottom


Be warned that __getitem__ operations are rather slow, so avoid using this class in an inner render loop. class Coords(object): """ A type for managing texture coordinates. Use * and / for scaling, + and - for translating. """ def __init__(self, lrbt=(0.0,1.0,0.0,1.0)): self.lrbt = list(lrbt) def __repr__(self): return repr((self[0],self[1],self[2],self[3])) def __imul__(self, scalar): self.lrbt[:] = [i * scalar for i in self.lrbt] return self def __idiv__(self, scalar): self.lrbt[:] = [i / scalar for i in self.lrgb] return self def __iadd__(self, vec2): self.lrbt[0] += vec2[0] self.lrbt[1] += vec2[0] self.lrbt[2] += vec2[1] self.lrbt[3] += vec2[1] return self def __isub__(self, vec2): self.lrbt[0] -= vec2[0] self.lrbt[1] -= vec2[0] self.lrbt[2] -= vec2[1] self.lrbt[3] -= vec2[1] return self def __mul__(self, scalar): return Coords([i * scalar for i in self.lrbt]) def __div__(self, scalar): return Coords([i / scalar for i in self.lrbt]) def __add__(self, vec2): return Coords((self.lrbt[0]+vec2[0], self.lrbt[1]+vec2[0], self.lrbt[2]+vec2[1], self.lrbt[3]+vec2[1])) def __sub__(self, vec2): return Coords((self.lrbt[0]-vec2[0], self.lrbt[1]-vec2[0], self.lrbt[2]-vec2[1], self.lrbt[3]-vec2[1])) def __getitem__(self, i): if i == 0: return self.lrbt[0], self.lrbt[2] elif i == 1: return self.lrbt[0], self.lrbt[3] elif i == 2: return self.lrbt[1], self.lrbt[3] elif i == 3: return self.lrbt[1], self.lrbt[2] else: raise IndexError