import verse as v from versoonode import * from versoodefines import * class BitmapLayer: def __init__(self, node_id, layer_id, name, session, type): self.node_id = node_id self.layer_id = layer_id self.name = name self.session = session self.type = type #v.send_b_layer_subscribe(node_id, layer_id) def get_node_id(self): return self.node_id def get_layer_id(self): return self.layer_id def get_name(self): return self.name def get_type(self): return self.type def destroy(self): v.send_b_layer_destroy(self.node_id, self.layer_id) def __repr__(self): return self.__str__() def __str__(self): global BLTYPES txt = MakeNodeStr("BitmapLayer", self.layer_id, self.name) txt += " (type: " + BLTYPES[self.type] + ")" return txt class Bitmap(Node): def __init__(self, node_id, session): Node.__init__(self, node_id, session) self.layers = IdDict("Layers", session) self.typename = "Bitmap" self._dimensions_set = False self.width = 0 self.height = 0 self.depth = 0 def get_dimensions(self): return self.width, self.height, self.depth def get_width(self): return self.width def get_height(self): return self.height def get_depth(self): return self.depth def layer_create(self, name, type): if name in self.layers: return v.send_b_layer_create(self.node_id, ~0, name, type) self.layers._wait_for_item(name) return self.layers[name] def dimensions_set(self, width, height, depth): if width == self.width and height == self.height: if depth == self.depth: return self._dimensions_set = False v.send_b_dimensions_set(self.node_id, width, height, depth) reset_timeout() while not self._dimensions_set and not timeout(): self.session.update() def __getattr__(self, id): if id in self.layers: return self.layers.__getattr__(id) elif id in self.taggroups: return self.taggroups.__getattr__(id) else: raise AttributeError def __str__(self): txt = Node.__str__(self) txt += " (width: " + str(self.width) + ", " txt += "height: " + str(self.height) + ", " txt += "depth: " + str(self.depth) + ")" if len(self.layers) > 0: txt += "\n" + str(self.layers) return txt def _cb_layer_create(self, layer_id, name, type): layer = BitmapLayer(self.node_id, layer_id, name, self.session, type) self.layers._add(layer_id, layer) def _cb_layer_destroy(self, layer_id): self.layers._del(layer_id) def _cb_dimensions_set(self, width, height, depth): self.width = width self.height = height self.depth = depth self._dimensions_set = True