Commit 358ec044 authored by Pavel Rojtberg's avatar Pavel Rojtberg

highgui: add property WND_PROP_VISIBLE

checks whether the window exists and is visible. On QT closing a window
merley hides it, so the common hack for checking whether a window exists

exists = cv2.getWindowProperty(.., 0) >= 0

does not work.
parent 8333ea41
...@@ -196,7 +196,8 @@ enum WindowPropertyFlags { ...@@ -196,7 +196,8 @@ enum WindowPropertyFlags {
WND_PROP_FULLSCREEN = 0, //!< fullscreen property (can be WINDOW_NORMAL or WINDOW_FULLSCREEN). WND_PROP_FULLSCREEN = 0, //!< fullscreen property (can be WINDOW_NORMAL or WINDOW_FULLSCREEN).
WND_PROP_AUTOSIZE = 1, //!< autosize property (can be WINDOW_NORMAL or WINDOW_AUTOSIZE). WND_PROP_AUTOSIZE = 1, //!< autosize property (can be WINDOW_NORMAL or WINDOW_AUTOSIZE).
WND_PROP_ASPECT_RATIO = 2, //!< window's aspect ration (can be set to WINDOW_FREERATIO or WINDOW_KEEPRATIO). WND_PROP_ASPECT_RATIO = 2, //!< window's aspect ration (can be set to WINDOW_FREERATIO or WINDOW_KEEPRATIO).
WND_PROP_OPENGL = 3 //!< opengl support. WND_PROP_OPENGL = 3, //!< opengl support.
WND_PROP_VISIBLE = 4 //!< checks whether the window exists and is visible
}; };
//! Mouse Events see cv::MouseCallback //! Mouse Events see cv::MouseCallback
......
...@@ -111,6 +111,7 @@ enum ...@@ -111,6 +111,7 @@ enum
CV_WND_PROP_AUTOSIZE = 1, //to change/get window's autosize property CV_WND_PROP_AUTOSIZE = 1, //to change/get window's autosize property
CV_WND_PROP_ASPECTRATIO= 2, //to change/get window's aspectratio property CV_WND_PROP_ASPECTRATIO= 2, //to change/get window's aspectratio property
CV_WND_PROP_OPENGL = 3, //to change/get window's opengl support CV_WND_PROP_OPENGL = 3, //to change/get window's opengl support
CV_WND_PROP_VISIBLE = 4,
//These 2 flags are used by cvNamedWindow and cvSet/GetWindowProperty //These 2 flags are used by cvNamedWindow and cvSet/GetWindowProperty
CV_WINDOW_NORMAL = 0x00000000, //the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size CV_WINDOW_NORMAL = 0x00000000, //the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size
......
...@@ -123,6 +123,7 @@ double cvGetRatioWindow_QT(const char* name); ...@@ -123,6 +123,7 @@ double cvGetRatioWindow_QT(const char* name);
void cvSetRatioWindow_QT(const char* name,double prop_value); void cvSetRatioWindow_QT(const char* name,double prop_value);
double cvGetOpenGlProp_QT(const char* name); double cvGetOpenGlProp_QT(const char* name);
double cvGetPropVisible_QT(const char* name);
#endif #endif
#endif /* __HIGHGUI_H_ */ #endif /* __HIGHGUI_H_ */
...@@ -153,6 +153,14 @@ CV_IMPL double cvGetWindowProperty(const char* name, int prop_id) ...@@ -153,6 +153,14 @@ CV_IMPL double cvGetWindowProperty(const char* name, int prop_id)
#endif #endif
break; break;
case CV_WND_PROP_VISIBLE:
#if defined (HAVE_QT)
return cvGetPropVisible_QT(name);
#else
return -1;
#endif
break;
default: default:
return -1; return -1;
} }
......
...@@ -138,6 +138,20 @@ double cvGetRatioWindow_QT(const char* name) ...@@ -138,6 +138,20 @@ double cvGetRatioWindow_QT(const char* name)
return result; return result;
} }
double cvGetPropVisible_QT(const char* name) {
if (!guiMainThread)
CV_Error( CV_StsNullPtr, "NULL guiReceiver (please create a window)" );
double result = 0;
QMetaObject::invokeMethod(guiMainThread,
"getWindowVisible",
autoBlockingConnection(),
Q_RETURN_ARG(double, result),
Q_ARG(QString, QString(name)));
return result;
}
void cvSetRatioWindow_QT(const char* name,double prop_value) void cvSetRatioWindow_QT(const char* name,double prop_value)
{ {
...@@ -903,6 +917,16 @@ double GuiReceiver::getPropWindow(QString name) ...@@ -903,6 +917,16 @@ double GuiReceiver::getPropWindow(QString name)
return (double) w->getPropWindow(); return (double) w->getPropWindow();
} }
double GuiReceiver::getWindowVisible(QString name)
{
QPointer<CvWindow> w = icvFindWindowByName(name);
if (!w)
return 0;
return (double) w->isVisible();
}
void GuiReceiver::setPropWindow(QString name, double arg2) void GuiReceiver::setPropWindow(QString name, double arg2)
{ {
......
...@@ -132,6 +132,7 @@ public slots: ...@@ -132,6 +132,7 @@ public slots:
double getPropWindow(QString name); double getPropWindow(QString name);
void setPropWindow(QString name, double flags ); void setPropWindow(QString name, double flags );
void setWindowTitle(QString name, QString title); void setWindowTitle(QString name, QString title);
double getWindowVisible(QString name);
double getRatioWindow(QString name); double getRatioWindow(QString name);
void setRatioWindow(QString name, double arg2 ); void setRatioWindow(QString name, double arg2 );
void saveWindowParameters(QString name); void saveWindowParameters(QString name);
......
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