mirror of
https://github.com/opencv/opencv.git
synced 2024-11-29 22:00:25 +08:00
Merge pull request #3432 from taka-no-me:wintitle
This commit is contained in:
commit
7ed5284ae6
@ -38,6 +38,11 @@ if(POLICY CMP0022)
|
|||||||
cmake_policy(SET CMP0022 OLD)
|
cmake_policy(SET CMP0022 OLD)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(POLICY CMP0026)
|
||||||
|
# silence cmake 3.0+ warnings about reading LOCATION attribute
|
||||||
|
cmake_policy(SET CMP0026 OLD)
|
||||||
|
endif()
|
||||||
|
|
||||||
# must go before the project command
|
# must go before the project command
|
||||||
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
|
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
|
||||||
if(DEFINED CMAKE_BUILD_TYPE)
|
if(DEFINED CMAKE_BUILD_TYPE)
|
||||||
|
@ -136,6 +136,8 @@ CV_EXPORTS_W void moveWindow(const String& winname, int x, int y);
|
|||||||
|
|
||||||
CV_EXPORTS_W void setWindowProperty(const String& winname, int prop_id, double prop_value);
|
CV_EXPORTS_W void setWindowProperty(const String& winname, int prop_id, double prop_value);
|
||||||
|
|
||||||
|
CV_EXPORTS_W void setWindowTitle(const String& winname, const String& title);
|
||||||
|
|
||||||
CV_EXPORTS_W double getWindowProperty(const String& winname, int prop_id);
|
CV_EXPORTS_W double getWindowProperty(const String& winname, int prop_id);
|
||||||
|
|
||||||
//! assigns callback for mouse events
|
//! assigns callback for mouse events
|
||||||
|
@ -379,7 +379,8 @@ CV_IMPL void cvUpdateWindow(const char*)
|
|||||||
cv::QtFont cv::fontQt(const String& nameFont, int pointSize, Scalar color, int weight, int style, int /*spacing*/)
|
cv::QtFont cv::fontQt(const String& nameFont, int pointSize, Scalar color, int weight, int style, int /*spacing*/)
|
||||||
{
|
{
|
||||||
CvFont f = cvFontQt(nameFont.c_str(), pointSize,color,weight, style);
|
CvFont f = cvFontQt(nameFont.c_str(), pointSize,color,weight, style);
|
||||||
return *(cv::QtFont*)(&f);
|
void* pf = &f; // to suppress strict-aliasing
|
||||||
|
return *(cv::QtFont*)pf;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cv::addText( const Mat& img, const String& text, Point org, const QtFont& font)
|
void cv::addText( const Mat& img, const String& text, Point org, const QtFont& font)
|
||||||
@ -490,6 +491,12 @@ int cv::createButton(const String&, ButtonCallback, void*, int , bool )
|
|||||||
// version with a more capable one without a need to recompile dependent
|
// version with a more capable one without a need to recompile dependent
|
||||||
// applications or libraries.
|
// applications or libraries.
|
||||||
|
|
||||||
|
void cv::setWindowTitle(const String&, const String&)
|
||||||
|
{
|
||||||
|
CV_Error(Error::StsNotImplemented, "The function is not implemented. "
|
||||||
|
"Rebuild the library with Windows, GTK+ 2.x or Carbon support. "
|
||||||
|
"If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script");
|
||||||
|
}
|
||||||
|
|
||||||
#define CV_NO_GUI_ERROR(funcname) \
|
#define CV_NO_GUI_ERROR(funcname) \
|
||||||
cvError( CV_StsError, funcname, \
|
cvError( CV_StsError, funcname, \
|
||||||
|
@ -181,6 +181,18 @@ void cvSetPropWindow_QT(const char* name,double prop_value)
|
|||||||
Q_ARG(double, prop_value));
|
Q_ARG(double, prop_value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cv::setWindowTitle(const String& winname, const String& title)
|
||||||
|
{
|
||||||
|
if (!guiMainThread)
|
||||||
|
CV_Error(Error::StsNullPtr, "NULL guiReceiver (please create a window)");
|
||||||
|
|
||||||
|
QMetaObject::invokeMethod(guiMainThread,
|
||||||
|
"setWindowTitle",
|
||||||
|
autoBlockingConnection(),
|
||||||
|
Q_ARG(QString, QString(winname.c_str())),
|
||||||
|
Q_ARG(QString, QString(title.c_str())));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void cvSetModeWindow_QT(const char* name, double prop_value)
|
void cvSetModeWindow_QT(const char* name, double prop_value)
|
||||||
{
|
{
|
||||||
@ -371,7 +383,7 @@ static CvWindow* icvFindWindowByName(QString name)
|
|||||||
if (temp->type == type_CvWindow)
|
if (temp->type == type_CvWindow)
|
||||||
{
|
{
|
||||||
CvWindow* w = (CvWindow*) temp;
|
CvWindow* w = (CvWindow*) temp;
|
||||||
if (w->windowTitle() == name)
|
if (w->objectName() == name)
|
||||||
{
|
{
|
||||||
window = w;
|
window = w;
|
||||||
break;
|
break;
|
||||||
@ -527,7 +539,7 @@ CV_IMPL const char* cvGetWindowName(void* window_handle)
|
|||||||
if( !window_handle )
|
if( !window_handle )
|
||||||
CV_Error( CV_StsNullPtr, "NULL window handler" );
|
CV_Error( CV_StsNullPtr, "NULL window handler" );
|
||||||
|
|
||||||
return ((CvWindow*)window_handle)->windowTitle().toLatin1().data();
|
return ((CvWindow*)window_handle)->objectName().toLatin1().data();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -871,6 +883,22 @@ void GuiReceiver::setPropWindow(QString name, double arg2)
|
|||||||
w->setPropWindow(flags);
|
w->setPropWindow(flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GuiReceiver::setWindowTitle(QString name, QString title)
|
||||||
|
{
|
||||||
|
QPointer<CvWindow> w = icvFindWindowByName(name);
|
||||||
|
|
||||||
|
if (!w)
|
||||||
|
{
|
||||||
|
cvNamedWindow(name.toLatin1().data());
|
||||||
|
w = icvFindWindowByName(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!w)
|
||||||
|
return;
|
||||||
|
|
||||||
|
w->setWindowTitle(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
double GuiReceiver::isFullScreen(QString name)
|
double GuiReceiver::isFullScreen(QString name)
|
||||||
{
|
{
|
||||||
@ -1494,7 +1522,7 @@ void CvWinProperties::showEvent(QShowEvent* evnt)
|
|||||||
//no value pos was saved so we let Qt move the window in the middle of its parent (event ignored).
|
//no value pos was saved so we let Qt move the window in the middle of its parent (event ignored).
|
||||||
//then hide will save the last position and thus, we want to retreive it (event accepted).
|
//then hide will save the last position and thus, we want to retreive it (event accepted).
|
||||||
QPoint mypos(-1, -1);
|
QPoint mypos(-1, -1);
|
||||||
QSettings settings("OpenCV2", windowTitle());
|
QSettings settings("OpenCV2", objectName());
|
||||||
mypos = settings.value("pos", mypos).toPoint();
|
mypos = settings.value("pos", mypos).toPoint();
|
||||||
|
|
||||||
if (mypos.x() >= 0)
|
if (mypos.x() >= 0)
|
||||||
@ -1511,7 +1539,7 @@ void CvWinProperties::showEvent(QShowEvent* evnt)
|
|||||||
|
|
||||||
void CvWinProperties::hideEvent(QHideEvent* evnt)
|
void CvWinProperties::hideEvent(QHideEvent* evnt)
|
||||||
{
|
{
|
||||||
QSettings settings("OpenCV2", windowTitle());
|
QSettings settings("OpenCV2", objectName());
|
||||||
settings.setValue("pos", pos()); //there is an offset of 6 pixels (so the window's position is wrong -- why ?)
|
settings.setValue("pos", pos()); //there is an offset of 6 pixels (so the window's position is wrong -- why ?)
|
||||||
evnt->accept();
|
evnt->accept();
|
||||||
}
|
}
|
||||||
@ -1520,7 +1548,7 @@ void CvWinProperties::hideEvent(QHideEvent* evnt)
|
|||||||
CvWinProperties::~CvWinProperties()
|
CvWinProperties::~CvWinProperties()
|
||||||
{
|
{
|
||||||
//clear the setting pos
|
//clear the setting pos
|
||||||
QSettings settings("OpenCV2", windowTitle());
|
QSettings settings("OpenCV2", objectName());
|
||||||
settings.remove("pos");
|
settings.remove("pos");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1540,9 +1568,9 @@ CvWindow::CvWindow(QString name, int arg2)
|
|||||||
//setAttribute(Qt::WA_DeleteOnClose); //in other case, does not release memory
|
//setAttribute(Qt::WA_DeleteOnClose); //in other case, does not release memory
|
||||||
setContentsMargins(0, 0, 0, 0);
|
setContentsMargins(0, 0, 0, 0);
|
||||||
setWindowTitle(name);
|
setWindowTitle(name);
|
||||||
setObjectName(name);
|
setObjectName(name);
|
||||||
|
|
||||||
setFocus( Qt::PopupFocusReason ); //#1695 arrow keys are not received without the explicit focus
|
setFocus( Qt::PopupFocusReason ); //#1695 arrow keys are not received without the explicit focus
|
||||||
|
|
||||||
resize(400, 300);
|
resize(400, 300);
|
||||||
setMinimumSize(1, 1);
|
setMinimumSize(1, 1);
|
||||||
@ -1702,7 +1730,6 @@ void CvWindow::setPropWindow(int flags)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CvWindow::toggleFullScreen(int flags)
|
void CvWindow::toggleFullScreen(int flags)
|
||||||
{
|
{
|
||||||
if (isFullScreen() && flags == CV_WINDOW_NORMAL)
|
if (isFullScreen() && flags == CV_WINDOW_NORMAL)
|
||||||
|
@ -132,6 +132,7 @@ public slots:
|
|||||||
double isFullScreen(QString name);
|
double isFullScreen(QString name);
|
||||||
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);
|
||||||
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);
|
||||||
|
@ -833,6 +833,23 @@ void cvSetModeWindow_CARBON( const char* name, double prop_value)//Yannick Verdi
|
|||||||
__END__;
|
__END__;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cv::setWindowTitle(const String& winname, const String& title)
|
||||||
|
{
|
||||||
|
CvWindow* window = icvFindWindowByName(winname.c_str());
|
||||||
|
|
||||||
|
if (!window)
|
||||||
|
{
|
||||||
|
namedWindow(winname);
|
||||||
|
window = icvFindWindowByName(winname.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!window)
|
||||||
|
CV_Error(Error::StsNullPtr, "NULL window");
|
||||||
|
|
||||||
|
if (noErr != SetWindowTitleWithCFString(window->window, CFStringCreateWithCString(NULL, title.c_str(), kCFStringEncodingASCII)))
|
||||||
|
CV_Error_(Error::StsError, ("Failed to set \"%s\" window title to \"%s\"", winname.c_str(), title.c_str()));
|
||||||
|
}
|
||||||
|
|
||||||
CV_IMPL int cvNamedWindow( const char* name, int flags )
|
CV_IMPL int cvNamedWindow( const char* name, int flags )
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
@ -603,6 +603,27 @@ void cvSetModeWindow_COCOA( const char* name, double prop_value )
|
|||||||
__END__;
|
__END__;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cv::setWindowTitle(const String& winname, const String& title)
|
||||||
|
{
|
||||||
|
CVWindow *window = cvGetWindow(winname.c_str());
|
||||||
|
|
||||||
|
if (window == NULL)
|
||||||
|
{
|
||||||
|
namedWindow(winname);
|
||||||
|
window = cvGetWindow(winname.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (window == NULL)
|
||||||
|
CV_Error(Error::StsNullPtr, "NULL window");
|
||||||
|
|
||||||
|
NSAutoreleasePool* localpool = [[NSAutoreleasePool alloc] init];
|
||||||
|
|
||||||
|
NSString *windowTitle = [NSString stringWithFormat:@"%s", title.c_str()];
|
||||||
|
[window setTitle:windowTitle];
|
||||||
|
|
||||||
|
[localpool drain];
|
||||||
|
}
|
||||||
|
|
||||||
@implementation CVWindow
|
@implementation CVWindow
|
||||||
|
|
||||||
@synthesize mouseCallback;
|
@synthesize mouseCallback;
|
||||||
|
@ -732,6 +732,23 @@ void cvSetModeWindow_GTK( const char* name, double prop_value)//Yannick Verdie
|
|||||||
__END__;
|
__END__;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cv::setWindowTitle(const String& winname, const String& title)
|
||||||
|
{
|
||||||
|
CvWindow* window = icvFindWindowByName(winname.c_str());
|
||||||
|
|
||||||
|
if (!window)
|
||||||
|
{
|
||||||
|
namedWindow(winname);
|
||||||
|
window = icvFindWindowByName(winname.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!window)
|
||||||
|
CV_Error(Error::StsNullPtr, "NULL window");
|
||||||
|
|
||||||
|
CV_LOCK_MUTEX();
|
||||||
|
gtk_window_set_title(GTK_WINDOW(window->frame), title.c_str());
|
||||||
|
CV_UNLOCK_MUTEX();
|
||||||
|
}
|
||||||
|
|
||||||
double cvGetPropWindowAutoSize_GTK(const char* name)
|
double cvGetPropWindowAutoSize_GTK(const char* name)
|
||||||
{
|
{
|
||||||
|
@ -483,6 +483,23 @@ void cvSetModeWindow_W32( const char* name, double prop_value)//Yannick Verdie
|
|||||||
__END__;
|
__END__;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cv::setWindowTitle(const String& winname, const String& title)
|
||||||
|
{
|
||||||
|
CvWindow* window = icvFindWindowByName(winname.c_str());
|
||||||
|
|
||||||
|
if (!window)
|
||||||
|
{
|
||||||
|
namedWindow(winname);
|
||||||
|
window = icvFindWindowByName(winname.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!window)
|
||||||
|
CV_Error(Error::StsNullPtr, "NULL window");
|
||||||
|
|
||||||
|
if (!SetWindowText(window->frame, title.c_str()))
|
||||||
|
CV_Error_(Error::StsError, ("Failed to set \"%s\" window title to \"%s\"", winname.c_str(), title.c_str()));
|
||||||
|
}
|
||||||
|
|
||||||
double cvGetPropWindowAutoSize_W32(const char* name)
|
double cvGetPropWindowAutoSize_W32(const char* name)
|
||||||
{
|
{
|
||||||
double result = -1;
|
double result = -1;
|
||||||
|
Loading…
Reference in New Issue
Block a user