def setpickregion(self, canvas, tag): obj = canvas.getObjectByTag(tag) if obj.kind != 'rectangle': return True canvas.deleteObjectByTag(tag, redraw=False) if self.picktag: try: canvas.deleteObjectByTag(self.picktag, redraw=False) except: pass # determine center of rectangle x = obj.x1 + (obj.x2 - obj.x1) // 2 y = obj.y1 + (obj.y2 - obj.y1) // 2 tag = canvas.add(CanvasTypes.CompoundObject( CanvasTypes.Rectangle(obj.x1, obj.y1, obj.x2, obj.y2, color=self.pickcolor), CanvasTypes.Point(x, y, 10, color='red'), CanvasTypes.Text(obj.x1, obj.y2 + 4, "Pick: calc", color=self.pickcolor)), redraw=False) self.picktag = tag #self.fv.raise_tab("detail") return self.redo()
def setfromimage(self): x1, y1 = 0, 0 x2, y2 = self.fitsimage.get_data_size() tag = self.canvas.add( CanvasTypes.Rectangle(x1, y1, x2, y2, color=self.mycolor)) self.getarea(self.canvas, tag)
def full_image(self): canvas = self.canvas try: canvas.deleteObjectByTag(self.histtag, redraw=False) except: pass image = self.fitsimage.get_image() width, height = image.get_size() x1, y1, x2, y2 = 0, 0, width-1, height-1 tag = canvas.add(CanvasTypes.Rectangle(x1, y1, x2, y2, color='cyan', linestyle='dash')) self.draw_cb(canvas, tag)
def drag(self, canvas, button, data_x, data_y): if not (button == 0x1): return obj = self.canvas.getObjectByTag(self.picktag) if obj.kind == 'compound': bbox = obj.objects[0] elif obj.kind == 'rectangle': bbox = obj else: return True # calculate center of bbox wd = bbox.x2 - bbox.x1 dw = wd // 2 ht = bbox.y2 - bbox.y1 dh = ht // 2 x, y = bbox.x1 + dw, bbox.y1 + dh # calculate offsets of move dx = (data_x - x) dy = (data_y - y) # calculate new coords x1, y1, x2, y2 = bbox.x1 + dx, bbox.y1 + dy, bbox.x2 + dx, bbox.y2 + dy if (not obj) or (obj.kind == 'compound'): # Replace compound image with rectangle try: self.canvas.deleteObjectByTag(self.picktag, redraw=False) except: pass self.picktag = self.canvas.add( CanvasTypes.Rectangle(x1, y1, x2, y2, color='cyan', linestyle='dash')) else: # Update current rectangle with new coords and redraw bbox.x1, bbox.y1, bbox.x2, bbox.y2 = x1, y1, x2, y2 self.canvas.redraw(whence=3)
def draw_cb(self, canvas, tag): obj = canvas.getObjectByTag(tag) if obj.kind != 'rectangle': return True canvas.deleteObjectByTag(tag, redraw=False) if self.histtag: try: canvas.deleteObjectByTag(self.histtag, redraw=False) except: pass tag = canvas.add(CanvasTypes.CompoundObject( CanvasTypes.Rectangle(obj.x1, obj.y1, obj.x2, obj.y2, color=self.histcolor), CanvasTypes.Text(obj.x1, obj.y2+4, "Histogram", color=self.histcolor))) self.histtag = tag return self.redo()
def update(self, canvas, button, data_x, data_y): if not (button == 0x1): return obj = self.canvas.getObjectByTag(self.histtag) if obj.kind == 'compound': bbox = obj.objects[0] elif obj.kind == 'rectangle': bbox = obj else: return True # calculate center of bbox wd = bbox.x2 - bbox.x1 dw = wd // 2 ht = bbox.y2 - bbox.y1 dh = ht // 2 x, y = bbox.x1 + dw, bbox.y1 + dh # calculate offsets of move dx = (data_x - x) dy = (data_y - y) # calculate new coords x1, y1, x2, y2 = bbox.x1+dx, bbox.y1+dy, bbox.x2+dx, bbox.y2+dy try: canvas.deleteObjectByTag(self.histtag, redraw=False) except: pass tag = canvas.add(CanvasTypes.Rectangle(x1, y1, x2, y2, color='cyan', linestyle='dash')) self.draw_cb(canvas, tag)
dx = self.dx dy = self.dy # Mark center of object and region on main image try: self.canvas.deleteObjectByTag(self.picktag, redraw=False) except: pass x1, y1 = data_x - dx, data_y - dy x2, y2 = data_x + dx, data_y + dy tag = self.canvas.add( CanvasTypes.Rectangle(x1, y1, x2, y2, color='cyan', linestyle='dash')) self.picktag = tag #self.setpickregion(self.canvas, tag) def update(self, canvas, button, data_x, data_y): if not (button == 0x1): return try: obj = self.canvas.getObjectByTag(self.picktag) if obj.kind == 'rectangle': bbox = obj else: