From ba1ed196437e1c9835ac5ce60a3eecd3367a5568 Mon Sep 17 00:00:00 2001 From: Paddle Date: Mon, 17 Apr 2023 15:10:13 +0200 Subject: [PATCH] TaskImage: Remove 'outside picture' mode. --- src/Gui/TaskView/TaskImage.cpp | 49 ++++++---------------------------- src/Gui/TaskView/TaskImage.h | 5 +--- src/Gui/TaskView/TaskImage.ui | 5 +--- 3 files changed, 10 insertions(+), 49 deletions(-) diff --git a/src/Gui/TaskView/TaskImage.cpp b/src/Gui/TaskView/TaskImage.cpp index a9dbc9af8e..5fb8cf1448 100644 --- a/src/Gui/TaskView/TaskImage.cpp +++ b/src/Gui/TaskView/TaskImage.cpp @@ -78,11 +78,6 @@ TaskImage::TaskImage(Image::ImagePlane* obj, QWidget* parent) aspectRatio = obj->XSize.getValue() / obj->YSize.getValue(); - QAction* action = new QAction(tr("Allow points outside the image"), this); - action->setCheckable(true); - action->setChecked(false); - ui->pushButtonScale->addAction(action); - connectSignals(); } @@ -213,7 +208,7 @@ void TaskImage::scaleImage(double factor) void TaskImage::startScale() { - scale->activate(qAsConst(ui->pushButtonScale)->actions()[0]->isChecked()); + scale->activate(); ui->pushButtonScale->hide(); ui->groupBoxCalibration->show(); ui->pushButtonApply->setEnabled(false); @@ -401,7 +396,6 @@ struct NodeData { InteractiveScale::InteractiveScale(View3DInventorViewer* view, ViewProvider* vp, Base::Placement plc) : active(false) - , allowOutsideImage(false) , placement(plc) , viewer(view) , viewProv(vp) @@ -452,7 +446,7 @@ InteractiveScale::~InteractiveScale() cameraSensor->detach(); } -void InteractiveScale::activate(bool allowOutside) +void InteractiveScale::activate() { if (viewer) { static_cast(viewer->getSceneGraph())->addChild(root); @@ -462,7 +456,6 @@ void InteractiveScale::activate(bool allowOutside) viewer->setSelectionEnabled(false); viewer->getWidget()->setCursor(QCursor(Qt::CrossCursor)); active = true; - allowOutsideImage = allowOutside; } } @@ -498,16 +491,6 @@ double InteractiveScale::getDistance(const SbVec3f& pt) const return (points[0] - pt).length(); } -void InteractiveScale::findPointOnPlane(SoEventCallback * ecb) -{ - if (allowOutsideImage) { - findPointOnFocalPlane(ecb); - } - else { - findPointOnImagePlane(ecb); - } -} - void InteractiveScale::findPointOnImagePlane(SoEventCallback * ecb) { const SoMouseButtonEvent * mbe = static_cast(ecb->getEvent()); @@ -520,17 +503,6 @@ void InteractiveScale::findPointOnImagePlane(SoEventCallback * ecb) } } -void InteractiveScale::findPointOnFocalPlane(SoEventCallback * ecb) -{ - const SoMouseButtonEvent * mbe = static_cast(ecb->getEvent()); - Gui::View3DInventorViewer* view = static_cast(ecb->getUserData()); - - auto pos2d = mbe->getPosition(); - auto pos3d = view->getPointOnFocalPlane(pos2d); - - collectPoint(pos3d); -} - void InteractiveScale::collectPoint(const SbVec3f& pos3d) { if (points.empty()) { @@ -581,18 +553,13 @@ void InteractiveScale::getMousePosition(void * ud, SoEventCallback * ecb) if (scale->points.size() == 1) { ecb->setHandled(); SbVec3f pos3d; - if (scale->allowOutsideImage) { - auto pos2d = l2e->getPosition(); - pos3d = view->getPointOnFocalPlane(pos2d); + + std::unique_ptr pp(view->getPointOnRay(l2e->getPosition(), scale->viewProv)); + if (pp.get()) { + pos3d = pp->getPoint(); } else { - std::unique_ptr pp(view->getPointOnRay(l2e->getPosition(), scale->viewProv)); - if (pp.get()) { - pos3d = pp->getPoint(); - } - else { - return; - } + return; } Base::Quantity quantity; @@ -630,7 +597,7 @@ void InteractiveScale::soEventFilter(void* ud, SoEventCallback* ecb) if (mbe->getButton() == SoMouseButtonEvent::BUTTON1 && mbe->getState() == SoButtonEvent::DOWN) { ecb->setHandled(); - scale->findPointOnPlane(ecb); + scale->findPointOnImagePlane(ecb); } if (mbe->getButton() == SoMouseButtonEvent::BUTTON2 && mbe->getState() == SoButtonEvent::DOWN) { diff --git a/src/Gui/TaskView/TaskImage.h b/src/Gui/TaskView/TaskImage.h index 41ffc97b05..5d2d0e5bed 100644 --- a/src/Gui/TaskView/TaskImage.h +++ b/src/Gui/TaskView/TaskImage.h @@ -52,7 +52,7 @@ public: ~InteractiveScale(); bool eventFilter(QObject* object, QEvent* event); - void activate(bool allowOutside); + void activate(); void deactivate(); bool isActive() const { return active; @@ -64,9 +64,7 @@ public: private: static void soEventFilter(void * ud, SoEventCallback * ecb); static void getMousePosition(void * ud, SoEventCallback * ecb); - void findPointOnPlane(SoEventCallback * ecb); void findPointOnImagePlane(SoEventCallback * ecb); - void findPointOnFocalPlane(SoEventCallback * ecb); void collectPoint(const SbVec3f&); void positionWidget(); @@ -80,7 +78,6 @@ Q_SIGNALS: private: bool active; - bool allowOutsideImage; Base::Placement placement; SoSeparator* root; SoDatumLabel* measureLabel; diff --git a/src/Gui/TaskView/TaskImage.ui b/src/Gui/TaskView/TaskImage.ui index 346b2f6520..589d949f81 100644 --- a/src/Gui/TaskView/TaskImage.ui +++ b/src/Gui/TaskView/TaskImage.ui @@ -242,16 +242,13 @@ - + Interactively scale the image by setting a length between two points of the image. Calibrate - - QToolButton::MenuButtonPopup -