@@ -55,6 +55,10 @@ ManagedDisplayWidget::ManagedDisplayWidget(QWidget *parent) :
|
||||
&ManagedDisplayWidgetOpenGL::frameSwapped,
|
||||
this, &ManagedDisplayWidget::frameSwapped, Qt::DirectConnection);
|
||||
|
||||
connect(static_cast<ManagedDisplayWidgetOpenGL*>(inner_widget_),
|
||||
&ManagedDisplayWidgetOpenGL::OnMouseMove,
|
||||
this, &ManagedDisplayWidget::InnerWidgetMouseMove);
|
||||
|
||||
// Create OpenGL renderer
|
||||
attached_renderer_ = new OpenGLRenderer(this);
|
||||
} else {
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#ifndef MANAGEDDISPLAYOBJECT_H
|
||||
#define MANAGEDDISPLAYOBJECT_H
|
||||
|
||||
#include <QMouseEvent>
|
||||
#include <QOpenGLContext>
|
||||
#include <QOpenGLWidget>
|
||||
|
||||
@@ -46,6 +47,8 @@ signals:
|
||||
|
||||
void OnDestroy();
|
||||
|
||||
void OnMouseMove(QMouseEvent* e);
|
||||
|
||||
protected:
|
||||
virtual void initializeGL() override
|
||||
{
|
||||
@@ -60,6 +63,13 @@ protected:
|
||||
emit OnPaint();
|
||||
}
|
||||
|
||||
virtual void mouseMoveEvent(QMouseEvent* e) override
|
||||
{
|
||||
emit OnMouseMove(e);
|
||||
|
||||
QOpenGLWidget::mouseMoveEvent(e);
|
||||
}
|
||||
|
||||
private slots:
|
||||
void DestroyListener()
|
||||
{
|
||||
@@ -144,6 +154,8 @@ signals:
|
||||
|
||||
void frameSwapped();
|
||||
|
||||
void InnerWidgetMouseMove(QMouseEvent* event);
|
||||
|
||||
protected:
|
||||
/**
|
||||
* @brief Provides access to the color processor (nullptr if none is set)
|
||||
|
||||
@@ -49,6 +49,8 @@ ViewerDisplayWidget::ViewerDisplayWidget(QWidget *parent) :
|
||||
{
|
||||
connect(Core::instance(), &Core::ToolChanged, this, &ViewerDisplayWidget::UpdateCursor);
|
||||
|
||||
connect(this, &ViewerDisplayWidget::InnerWidgetMouseMove, this, &ViewerDisplayWidget::EmitColorAtCursor);
|
||||
|
||||
// Initializes cursor based on tool
|
||||
UpdateCursor();
|
||||
}
|
||||
@@ -84,7 +86,7 @@ void ViewerDisplayWidget::UpdateCursor()
|
||||
void ViewerDisplayWidget::SetSignalCursorColorEnabled(bool e)
|
||||
{
|
||||
signal_cursor_color_ = e;
|
||||
setMouseTracking(e);
|
||||
inner_widget()->setMouseTracking(e);
|
||||
}
|
||||
|
||||
void ViewerDisplayWidget::SetImage(FramePtr in_buffer)
|
||||
@@ -211,27 +213,6 @@ void ViewerDisplayWidget::mousePressEvent(QMouseEvent *event)
|
||||
|
||||
void ViewerDisplayWidget::mouseMoveEvent(QMouseEvent *event)
|
||||
{
|
||||
// Do this no matter what, emits signal to any pixel samplers
|
||||
if (signal_cursor_color_) {
|
||||
Color reference, display;
|
||||
|
||||
if (last_loaded_buffer_) {
|
||||
QVector3D pixel_pos(static_cast<float>(event->x()) / static_cast<float>(width()) * 2.0f - 1.0f,
|
||||
static_cast<float>(event->y()) / static_cast<float>(height()) * 2.0f - 1.0f,
|
||||
0);
|
||||
|
||||
pixel_pos = GenerateWorldTransform().inverted() * pixel_pos;
|
||||
|
||||
int frame_x = qRound((pixel_pos.x() + 1.0f) * 0.5f * last_loaded_buffer_->width());
|
||||
int frame_y = qRound((pixel_pos.y() + 1.0f) * 0.5f * last_loaded_buffer_->height());
|
||||
|
||||
reference = last_loaded_buffer_->get_pixel(frame_x, frame_y);
|
||||
display = color_service()->ConvertColor(reference);
|
||||
}
|
||||
|
||||
emit CursorColor(reference, display);
|
||||
}
|
||||
|
||||
// Handle hand dragging
|
||||
if (hand_dragging_) {
|
||||
|
||||
@@ -444,4 +425,23 @@ QTransform ViewerDisplayWidget::GenerateGizmoTransform()
|
||||
return gizmo_transform;
|
||||
}
|
||||
|
||||
void ViewerDisplayWidget::EmitColorAtCursor(QMouseEvent *e)
|
||||
{
|
||||
// Do this no matter what, emits signal to any pixel samplers
|
||||
if (signal_cursor_color_) {
|
||||
Color reference, display;
|
||||
|
||||
if (last_loaded_buffer_) {
|
||||
QPointF pixel_pos = GenerateGizmoTransform().inverted().map(e->pos());
|
||||
|
||||
pixel_pos /= last_loaded_buffer_->video_params().divider();
|
||||
|
||||
reference = last_loaded_buffer_->get_pixel(qRound(pixel_pos.x()), qRound(pixel_pos.y()));
|
||||
display = color_service()->ConvertColor(reference);
|
||||
}
|
||||
|
||||
emit CursorColor(reference, display);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -246,6 +246,9 @@ private:
|
||||
|
||||
bool deinterlace_;
|
||||
|
||||
private slots:
|
||||
void EmitColorAtCursor(QMouseEvent* e);
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user