import verse as v import vBitmap # vManager members _type = v.BITMAP # this handler's node type _node_list = {} # list of bmpetry nodes: {node_id -> vBitmap} # callbacks def _cb_b_layer_create(node_id, layer_id, name, type): global _node_list if node_id in _node_list: bmp = _node_list[node_id] if type == v.B_LAYER_UINT8: if name == "col_r": bmp.layers["col_r"] = layer_id elif name == "col_g": bmp.layers["col_g"] = layer_id elif name == "col_b": bmp.layers["col_b"] = layer_id elif name == "alpha": bmp.layers["alpha"] = layer_id else: return if bmp.size_set: v.send_b_layer_subscribe(node_id, layer_id, 0) def _cb_b_dimensions_set(node_id, x, y, z): global _node_list if node_id in _node_list: bmp = _node_list[node_id] bmp.setSize(x, y) if not bmp.size_set and x != 0 and y != 0: bmp.size_set = True for i in bmp.layers: if bmp.layers[i] != None: v.send_b_layer_subscribe(node_id, bmp.layers[i], 0) def _cb_b_layer_destroy(node_id, layer_id, name, type): global _node_list if node_id in _node_list: bmp = _node_list[node_id] for i in bmp.layers: if bmp.layers[i] == layer_id: bmp.layers[i] = None def _cb_b_tile_set(node_id, layer_id, tile_x, tile_y, z, type, pixels): global _node_list if type != v.B_LAYER_UINT8: return if node_id in _node_list: bmp = _node_list[node_id] for i in bmp.layers: if bmp.layers[i] == layer_id: if i == "col_r": bmp.setTile(tile_x, tile_y, pixels, 0) elif i == "col_g": bmp.setTile(tile_x, tile_y, pixels, 1) elif i == "col_b": bmp.setTile(tile_x, tile_y, pixels, 2) elif i == "alpha": bmp.setTile(tile_x, tile_y, pixels, 3) #vManager functions def _callbacks_set(): v.callback_set(v.SEND_B_LAYER_CREATE, _cb_b_layer_create) v.callback_set(v.SEND_B_LAYER_DESTROY, _cb_b_layer_destroy) v.callback_set(v.SEND_B_TILE_SET, _cb_b_tile_set) v.callback_set(v.SEND_B_DIMENSIONS_SET, _cb_b_dimensions_set) def _node_create(node_id, i_am_owner): global _node_list bmp = vBitmap.vBitmap() _node_list[node_id] = bmp bmp.layers = {} bmp.layers["col_r"] = None bmp.layers["col_g"] = None bmp.layers["col_b"] = None bmp.layers["alpha"] = None bmp.size_set = False v.send_node_subscribe(node_id) def _node_destroy(node_id): global _node_list if node_id in _node_list: del _node_list[node_id]