def get_angle(self, p): angle = viewgeom.get_angle_in_deg(self.twelwe_p, (self.CENTER_X, self.CENTER_Y), p) clockwise = viewgeom.points_clockwise(self.twelwe_p, (self.CENTER_X, self.CENTER_Y), p) if clockwise: angle = 360.0 - angle; # Color circle starts from 11 o'clock angle = angle - 30.0 if angle < 0.0: angle = angle + 360.0 return angle
def _shape_press_event(self): self.start_edit_points = copy.deepcopy(self.edit_points) if self.current_mouse_hit == X_SCALE_HANDLE: self.guide = viewgeom.get_vec_for_points((self.shape_x,self.shape_y), self.edit_points[X_SCALE_HANDLE]) elif self.current_mouse_hit == Y_SCALE_HANDLE: self.guide = viewgeom.get_vec_for_points((self.shape_x,self.shape_y), self.edit_points[Y_SCALE_HANDLE]) elif self.current_mouse_hit == ROTATION_HANDLE: ax, ay = self.edit_points[POS_HANDLE] zero_deg_point = (ax, ay + 10) m_end_point = (self.get_screen_x(self.mouse_start_x), self.get_screen_y(self.mouse_start_y)) self.mouse_start_rotation = viewgeom.get_angle_in_deg(zero_deg_point, self.edit_points[POS_HANDLE], m_end_point) self.mouse_rotation_last = 0.0 self.rotation_value_start = self.rotation elif self.current_mouse_hit == POS_HANDLE or self.current_mouse_hit == AREA_HIT: self.start_shape_x = self.shape_x self.start_shape_y = self.shape_y
def get_mouse_rotation_angle(self, anchor, mr_start, mr_end): angle = viewgeom.get_angle_in_deg(mr_start, anchor, mr_end) clockw = viewgeom.points_clockwise(mr_start, anchor, mr_end) if not clockw: angle = -angle # Crossed angle for 180 -> 181... range crossed_angle = angle + 360.0 # Crossed angle for -180 -> 181 ...range. if angle > 0: crossed_angle = -360.0 + angle # See if crossed angle closer to last angle. if abs(self.mouse_rotation_last - crossed_angle) < abs(self.mouse_rotation_last - angle): angle = crossed_angle # Set last to get good results next time. self.mouse_rotation_last = angle return angle
def _shape_press_event(self): self.start_edit_points = copy.deepcopy(self.edit_points) if self.current_mouse_hit == X_SCALE_HANDLE: self.guide = viewgeom.get_vec_for_points( (self.shape_x, self.shape_y), self.edit_points[X_SCALE_HANDLE]) elif self.current_mouse_hit == Y_SCALE_HANDLE: self.guide = viewgeom.get_vec_for_points( (self.shape_x, self.shape_y), self.edit_points[Y_SCALE_HANDLE]) elif self.current_mouse_hit == ROTATION_HANDLE: ax, ay = self.edit_points[POS_HANDLE] zero_deg_point = (ax, ay + 10) m_end_point = (self.get_screen_x(self.mouse_start_x), self.get_screen_y(self.mouse_start_y)) self.mouse_start_rotation = viewgeom.get_angle_in_deg( zero_deg_point, self.edit_points[POS_HANDLE], m_end_point) self.mouse_rotation_last = 0.0 self.rotation_value_start = self.rotation elif self.current_mouse_hit == POS_HANDLE or self.current_mouse_hit == AREA_HIT: self.start_shape_x = self.shape_x self.start_shape_y = self.shape_y