def _set_reference_point(self, pt): ''' assumes no rotation of the reference frames only scale and translate ''' rp = ReferencePoint(pt) info = rp.edit_traits() if info.result: plot = self.plot self.points.append(((rp.x, rp.y), pt)) # if not self.reference_pt1: # self.reference_pt1 = (rp.x, rp.y), pt # else: # # calculate bounds # dp1, sp1 = self.reference_pt1 # dp2, sp2 = (rp.x, rp.y), pt # # # w = plot.width # h = plot.height # if sp1[0] < sp2[0]: # sx1, sx2 = sp1[0], sp2[0] # x1, x2 = dp1[0], dp2[0] # else: # sx2, sx1 = sp1[0], sp2[0] # x2, x1 = dp1[0], dp2[0] # # if sp1[1] < sp2[1]: # sy1, sy2 = sp1[1], sp2[1] # y1, y2 = dp1[1], dp2[1] # else: # sy2, sy1 = sp1[1], sp2[1] # y2, y1 = dp1[1], dp2[1] # # pxperunit = abs((sx2 - sx1) / (x2 - x1)) # # li = x1 - sx1 / pxperunit # hi = x2 + (w - sx2) / pxperunit # lv = y1 - sy1 / pxperunit # hv = y2 + (h - sy2) / pxperunit # # plot.index_range.low_setting = li # plot.index_range.high_setting = hi # plot.value_range.low_setting = lv # plot.value_range.high_setting = hv # plot.request_redraw()
def _get_point(self, sp): rp = ReferencePoint(sp) info = rp.edit_traits() if info.result: refp = rp.x, rp.y return refp, sp