diff --git a/scanslicer/canvas.py b/scanslicer/canvas.py index c6a5a44..60a736d 100644 --- a/scanslicer/canvas.py +++ b/scanslicer/canvas.py @@ -8,3 +8,32 @@ from .canvas_state import CanvasStateMixin # QtSlicingCanvas: class definition for ScanSlicer behavior. +class QtSlicingCanvas(CanvasInteractionMixin, CanvasRenderMixin, CanvasStateMixin, QWidget): + AUTO_FIT_SCALE = 0.95 + OFF_CANVAS_COLOR = QColor(38, 38, 38) + CORNER_HANDLE_HIT_RADIUS = 12.0 + SIDE_HANDLE_HIT_RADIUS = 14.0 + SIDE_HANDLE_SIZE_ACTIVE = 11.0 + SIDE_HANDLE_SIZE_INACTIVE = 9.0 + active_slice_changed = Signal(int) + + # __init__: function definition for ScanSlicer behavior. + def __init__(self, parent=None): + super().__init__(parent) + self.setMouseTracking(True) + self.setMinimumSize(640, 480) + + self.zoom = 1.0 + self.image = None + self.pan_offset = QPointF(0.0, 0.0) + self.slices = [] + self.active_slice_index = None + + self.corner_dragging = None + self.side_dragging = None + self.rotation_dragging = None + self.box_dragging = None + self.rotate_handles_mode = False + self.panning = False + self.last_mouse_pos = QPointF(0.0, 0.0) + self.user_transformed_view = False