}
-
-
-CV_IMPL int cvInitSystem( int, char** )
-{
- return 0;
-}
-
CV_IMPL int cvWaitKey( int arg )
{
return (CvButtonbar*) icvFindBarbyName( layout, nameQt, type_CvButtonbar);
}
-int icvInitSystem()
+int icvInitSystem(int *c, char** v)
{
static int wasInitialized = 0;
// check initialization status
if( !wasInitialized)
{
- new QApplication(parameterSystemC,parameterSystemV);
+ new QApplication(*c,v);
wasInitialized = 1;
- //qDebug()<<"init done";
+ qDebug()<<"init done";
#if defined( HAVE_QT_OPENGL )//OK tested !
- //qDebug()<<"opengl support available";
+ qDebug()<<"opengl support available";
#endif
}
return 0;
}
+CV_IMPL int cvInitSystem( int, char** )
+{
+ icvInitSystem(¶meterSystemC, parameterSystemV);
+ return 0;
+}
+
+
CV_IMPL int cvNamedWindow( const char* name, int flags )
{
GuiReceiver::GuiReceiver() : _bTimeOut(false), nb_windows(0)
{
- icvInitSystem();
+ icvInitSystem(¶meterSystemC, parameterSystemV);
timer = new QTimer;
QObject::connect(timer, SIGNAL(timeout()), this, SLOT(timeOut()));
#if defined( HAVE_QT_OPENGL )
+
if ( mode_display == CV_MODE_OPENGL)
{
//QGLWidget* wGL = new QGLWidget(QGLFormat(QGL::SampleBuffers));
setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
+ if (param_keepRatio == CV_WINDOW_KEEPRATIO)
+ {
+ //TODO: fix this bug:
+ //::::blinking in OpenGL with CV_WINDOW_KEEPRATIO::::
+ //The raison is that to move the widget in the middle and resize it manually to keep the aspect ratio,
+ //we resize in resizeEvent() and use a trick not to be blocked in an infinity loop.
+ //This is working fine if the viewport is not OpenGL, however we have two rendering with OpenGL.
+ //The first rendering with the widget not moved in the midle (so stuck in top left), then the final and correct rendering.
+ //This two rendering are visible with OpenGL and CV_WINDOW_KEEPRATIO but not with native rendering (why ???)
+
+ //I tried to use Qt::AlignCenter of the layout manager but the widget does not expand anymore
+ //I tried to center with painter.drawImage (in draw2D), but the imgRegion and all other function using the size of the widget will not work anymore.
+ startDisplayInfo("WARNING: For now, you cannot use OpenGL rendering with CV_WINDOW_KEEPRATIO, so we changed to CV_WINDOW_FREERATIO", 5000);
+ setRatio(CV_WINDOW_FREERATIO);
+ }
+
+ //setViewport(new QGLWidget());
angle = DEFAULT_ANGLE;
zmin = DEFAULT_ZMIN;
zmax = DEFAULT_ZMAX;
initGL();
}
+
#endif
image2Draw_ipl=cvCreateImage(cvSize(centralWidget->width(),centralWidget->height()),IPL_DEPTH_8U,3);
void ViewPort::setRatio(int flags)
{
+ centralWidget->param_ratio_mode = flags;
param_keepRatio = flags;
updateGeometry();
viewport()->update();
if (param_matrixWorld.m11()>=threshold_zoom_img_region)
{
if (centralWidget->param_flags == CV_WINDOW_NORMAL)
- startDisplayInfo("WARNING: The values displayed are the values of the resized image. If you want the values of the original image, use CV_WINDOW_AUTORESIZE", 1000);
+ startDisplayInfo("WARNING: The values displayed are the resized image's values. If you want the original image's values, use CV_WINDOW_AUTORESIZE", 1000);
drawImgRegion(&myPainter);
}
if (nbChannelOriginImage==3)
{
//for debug
+ /*
val = tr("%1 %2").arg(point2.x()).arg(point2.y());
painter->setPen(QPen(Qt::black, 1));
painter->drawText(QRect(point1.x(),point1.y(),param_matrixWorld.m11(),param_matrixWorld.m11()/2),
Qt::AlignCenter, val);
+ */
val = tr("%1").arg(qRed(rgbValue));
painter->setPen(QPen(Qt::red, 1));