2511-eiger-mask #2
@@ -59,8 +59,6 @@ private:
|
||||
QPointF roiEndPos;
|
||||
|
||||
enum class RoiType {RoiBox, RoiCircle};
|
||||
enum class MouseEventType {None, Panning, DrawingROI, MovingROI};
|
||||
MouseEventType mouse_event_type = MouseEventType::None;
|
||||
RoiType roi_type = RoiType::RoiBox;
|
||||
|
||||
public slots:
|
||||
|
||||
@@ -24,6 +24,8 @@ protected:
|
||||
ColorScale color_scale;
|
||||
std::vector<rgb> image_rgb;
|
||||
QPixmap pixmap;
|
||||
enum class MouseEventType {None, Panning, DrawingROI, MovingROI, ResizingROI};
|
||||
MouseEventType mouse_event_type = MouseEventType::None;
|
||||
|
||||
signals:
|
||||
void foregroundChanged(float v);
|
||||
|
||||
@@ -54,22 +54,22 @@ void JFJochSimpleImage::mousePressEvent(QMouseEvent* event) {
|
||||
// Determine if we are over an existing ROI handle
|
||||
active_handle_ = hitTestROIHandle(scenePos, 4.0 / std::sqrt(std::max(1e-4, scale_factor)));
|
||||
if (active_handle_ != ResizeHandle::None && active_handle_ != ResizeHandle::Inside) {
|
||||
mouse_event_type_ = MouseEventType::ResizingROI;
|
||||
mouse_event_type = MouseEventType::ResizingROI;
|
||||
roi_start_pos_ = roi_box_.topLeft();
|
||||
roi_end_pos_ = roi_box_.bottomRight();
|
||||
setCursor(Qt::SizeAllCursor);
|
||||
} else if (roi_box_.contains(scenePos)) {
|
||||
mouse_event_type_ = MouseEventType::MovingROI;
|
||||
mouse_event_type = MouseEventType::MovingROI;
|
||||
last_mouse_pos_ = event->pos();
|
||||
setCursor(Qt::ClosedHandCursor);
|
||||
} else {
|
||||
mouse_event_type_ = MouseEventType::DrawingROI;
|
||||
mouse_event_type = MouseEventType::DrawingROI;
|
||||
roi_start_pos_ = RoundPoint(scenePos);
|
||||
roi_end_pos_ = roi_start_pos_;
|
||||
setCursor(Qt::CrossCursor);
|
||||
}
|
||||
} else {
|
||||
mouse_event_type_ = MouseEventType::Panning;
|
||||
mouse_event_type = MouseEventType::Panning;
|
||||
panning_ = true;
|
||||
setCursor(Qt::ClosedHandCursor);
|
||||
last_mouse_pos_ = event->pos();
|
||||
@@ -84,7 +84,7 @@ void JFJochSimpleImage::mouseMoveEvent(QMouseEvent* event) {
|
||||
|
||||
const QPointF scenePos = mapToScene(event->pos());
|
||||
|
||||
switch (mouse_event_type_) {
|
||||
switch (mouse_event_type) {
|
||||
case MouseEventType::Panning: {
|
||||
const QPointF delta = mapToScene(event->pos()) - mapToScene(last_mouse_pos_);
|
||||
last_mouse_pos_ = event->pos();
|
||||
@@ -150,12 +150,12 @@ void JFJochSimpleImage::mouseReleaseEvent(QMouseEvent* event) {
|
||||
if (!scene() || !has_image_) return;
|
||||
|
||||
if (event->button() == Qt::LeftButton) {
|
||||
if (mouse_event_type_ == MouseEventType::DrawingROI) {
|
||||
if (mouse_event_type == MouseEventType::DrawingROI) {
|
||||
roi_end_pos_ = RoundPoint(mapToScene(event->pos()));
|
||||
updateROI();
|
||||
}
|
||||
panning_ = false;
|
||||
mouse_event_type_ = MouseEventType::None;
|
||||
mouse_event_type = MouseEventType::None;
|
||||
active_handle_ = ResizeHandle::None;
|
||||
setCursor(Qt::ArrowCursor);
|
||||
}
|
||||
|
||||
@@ -70,10 +70,6 @@ private:
|
||||
template <class T>
|
||||
void renderImage(QImage &qimg, const uint8_t *input);
|
||||
|
||||
// ROI (box) state
|
||||
enum class MouseEventType { None, Panning, DrawingROI, MovingROI, ResizingROI };
|
||||
MouseEventType mouse_event_type_ = MouseEventType::None;
|
||||
|
||||
QRectF roi_box_; // in scene/image pixel coordinates
|
||||
QPointF roi_start_pos_; // for drawing/resizing
|
||||
QPointF roi_end_pos_; // for drawing/resizing
|
||||
|
||||
Reference in New Issue
Block a user