1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/cau/grid.py Thu Dec 30 18:31:19 2010 +0100
1.3 @@ -0,0 +1,47 @@
1.4 +class Grid(object):
1.5 +
1.6 + def __init__(self):
1.7 + self.cells = {}
1.8 + self.valuemap = {}
1.9 + self.minx = 0
1.10 + self.maxx = 0
1.11 + self.miny = 0
1.12 + self.maxy = 0
1.13 +
1.14 + def set(self, pos, value=1):
1.15 + if pos in self.cells and value != self.cells[pos]:
1.16 + self.clear(pos)
1.17 + if not pos in self.cells:
1.18 + self.cells[pos] = value
1.19 + if value in self.valuemap:
1.20 + self.valuemap[value].append(pos)
1.21 + else:
1.22 + self.valuemap[value] = [pos]
1.23 + self.update(pos)
1.24 + return self
1.25 +
1.26 + def clear(self, pos):
1.27 + if pos in self.cells:
1.28 + self.valuemap[self.cells[pos]].remove(pos)
1.29 + del self.cells[pos]
1.30 + self.update(pos)
1.31 + return self
1.32 +
1.33 + def update(self, (x, y)):
1.34 + self.minx = min(x, self.minx)
1.35 + self.maxx = max(x, self.maxx)
1.36 + self.miny = min(y, self.miny)
1.37 + self.maxy = max(y, self.maxy)
1.38 + return self
1.39 +
1.40 + def width(self):
1.41 + return self.maxx - self.minx + 1
1.42 +
1.43 + def height(self):
1.44 + return self.maxy - self.miny + 1
1.45 +
1.46 + def __len__(self):
1.47 + return len(self.cells)
1.48 +
1.49 + def __str__(self):
1.50 + pass