fixed mouse painting in Qt bindings (to make watershed & inpaint demos work); increased the font in the detailed pixel image display.
This commit is contained in:
parent
8347cb8cf7
commit
11ed55ddb4
@ -46,12 +46,12 @@
|
|||||||
//Static and global first
|
//Static and global first
|
||||||
static GuiReceiver *guiMainThread = NULL;
|
static GuiReceiver *guiMainThread = NULL;
|
||||||
static int parameterSystemC = 1;
|
static int parameterSystemC = 1;
|
||||||
static char* parameterSystemV[] = {""};
|
static char* parameterSystemV[] = {(char*)""};
|
||||||
static bool multiThreads = false;
|
static bool multiThreads = false;
|
||||||
static int last_key = -1;
|
static int last_key = -1;
|
||||||
QWaitCondition key_pressed;
|
QWaitCondition key_pressed;
|
||||||
QMutex mutexKey;
|
QMutex mutexKey;
|
||||||
static const unsigned int threshold_zoom_img_region = 15;
|
static const unsigned int threshold_zoom_img_region = 30;
|
||||||
//the minimum zoom value to start displaying the values in the grid
|
//the minimum zoom value to start displaying the values in the grid
|
||||||
//that is also the number of pixel per grid
|
//that is also the number of pixel per grid
|
||||||
|
|
||||||
@ -979,7 +979,7 @@ void GuiReceiver::destroyAllWindow()
|
|||||||
|
|
||||||
foreach (QObject *obj, QApplication::topLevelWidgets())
|
foreach (QObject *obj, QApplication::topLevelWidgets())
|
||||||
{
|
{
|
||||||
if (obj->metaObject ()->className () == "CvWindow")
|
if (obj->metaObject ()->className () == QString("CvWindow"))
|
||||||
{
|
{
|
||||||
delete obj;
|
delete obj;
|
||||||
}
|
}
|
||||||
@ -1320,9 +1320,6 @@ void CvButtonbar::addButton( QString name, CvButtonCallback call, void* userdata
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//buttons here
|
//buttons here
|
||||||
CvPushButton::CvPushButton(CvButtonbar* arg1, QString arg2, CvButtonCallback arg3, void* arg4)
|
CvPushButton::CvPushButton(CvButtonbar* arg1, QString arg2, CvButtonCallback arg3, void* arg4)
|
||||||
{
|
{
|
||||||
@ -1460,10 +1457,6 @@ CvWinProperties::~CvWinProperties()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Here CvWindow class
|
//Here CvWindow class
|
||||||
CvWindow::CvWindow(QString arg, int arg2)
|
CvWindow::CvWindow(QString arg, int arg2)
|
||||||
{
|
{
|
||||||
@ -2391,13 +2384,11 @@ void ViewPort::setMouseCallBack(CvMouseCallback m, void* param)
|
|||||||
on_mouse_param = param;
|
on_mouse_param = param;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ViewPort::setOpenGLCallback(CvOpenGLCallback func,void* userdata, double angle_arg, double zmin_arg, double zmax_arg)
|
#if defined( HAVE_QT_OPENGL )
|
||||||
|
void ViewPort::setOpenGLCallback(CvOpenGLCallback func, void* userdata, double angle_arg, double zmin_arg, double zmax_arg)
|
||||||
{
|
{
|
||||||
//avoid unreferenced formal parameter warning with vs 2008
|
//avoid unreferenced formal parameter warning with vs 2008
|
||||||
//http://msdn.microsoft.com/en-en/library/26kb9fy0%28VS.80%29.aspx
|
//http://msdn.microsoft.com/en-en/library/26kb9fy0%28VS.80%29.aspx
|
||||||
func;userdata;angle_arg;zmin_arg;zmax_arg;
|
|
||||||
|
|
||||||
#if defined( HAVE_QT_OPENGL )
|
|
||||||
on_openGL_draw3D = func;
|
on_openGL_draw3D = func;
|
||||||
on_openGL_param = userdata;
|
on_openGL_param = userdata;
|
||||||
|
|
||||||
@ -2417,8 +2408,12 @@ void ViewPort::setOpenGLCallback(CvOpenGLCallback func,void* userdata, double an
|
|||||||
zmax = zmax_arg;
|
zmax = zmax_arg;
|
||||||
else
|
else
|
||||||
zmax = DEFAULT_ZMAX;
|
zmax = DEFAULT_ZMAX;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
void ViewPort::setOpenGLCallback(CvOpenGLCallback, void*, double, double, double)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void ViewPort::controlImagePosition()
|
void ViewPort::controlImagePosition()
|
||||||
{
|
{
|
||||||
@ -2531,7 +2526,6 @@ void ViewPort::mousePressEvent(QMouseEvent *event)
|
|||||||
|
|
||||||
void ViewPort::mouseReleaseEvent(QMouseEvent *event)
|
void ViewPort::mouseReleaseEvent(QMouseEvent *event)
|
||||||
{
|
{
|
||||||
|
|
||||||
int cv_event = -1, flags = 0;
|
int cv_event = -1, flags = 0;
|
||||||
QPoint pt = event->pos();
|
QPoint pt = event->pos();
|
||||||
|
|
||||||
@ -2559,14 +2553,13 @@ void ViewPort::mouseDoubleClickEvent(QMouseEvent *event)
|
|||||||
|
|
||||||
void ViewPort::mouseMoveEvent(QMouseEvent *event)
|
void ViewPort::mouseMoveEvent(QMouseEvent *event)
|
||||||
{
|
{
|
||||||
int cv_event = -1, flags = 0;
|
int cv_event = CV_EVENT_MOUSEMOVE, flags = 0;
|
||||||
QPoint pt = event->pos();
|
QPoint pt = event->pos();
|
||||||
|
|
||||||
//icvmouseHandler: pass parameters for cv_event, flags
|
//icvmouseHandler: pass parameters for cv_event, flags
|
||||||
icvmouseHandler(event, mouse_move, cv_event, flags);
|
icvmouseHandler(event, mouse_move, cv_event, flags);
|
||||||
icvmouseProcessing(QPointF(pt), cv_event, flags);
|
icvmouseProcessing(QPointF(pt), cv_event, flags);
|
||||||
|
|
||||||
|
|
||||||
if (param_matrixWorld.m11()>1 && event->buttons() == Qt::LeftButton)
|
if (param_matrixWorld.m11()>1 && event->buttons() == Qt::LeftButton)
|
||||||
{
|
{
|
||||||
QPointF dxy = (pt - positionGrabbing)/param_matrixWorld.m11();
|
QPointF dxy = (pt - positionGrabbing)/param_matrixWorld.m11();
|
||||||
@ -2582,30 +2575,52 @@ void ViewPort::mouseMoveEvent(QMouseEvent *event)
|
|||||||
QWidget::mouseMoveEvent(event);
|
QWidget::mouseMoveEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*void ViewPort::dragMoveEvent(QDragMoveEvent *event)
|
||||||
|
{
|
||||||
|
QPoint pt = event->pos();
|
||||||
|
|
||||||
|
//icvmouseHandler: pass parameters for cv_event, flags
|
||||||
|
icvmouseProcessing(QPointF(pt), CV_EVENT_MOUSEMOVE, CV_EVENT_FLAG_LBUTTON);
|
||||||
|
|
||||||
|
if (param_matrixWorld.m11()>1)
|
||||||
|
{
|
||||||
|
QPointF dxy = (pt - positionGrabbing)/param_matrixWorld.m11();
|
||||||
|
positionGrabbing = event->pos();
|
||||||
|
moveView(dxy);
|
||||||
|
}
|
||||||
|
|
||||||
|
//I update the statusbar here because if the user does a cvWaitkey(0) (like with inpaint.cpp)
|
||||||
|
//the status bar will only be repaint when a click occurs.
|
||||||
|
if (centralWidget->myStatusBar)
|
||||||
|
viewport()->update();
|
||||||
|
|
||||||
|
QWidget::dragMoveEvent(event);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
//up, down, dclick, move
|
//up, down, dclick, move
|
||||||
void ViewPort::icvmouseHandler(QMouseEvent *event, type_mouse_event category, int &cv_event, int &flags)
|
void ViewPort::icvmouseHandler(QMouseEvent *event, type_mouse_event category, int &cv_event, int &flags)
|
||||||
{
|
{
|
||||||
|
Qt::KeyboardModifiers modifiers = event->modifiers();
|
||||||
|
Qt::MouseButtons buttons = event->buttons();
|
||||||
|
|
||||||
switch(event->modifiers())
|
flags = 0;
|
||||||
{
|
if(modifiers & Qt::ShiftModifier)
|
||||||
case Qt::ShiftModifier:
|
flags |= CV_EVENT_FLAG_SHIFTKEY;
|
||||||
flags = CV_EVENT_FLAG_SHIFTKEY;
|
if(modifiers & Qt::ControlModifier)
|
||||||
break;
|
flags |= CV_EVENT_FLAG_CTRLKEY;
|
||||||
case Qt::ControlModifier:
|
if(modifiers & Qt::AltModifier)
|
||||||
flags = CV_EVENT_FLAG_CTRLKEY;
|
flags |= CV_EVENT_FLAG_ALTKEY;
|
||||||
break;
|
|
||||||
case Qt::AltModifier:
|
|
||||||
flags = CV_EVENT_FLAG_ALTKEY;
|
|
||||||
break;
|
|
||||||
case Qt::NoModifier :
|
|
||||||
break;
|
|
||||||
case Qt::MetaModifier:
|
|
||||||
break;
|
|
||||||
case Qt::KeypadModifier:
|
|
||||||
break;
|
|
||||||
default:;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if(buttons & Qt::LeftButton)
|
||||||
|
flags |= CV_EVENT_FLAG_LBUTTON;
|
||||||
|
if(buttons & Qt::RightButton)
|
||||||
|
flags |= CV_EVENT_FLAG_RBUTTON;
|
||||||
|
if(buttons & Qt::MidButton)
|
||||||
|
flags |= CV_EVENT_FLAG_MBUTTON;
|
||||||
|
|
||||||
|
cv_event = CV_EVENT_MOUSEMOVE;
|
||||||
switch(event->button())
|
switch(event->button())
|
||||||
{
|
{
|
||||||
case Qt::LeftButton:
|
case Qt::LeftButton:
|
||||||
@ -2634,8 +2649,8 @@ void ViewPort::icvmouseProcessing(QPointF pt, int cv_event, int flags)
|
|||||||
mouseCoordinate.ry()=floor(pfy/ratioY);
|
mouseCoordinate.ry()=floor(pfy/ratioY);
|
||||||
|
|
||||||
if (on_mouse)
|
if (on_mouse)
|
||||||
on_mouse( cv_event, mouseCoordinate.x(),mouseCoordinate.y(), flags, on_mouse_param );
|
on_mouse( cv_event, mouseCoordinate.x(),
|
||||||
|
mouseCoordinate.y(), flags, on_mouse_param );
|
||||||
}
|
}
|
||||||
|
|
||||||
QSize ViewPort::sizeHint() const
|
QSize ViewPort::sizeHint() const
|
||||||
@ -2759,7 +2774,7 @@ void ViewPort::drawStatusBar()
|
|||||||
|
|
||||||
if (nbChannelOriginImage==CV_8UC3 )
|
if (nbChannelOriginImage==CV_8UC3 )
|
||||||
{
|
{
|
||||||
centralWidget->myStatusBar_msg->setText(tr("<font color='black'>Coordinate: %1x%2 ~ </font>")
|
centralWidget->myStatusBar_msg->setText(tr("<font color='black'>(x=%1, y=%2) ~ </font>")
|
||||||
.arg(mouseCoordinate.x())
|
.arg(mouseCoordinate.x())
|
||||||
.arg(mouseCoordinate.y())+
|
.arg(mouseCoordinate.y())+
|
||||||
tr("<font color='red'>R:%3 </font>").arg(qRed(rgbValue))+//.arg(value.val[0])+
|
tr("<font color='red'>R:%3 </font>").arg(qRed(rgbValue))+//.arg(value.val[0])+
|
||||||
@ -2771,10 +2786,10 @@ void ViewPort::drawStatusBar()
|
|||||||
if (nbChannelOriginImage==CV_8UC1)
|
if (nbChannelOriginImage==CV_8UC1)
|
||||||
{
|
{
|
||||||
//all the channel have the same value (because of cvconvertimage), so only the r channel is dsplayed
|
//all the channel have the same value (because of cvconvertimage), so only the r channel is dsplayed
|
||||||
centralWidget->myStatusBar_msg->setText(tr("<font color='black'>Coordinate: %1x%2 ~ </font>")
|
centralWidget->myStatusBar_msg->setText(tr("<font color='black'>(x=%1, y=%2) ~ </font>")
|
||||||
.arg(mouseCoordinate.x())
|
.arg(mouseCoordinate.x())
|
||||||
.arg(mouseCoordinate.y())+
|
.arg(mouseCoordinate.y())+
|
||||||
tr("<font color='grey'>grey:%3 </font>").arg(qRed(rgbValue))
|
tr("<font color='grey'>L:%3 </font>").arg(qRed(rgbValue))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2806,7 +2821,7 @@ void ViewPort::drawImgRegion(QPainter *painter)
|
|||||||
int original_font_size = f.pointSize();
|
int original_font_size = f.pointSize();
|
||||||
//change font size
|
//change font size
|
||||||
//f.setPointSize(4+(param_matrixWorld.m11()-threshold_zoom_img_region)/5);
|
//f.setPointSize(4+(param_matrixWorld.m11()-threshold_zoom_img_region)/5);
|
||||||
f.setPixelSize(6+(param_matrixWorld.m11()-threshold_zoom_img_region)/5);
|
f.setPixelSize(10+(param_matrixWorld.m11()-threshold_zoom_img_region)/5);
|
||||||
painter->setFont(f);
|
painter->setFont(f);
|
||||||
QString val;
|
QString val;
|
||||||
QRgb rgbValue;
|
QRgb rgbValue;
|
||||||
|
@ -434,6 +434,7 @@ private:
|
|||||||
void mousePressEvent(QMouseEvent *event);
|
void mousePressEvent(QMouseEvent *event);
|
||||||
void mouseReleaseEvent(QMouseEvent *event);
|
void mouseReleaseEvent(QMouseEvent *event);
|
||||||
void mouseDoubleClickEvent(QMouseEvent *event);
|
void mouseDoubleClickEvent(QMouseEvent *event);
|
||||||
|
//void dragMoveEvent(QDragMoveEvent *event);
|
||||||
void drawInstructions(QPainter *painter);
|
void drawInstructions(QPainter *painter);
|
||||||
void drawViewOverview(QPainter *painter);
|
void drawViewOverview(QPainter *painter);
|
||||||
void drawImgRegion(QPainter *painter);
|
void drawImgRegion(QPainter *painter);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user