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