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 {
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_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
......
......@@ -111,6 +111,7 @@ enum
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_OPENGL = 3, //to change/get window's opengl support
CV_WND_PROP_VISIBLE = 4,
//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
......
......@@ -123,6 +123,7 @@ double cvGetRatioWindow_QT(const char* name);
void cvSetRatioWindow_QT(const char* name,double prop_value);
double cvGetOpenGlProp_QT(const char* name);
double cvGetPropVisible_QT(const char* name);
#endif
#endif /* __HIGHGUI_H_ */
......@@ -153,6 +153,14 @@ CV_IMPL double cvGetWindowProperty(const char* name, int prop_id)
#endif
break;
case CV_WND_PROP_VISIBLE:
#if defined (HAVE_QT)
return cvGetPropVisible_QT(name);
#else
return -1;
#endif
break;
default:
return -1;
}
......
......@@ -138,6 +138,20 @@ double cvGetRatioWindow_QT(const char* name)
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)
{
......@@ -903,6 +917,16 @@ double GuiReceiver::getPropWindow(QString name)
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)
{
......
......@@ -132,6 +132,7 @@ public slots:
double getPropWindow(QString name);
void setPropWindow(QString name, double flags );
void setWindowTitle(QString name, QString title);
double getWindowVisible(QString name);
double getRatioWindow(QString name);
void setRatioWindow(QString name, double arg2 );
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