Commit f69514ee authored by Yannick Verdie's avatar Yannick Verdie

New functions with QT GUI:

StatusBar with zoom/color/position information
user can display infor mation in statusbar with cvDisplayStatusBar(window,text,delay_ms)
parent 4606638b
......@@ -66,6 +66,7 @@ CV_EXPORTS double getWindowProperty(const string& winname, int prop_id);//YV
//Only for QT
CV_EXPORTS void displayOverlay(const string& winname, const string& text, int delayms);
CV_EXPORTS void displayStatusBar(const string& winname, const string& text, int delayms);
CV_EXPORTS int startLoop(int (*pt2Func)(int argc, char *argv[]), int argc, char* argv[]);
CV_EXPORTS void stopLoop();
......
......@@ -59,6 +59,7 @@ extern "C" {
//YV
//-----------New for QT
CVAPI(void) cvDisplayOverlay(const char* name, const char* text, int delayms);
CVAPI(void) cvDisplayStatusBar(const char* name, const char* text, int delayms);
CVAPI(int) cvStartLoop(int (*pt2Func)(int argc, char *argv[]), int argc, char* argv[]);
CVAPI(void) cvStopLoop();
//----------------------
......
......@@ -175,6 +175,11 @@ int startWindowThread()
}
#if defined (HAVE_QT)
void displayStatusBar(const string& name, const string& text, int delayms)
{
cvDisplayStatusBar(name.c_str(),text.c_str(), delayms);
}
void displayOverlay(const string& name, const string& text, int delayms)
{
cvDisplayOverlay(name.c_str(),text.c_str(), delayms);
......
This diff is collapsed.
......@@ -66,6 +66,7 @@
#include <QLabel>
#include <QIODevice>
#include <QShortcut>
#include <QStatusBar>
//Macro here
#define CV_MODE_NORMAL 0
......@@ -97,6 +98,7 @@ public slots:
void resizeWindow(QString name, int width, int height);
void showImage(QString name, void* arr);
void displayInfo( QString name, QString text, int delayms );
void displayStatusBar( QString name, QString text, int delayms );
void refreshEvents();
void timeOut();
void toggleFullScreen(QString name, double flags );
......@@ -129,6 +131,15 @@ private:
int* dataSlider;
};
class CustomLayout : public QVBoxLayout
{
Q_OBJECT
public:
CustomLayout();
int heightForWidth ( int w ) const;
bool hasHeightForWidth () const;
};
class CvWindow : public QWidget
{
Q_OBJECT
......@@ -139,10 +150,14 @@ public:
void setMouseCallBack(CvMouseCallback m, void* param);
void updateImage(void* arr);
void displayInfo(QString text, int delayms );
void displayStatusBar(QString text, int delayms );
QPointer<QBoxLayout> layout;
QString name;
int flags;
QPointer<QBoxLayout> layout;
QPointer<QStatusBar> myBar;
QPointer<QLabel> myBar_msg;
//QPointer<CustomLayout> layout;
protected:
void readSettings();
......@@ -169,12 +184,15 @@ class ViewPort : public QGraphicsView
{
Q_OBJECT
public:
ViewPort(QWidget* centralWidget, int mode = CV_MODE_NORMAL);
ViewPort(CvWindow* centralWidget, int mode = CV_MODE_NORMAL, bool keepRatio = true);
~ViewPort();
void updateImage(void* arr);
void startDisplayInfo(QString text, int delayms);
void setMouseCallBack(CvMouseCallback m, void* param);
IplImage* image2Draw_ipl;
QImage image2Draw_qt;
public slots:
//reference:
//http://www.qtcentre.org/wiki/index.php?title=QGraphicsView:_Smooth_Panning_and_Zooming
......@@ -191,22 +209,25 @@ public slots:
void resizeEvent ( QResizeEvent * );
private:
QGraphicsScene *myScene;
Qt::AspectRatioMode modeRatio;
QPoint deltaOffset;
QPoint computeOffset();
QPoint mouseCoordinate;
QPointF positionGrabbing;
QRect positionCorners;
QTransform matrixWorld;
QTransform matrixWorld_inv;
float ratioX, ratioY;
CvMouseCallback on_mouse;
void* on_mouse_param;
int mode;
IplImage* image2Draw;
bool keepRatio;
bool isSameSize(IplImage* img1,IplImage* img2);
QSize sizeHint() const;
QPointer<QWidget> centralWidget;
QPointer<CvWindow> centralWidget;
QPointer<QTimer> timerDisplay;
bool drawInfo;
QString infoText;
......@@ -221,6 +242,7 @@ private:
void drawInstructions(QPainter *painter);
void drawOverview(QPainter *painter);
void draw2D(QPainter *painter);
void drawStatusBar();
void controlImagePosition();
#if defined(OPENCV_GL)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment