Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
b0ab2ef1
Commit
b0ab2ef1
authored
Jul 27, 2010
by
Yannick Verdie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Qt on Windows -- in progress
parent
99e2a9bd
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
90 additions
and
30 deletions
+90
-30
README.txt
modules/highgui/src/files_Qt/Milky/README.txt
+0
-0
window_QT.cpp
modules/highgui/src/window_QT.cpp
+90
-30
No files found.
modules/highgui/src/files_Qt/Milky/README.txt
View file @
b0ab2ef1
modules/highgui/src/window_QT.cpp
View file @
b0ab2ef1
...
...
@@ -44,7 +44,7 @@
#include <window_QT.h>
//Static and global first
static
GuiReceiver
guiMainThread
;
static
GuiReceiver
*
guiMainThread
=
NULL
;
static
int
parameterSystemC
=
1
;
static
char
*
parameterSystemV
[]
=
{
""
};
static
bool
multiThreads
=
false
;
...
...
@@ -84,7 +84,11 @@ CV_IMPL CvFont cvFont_Qt(const char* nameFont, int pointSize,CvScalar color,int
CV_IMPL
void
cvAddText
(
CvArr
*
img
,
const
char
*
text
,
CvPoint
org
,
CvFont
*
font
)
{
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
QMetaObject
::
invokeMethod
(
guiMainThread
,
"putText"
,
Qt
::
AutoConnection
,
Q_ARG
(
void
*
,
(
void
*
)
img
),
...
...
@@ -95,8 +99,12 @@ CV_IMPL void cvAddText( CvArr* img, const char* text, CvPoint org, CvFont* font)
double
cvGetRatioWindow_QT
(
const
char
*
name
)
{
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
double
result
=
-
1
;
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
QMetaObject
::
invokeMethod
(
guiMainThread
,
"getRatioWindow"
,
//Qt::DirectConnection,
Qt
::
AutoConnection
,
...
...
@@ -107,7 +115,11 @@ double cvGetRatioWindow_QT(const char* name)
void
cvSetRatioWindow_QT
(
const
char
*
name
,
double
prop_value
)
{
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
QMetaObject
::
invokeMethod
(
guiMainThread
,
"setRatioWindow"
,
Qt
::
AutoConnection
,
Q_ARG
(
QString
,
QString
(
name
)),
...
...
@@ -116,8 +128,12 @@ void cvSetRatioWindow_QT(const char* name,double prop_value)
double
cvGetPropWindow_QT
(
const
char
*
name
)
{
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
double
result
=
-
1
;
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
QMetaObject
::
invokeMethod
(
guiMainThread
,
"getPropWindow"
,
//Qt::DirectConnection,
Qt
::
AutoConnection
,
...
...
@@ -128,7 +144,11 @@ double cvGetPropWindow_QT(const char* name)
void
cvSetPropWindow_QT
(
const
char
*
name
,
double
prop_value
)
{
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
QMetaObject
::
invokeMethod
(
guiMainThread
,
"setPropWindow"
,
Qt
::
AutoConnection
,
Q_ARG
(
QString
,
QString
(
name
)),
...
...
@@ -137,7 +157,11 @@ void cvSetPropWindow_QT(const char* name,double prop_value)
void
cvSetModeWindow_QT
(
const
char
*
name
,
double
prop_value
)
{
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
QMetaObject
::
invokeMethod
(
guiMainThread
,
"toggleFullScreen"
,
Qt
::
AutoConnection
,
Q_ARG
(
QString
,
QString
(
name
)),
...
...
@@ -146,9 +170,12 @@ void cvSetModeWindow_QT(const char* name, double prop_value)
double
cvGetModeWindow_QT
(
const
char
*
name
)
{
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
double
result
=
-
1
;
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
QMetaObject
::
invokeMethod
(
guiMainThread
,
"isFullScreen"
,
Qt
::
AutoConnection
,
Q_RETURN_ARG
(
double
,
result
),
...
...
@@ -158,8 +185,10 @@ double cvGetModeWindow_QT(const char* name)
CV_IMPL
void
cvDisplayOverlay
(
const
char
*
name
,
const
char
*
text
,
int
delayms
)
{
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
QMetaObject
::
invokeMethod
(
guiMainThread
,
"displayInfo"
,
Qt
::
AutoConnection
,
//Qt::DirectConnection,
...
...
@@ -171,7 +200,10 @@ CV_IMPL void cvDisplayOverlay(const char* name, const char* text, int delayms)
CV_IMPL
void
cvSaveWindowParameters
(
const
char
*
name
)
{
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
QMetaObject
::
invokeMethod
(
guiMainThread
,
"saveWindowParameters"
,
Qt
::
AutoConnection
,
Q_ARG
(
QString
,
QString
(
name
)));
...
...
@@ -179,7 +211,10 @@ CV_IMPL void cvSaveWindowParameters(const char* name)
CV_IMPL
void
cvLoadWindowParameters
(
const
char
*
name
)
{
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
QMetaObject
::
invokeMethod
(
guiMainThread
,
"loadWindowParameters"
,
Qt
::
AutoConnection
,
Q_ARG
(
QString
,
QString
(
name
)));
...
...
@@ -187,8 +222,10 @@ CV_IMPL void cvLoadWindowParameters(const char* name)
CV_IMPL
void
cvDisplayStatusBar
(
const
char
*
name
,
const
char
*
text
,
int
delayms
)
{
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
QMetaObject
::
invokeMethod
(
guiMainThread
,
"displayStatusBar"
,
Qt
::
AutoConnection
,
//Qt::DirectConnection,
...
...
@@ -229,8 +266,8 @@ CV_IMPL int cvWaitKey( int arg )
//cannot use wait here because events will not be distributed before processEvents (the main eventLoop is broken)
//so I create a Thread for the QTimer
QTimer
timer
(
&
guiMainThread
);
QObject
::
connect
(
&
timer
,
SIGNAL
(
timeout
()),
&
guiMainThread
,
SLOT
(
timeOut
()));
QTimer
timer
(
guiMainThread
);
QObject
::
connect
(
&
timer
,
SIGNAL
(
timeout
()),
guiMainThread
,
SLOT
(
timeOut
()));
timer
.
setSingleShot
(
true
);
if
(
arg
>
0
)
...
...
@@ -238,7 +275,7 @@ CV_IMPL int cvWaitKey( int arg )
//QMutex dummy;
while
(
!
guiMainThread
.
_bTimeOut
)
while
(
!
guiMainThread
->
_bTimeOut
)
{
qApp
->
processEvents
(
QEventLoop
::
AllEvents
);
...
...
@@ -273,7 +310,7 @@ CV_IMPL int cvWaitKey( int arg )
}
}
guiMainThread
.
_bTimeOut
=
false
;
guiMainThread
->
_bTimeOut
=
false
;
}
...
...
@@ -287,7 +324,7 @@ CV_IMPL int cvStartLoop(int (*pt2Func)(int argc, char *argv[]), int argc, char*
{
multiThreads
=
true
;
QFuture
<
int
>
future
=
QtConcurrent
::
run
(
pt2Func
,
argc
,
argv
);
return
guiMainThread
.
start
();
return
guiMainThread
->
start
();
}
CV_IMPL
void
cvStopLoop
()
...
...
@@ -405,8 +442,11 @@ int icvInitSystem()
CV_IMPL
int
cvNamedWindow
(
const
char
*
name
,
int
flags
)
{
if
(
!
guiMainThread
)
guiMainThread
=
new
GuiReceiver
;
if
(
multiThreads
)
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
QMetaObject
::
invokeMethod
(
guiMainThread
,
"createWindow"
,
//Qt::AutoConnection,
Qt
::
BlockingQueuedConnection
,
...
...
@@ -415,14 +455,17 @@ CV_IMPL int cvNamedWindow( const char* name, int flags )
Q_ARG
(
QString
,
QString
(
name
)),
Q_ARG
(
int
,
flags
));
else
guiMainThread
.
createWindow
(
QString
(
name
),
flags
);
guiMainThread
->
createWindow
(
QString
(
name
),
flags
);
return
1
;
//Dummy value
}
CV_IMPL
void
cvDestroyWindow
(
const
char
*
name
)
{
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
QMetaObject
::
invokeMethod
(
guiMainThread
,
"destroyWindow"
,
//Qt::BlockingQueuedConnection,
Qt
::
AutoConnection
,
...
...
@@ -432,13 +475,14 @@ CV_IMPL void cvDestroyWindow( const char* name )
CV_IMPL
void
cvDestroyAllWindows
(
void
)
{
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
QMetaObject
::
invokeMethod
(
guiMainThread
,
"destroyAllWindow"
,
//Qt::BlockingQueuedConnection,
Qt
::
AutoConnection
);
}
CV_IMPL
void
*
cvGetWindowHandle
(
const
char
*
name
)
...
...
@@ -461,8 +505,10 @@ CV_IMPL const char* cvGetWindowName( void* window_handle )
CV_IMPL
void
cvMoveWindow
(
const
char
*
name
,
int
x
,
int
y
)
{
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
QMetaObject
::
invokeMethod
(
guiMainThread
,
"moveWindow"
,
//Qt::BlockingQueuedConnection,
Qt
::
AutoConnection
,
...
...
@@ -476,7 +522,10 @@ CV_IMPL void cvMoveWindow( const char* name, int x, int y )
CV_IMPL
void
cvResizeWindow
(
const
char
*
name
,
int
width
,
int
height
)
{
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
QMetaObject
::
invokeMethod
(
guiMainThread
,
"resizeWindow"
,
//Qt::BlockingQueuedConnection,
Qt
::
AutoConnection
,
...
...
@@ -500,8 +549,10 @@ CV_IMPL int cvStartWindowThread()
CV_IMPL
int
cvCreateTrackbar
(
const
char
*
name_bar
,
const
char
*
window_name
,
int
*
value
,
int
count
,
CvTrackbarCallback
on_change
)
{
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
QMetaObject
::
invokeMethod
(
guiMainThread
,
"addSlider"
,
Qt
::
AutoConnection
,
Q_ARG
(
QString
,
QString
(
name_bar
)),
...
...
@@ -518,10 +569,13 @@ CV_IMPL int cvCreateTrackbar( const char* name_bar, const char* window_name, int
CV_IMPL
int
cvCreateButton
(
const
char
*
button_name
,
CvButtonCallback
on_change
,
void
*
userdata
,
int
button_type
,
int
initial_button_state
)
{
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
if
(
initial_button_state
<
0
||
initial_button_state
>
1
)
return
0
;
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
QMetaObject
::
invokeMethod
(
guiMainThread
,
"addButton"
,
Qt
::
AutoConnection
,
Q_ARG
(
QString
,
QString
(
button_name
)),
...
...
@@ -536,7 +590,10 @@ CV_IMPL int cvCreateButton(const char* button_name,CvButtonCallback on_change, v
CV_IMPL
void
cvCreateOpenGLCallback
(
const
char
*
window_name
,
CvOpenGLCallback
callbackOpenGL
,
void
*
userdata
,
double
angle
,
double
zmin
,
double
zmax
)
{
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
if
(
!
guiMainThread
)
CV_Error
(
CV_StsNullPtr
,
"NULL guiReceiver (please create a window)"
);
QMetaObject
::
invokeMethod
(
guiMainThread
,
"setOpenGLCallback"
,
Qt
::
AutoConnection
,
Q_ARG
(
QString
,
QString
(
window_name
)),
...
...
@@ -585,7 +642,10 @@ CV_IMPL void cvSetMouseCallback( const char* window_name, CvMouseCallback on_mou
CV_IMPL
void
cvShowImage
(
const
char
*
name
,
const
CvArr
*
arr
)
{
QMetaObject
::
invokeMethod
(
&
guiMainThread
,
if
(
!
guiMainThread
)
guiMainThread
=
new
GuiReceiver
;
QMetaObject
::
invokeMethod
(
guiMainThread
,
"showImage"
,
//Qt::BlockingQueuedConnection,
Qt
::
DirectConnection
,
...
...
@@ -600,7 +660,7 @@ CV_IMPL void cvShowImage( const char* name, const CvArr* arr )
GuiReceiver
::
GuiReceiver
()
:
_bTimeOut
(
false
)
{
icvInitSystem
();
qApp
->
setQuitOnLastWindowClosed
(
false
);
//maybe the user would like to access this setting
//
qApp->setQuitOnLastWindowClosed ( false );//maybe the user would like to access this setting
}
void
GuiReceiver
::
putText
(
void
*
arg1
,
QString
text
,
QPoint
org
,
void
*
arg2
)
...
...
@@ -2236,7 +2296,7 @@ void ViewPort::paintEvent(QPaintEvent* event)
#endif
//Now disable matrixWorld for overlay display
//
myPainter.setWorldMatrixEnabled (false );
myPainter
.
setWorldMatrixEnabled
(
false
);
//in mode zoom/panning
if
(
param_matrixWorld
.
m11
()
>
1
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment