model.py
author Eugen Sawin <sawine@me73.com>
Sun, 13 Jun 2010 04:34:03 +0200
changeset 2 b887ce19c300
child 6 9147c845cecb
permissions -rw-r--r--
Added worker.
sawine@0
     1
import algorithm
sawine@0
     2
sawine@0
     3
models = {}
sawine@0
     4
sawine@0
     5
def createModel(name):
sawine@0
     6
	models[name] = Model(name)
sawine@0
     7
sawine@0
     8
def addModel(model):
sawine@0
     9
	models[model.name] = model
sawine@0
    10
sawine@0
    11
def deleteModel(name):
sawine@0
    12
	if name in models:
sawine@0
    13
		del models[name]
sawine@0
    14
		return True
sawine@0
    15
	return False
sawine@0
    16
sawine@0
    17
# event = (type,value)	
sawine@0
    18
eventTypes = ("view", "model", "server")
sawine@0
    19
sawine@0
    20
class Model(object):
sawine@0
    21
	def __init__(self, name):
sawine@0
    22
		self.name = name
sawine@0
    23
		self.cells = {}
sawine@0
    24
		self.observers = {}		
sawine@0
    25
		for t in eventTypes:
sawine@0
    26
			self.observers[t] = []
sawine@0
    27
		self.resolution = (0,0)	
sawine@0
    28
		self.range = (complex(0,0), complex(0,0))
sawine@0
    29
	def dispatch(self, event):
sawine@0
    30
		for o in self.observers:
sawine@0
    31
			o[0].sendto("%s" % (event), o[1])
sawine@0
    32
	def register(self, socket, observer, eventType):
sawine@0
    33
		self.observers[eventType].append((socket, observer))
sawine@0
    34
	def setResolution(self, x, y):
sawine@0
    35
		self.resolution = (x,y)
sawine@0
    36
	def setRange(self, begin, end):
sawine@0
    37
		self.range = (begin, end)
sawine@0
    38
	def update(self, max_iter):
sawine@0
    39
		m = algorithm.Mandelbrot(self.range, self.resolution)
sawine@0
    40
		self.cells = m.resolve(max_iter)
sawine@0
    41
		
sawine@0
    42