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
0824ed59
Commit
0824ed59
authored
Jun 17, 2015
by
Vadim Pisarevsky
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4090 from MSOpenTech:highgui_winrt
parents
fd225469
6724a0b8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
462 additions
and
8 deletions
+462
-8
CMakeLists.txt
modules/highgui/CMakeLists.txt
+20
-6
agile_wrl.h
modules/highgui/src/agile_wrl.h
+0
-0
ppltasks_winrt.h
modules/highgui/src/ppltasks_winrt.h
+0
-0
window.cpp
modules/highgui/src/window.cpp
+3
-2
window_winrt.cpp
modules/highgui/src/window_winrt.cpp
+439
-0
No files found.
modules/highgui/CMakeLists.txt
View file @
0824ed59
if
(
WINRT
)
ocv_module_disable
(
highgui
)
endif
()
set
(
the_description
"High-level GUI and Media I/O"
)
ocv_add_module
(
highgui opencv_imgproc opencv_imgcodecs opencv_videoio WRAP python
)
...
...
@@ -11,8 +7,7 @@ ocv_add_module(highgui opencv_imgproc opencv_imgcodecs opencv_videoio WRAP pytho
# Jose Luis Blanco, 2008
# ----------------------------------------------------------------------------
# Compilation with /ZW is not allowed for *.c files
if
(
HAVE_WINRT_CX AND NOT WINRT
)
if
(
WINRT_8_1
)
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
/ZW"
)
endif
()
...
...
@@ -71,6 +66,25 @@ elseif(HAVE_QT)
if
(
${
_have_flag
}
)
set_source_files_properties
(
${
_RCC_OUTFILES
}
PROPERTIES COMPILE_FLAGS -Wno-missing-declarations
)
endif
()
elseif
(
WINRT AND NOT WINRT_8_0
)
# Dependencies used by the implementation referenced
# below are not available on WinRT 8.0.
# Enabling it for WiRT 8.1+ only.
status
(
"
${
name
}
: WinRT detected"
)
list
(
APPEND highgui_srcs
${
CMAKE_CURRENT_LIST_DIR
}
/src/window_winrt.cpp
)
# libraries below are neither available nor required
# on ARM devices and/or Windows Phone
if
(
WINRT_PHONE
OR
(
OpenCV_ARCH STREQUAL
"ARM"
))
list
(
REMOVE_ITEM HIGHGUI_LIBRARIES
"comctl32"
"gdi32"
"ole32"
"setupapi"
)
if
(
WINRT_PHONE
)
status
(
"
${
name
}
: Windows Phone detected"
)
elseif
(
OpenCV_ARCH STREQUAL
"ARM"
)
status
(
"
${
name
}
: ARM detected"
)
endif
()
status
(
"
${
name
}
: Removing 'comctl32.lib, gdi32.lib, ole32.lib, setupapi.lib'"
)
status
(
"
${
name
}
: Leaving '
${
HIGHGUI_LIBRARIES
}
'"
)
endif
()
elseif
(
HAVE_WIN32UI
)
list
(
APPEND highgui_srcs
${
CMAKE_CURRENT_LIST_DIR
}
/src/window_w32.cpp
)
elseif
(
HAVE_GTK OR HAVE_GTK3
)
...
...
modules/highgui/src/agile_wrl.h
deleted
100644 → 0
View file @
fd225469
This diff is collapsed.
Click to expand it.
modules/highgui/src/ppltasks_winrt.h
deleted
100644 → 0
View file @
fd225469
This diff is collapsed.
Click to expand it.
modules/highgui/src/window.cpp
View file @
0824ed59
...
...
@@ -481,11 +481,12 @@ int cv::createButton(const String&, ButtonCallback, void*, int , bool )
#endif
#if defined
(HAVE_WIN32UI)
// see window_w32.cpp
#if defined
(HAVE_WIN32UI)
// see window_w32.cpp
#elif defined (HAVE_GTK) // see window_gtk.cpp
#elif defined (HAVE_COCOA) // see window_carbon.cpp
#elif defined (HAVE_CARBON)
#elif defined (HAVE_QT) //YV see window_QT.cpp
#elif defined (HAVE_QT) // see window_QT.cpp
#elif defined (WINRT) && !defined (WINRT_8_0) // see window_winrt.cpp
#else
...
...
modules/highgui/src/window_winrt.cpp
0 → 100644
View file @
0824ed59
#include "precomp.hpp"
#if defined WINRT && !defined WINRT_8_0
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <assert.h>
struct
CvWindow
;
typedef
struct
CvTrackbar
{
int
signature
;
void
*
hwnd
;
// TODO: use proper handle type
char
*
name
;
CvTrackbar
*
next
;
CvWindow
*
parent
;
int
*
data
;
int
pos
;
int
maxval
;
void
(
*
notify
)(
int
);
void
(
*
notify2
)(
int
,
void
*
);
void
*
userdata
;
int
id
;
}
CvTrackbar
;
typedef
struct
CvWindow
{
int
signature
;
void
*
hwnd
;
// TODO: use proper handle type
char
*
name
;
CvWindow
*
prev
;
CvWindow
*
next
;
HGDIOBJ
image
;
int
flags
;
CvMouseCallback
on_mouse
;
void
*
on_mouse_param
;
struct
{
void
*
toolbar
;
// TODO: use proper handle type
int
pos
;
int
rows
;
CvTrackbar
*
first
;
}
toolbar
;
int
width
;
int
height
;
}
CvWindow
;
static
CvWindow
*
hg_windows
=
0
;
// typedef int (CV_CDECL * CvWin32WindowCallback)(HWND, UINT, WPARAM, LPARAM, int*);
static
CvWindow
*
icvFindWindowByName
(
const
char
*
name
)
{
CvWindow
*
window
=
hg_windows
;
for
(;
window
!=
0
&&
strcmp
(
name
,
window
->
name
)
!=
0
;
window
=
window
->
next
)
;
return
window
;
}
static
CvTrackbar
*
icvFindTrackbarByName
(
const
CvWindow
*
window
,
const
char
*
name
)
{
CvTrackbar
*
trackbar
=
window
->
toolbar
.
first
;
for
(;
trackbar
!=
0
&&
strcmp
(
trackbar
->
name
,
name
)
!=
0
;
trackbar
=
trackbar
->
next
)
;
return
trackbar
;
}
CV_IMPL
int
cvInitSystem
(
int
,
char
**
)
{
static
int
wasInitialized
=
0
;
if
(
!
wasInitialized
)
{
hg_windows
=
0
;
}
return
0
;
}
CV_IMPL
int
cvStartWindowThread
(){
return
0
;
}
CV_IMPL
int
cvNamedWindow
(
const
char
*
name
,
int
flags
)
{
int
result
=
0
;
CV_FUNCNAME
(
"cvNamedWindow"
);
__BEGIN__
;
__END__
;
return
result
;
}
CV_IMPL
void
cvDestroyWindow
(
const
char
*
name
)
{
CV_FUNCNAME
(
"cvDestroyWindow"
);
__BEGIN__
;
CvWindow
*
window
;
if
(
!
name
)
CV_ERROR
(
CV_StsNullPtr
,
"NULL name string"
);
window
=
icvFindWindowByName
(
name
);
if
(
!
window
)
EXIT
;
__END__
;
}
CV_IMPL
void
cvShowImage
(
const
char
*
name
,
const
CvArr
*
arr
)
{
CV_FUNCNAME
(
"cvShowImage"
);
__BEGIN__
;
CvWindow
*
window
;
SIZE
size
=
{
0
,
0
};
int
channels
=
0
;
void
*
dst_ptr
=
0
;
const
int
channels_def
=
3
;
int
origin
=
0
;
CvMat
stub
,
dst
,
*
image
;
bool
changed_size
=
false
;
if
(
!
name
)
CV_ERROR
(
CV_StsNullPtr
,
"NULL name"
);
window
=
icvFindWindowByName
(
name
);
if
(
!
window
)
{
cvNamedWindow
(
name
,
CV_WINDOW_AUTOSIZE
);
window
=
icvFindWindowByName
(
name
);
}
if
(
!
window
||
!
arr
)
EXIT
;
if
(
CV_IS_IMAGE_HDR
(
arr
))
origin
=
((
IplImage
*
)
arr
)
->
origin
;
CV_CALL
(
image
=
cvGetMat
(
arr
,
&
stub
));
#ifdef HAVE_OPENGL
if
(
window
->
useGl
)
{
cv
::
imshow
(
name
,
cv
::
cvarrToMat
(
image
));
return
;
}
#endif
if
(
window
->
image
)
{
//TODO: validate image
}
if
(
size
.
cx
!=
image
->
width
||
size
.
cy
!=
image
->
height
||
channels
!=
channels_def
)
{
changed_size
=
true
;
//TODO: handle image resize
}
cvInitMatHeader
(
&
dst
,
size
.
cy
,
size
.
cx
,
CV_8UC3
,
dst_ptr
,
(
size
.
cx
*
channels
+
3
)
&
-
4
);
cvConvertImage
(
image
,
&
dst
,
origin
==
0
?
CV_CVTIMG_FLIP
:
0
);
if
(
changed_size
)
//TODO: handle consequent image resize
__END__
;
}
CV_IMPL
void
cvResizeWindow
(
const
char
*
name
,
int
width
,
int
height
)
{
CV_FUNCNAME
(
"cvResizeWindow"
);
__BEGIN__
;
CvWindow
*
window
;
if
(
!
name
)
CV_ERROR
(
CV_StsNullPtr
,
"NULL name"
);
window
=
icvFindWindowByName
(
name
);
if
(
!
window
)
EXIT
;
// TODO: implement appropriate logic here
__END__
;
}
CV_IMPL
void
cvMoveWindow
(
const
char
*
name
,
int
x
,
int
y
)
{
CV_FUNCNAME
(
"cvMoveWindow"
);
__BEGIN__
;
CvWindow
*
window
;
RECT
rect
;
if
(
!
name
)
CV_ERROR
(
CV_StsNullPtr
,
"NULL name"
);
window
=
icvFindWindowByName
(
name
);
if
(
!
window
)
EXIT
;
// TODO: implement appropriate logic here
__END__
;
}
CV_IMPL
void
cvDestroyAllWindows
(
void
)
{
// TODO: implement appropriate logic here
}
CV_IMPL
int
cvWaitKey
(
int
delay
)
{
// see https://msdn.microsoft.com/en-us/library/windows/desktop/ms724411(v=vs.85).aspx
int
time0
=
GetTickCount64
();
for
(;;)
{
CvWindow
*
window
;
if
((
delay
>
0
&&
abs
((
int
)(
GetTickCount64
()
-
time0
))
>=
delay
)
||
hg_windows
==
0
)
return
-
1
;
if
(
delay
<=
0
)
{
// TODO: implement appropriate logic here
}
for
(
window
=
hg_windows
;
window
!=
0
;
window
=
window
->
next
)
{
}
}
}
CV_IMPL
int
cvCreateTrackbar
(
const
char
*
trackbar_name
,
const
char
*
window_name
,
int
*
val
,
int
count
,
CvTrackbarCallback
on_notify
)
{
// TODO: implement appropriate logic here
return
0
;
}
CV_IMPL
int
cvCreateTrackbar2
(
const
char
*
trackbar_name
,
const
char
*
window_name
,
int
*
val
,
int
count
,
CvTrackbarCallback2
on_notify2
,
void
*
userdata
)
{
// TODO: implement appropriate logic here
return
0
;
}
CV_IMPL
void
cvSetMouseCallback
(
const
char
*
window_name
,
CvMouseCallback
on_mouse
,
void
*
param
)
{
CV_FUNCNAME
(
"cvSetMouseCallback"
);
__BEGIN__
;
CvWindow
*
window
=
0
;
if
(
!
window_name
)
CV_ERROR
(
CV_StsNullPtr
,
"NULL window name"
);
window
=
icvFindWindowByName
(
window_name
);
if
(
!
window
)
EXIT
;
// TODO: implement appropriate logic here
__END__
;
}
CV_IMPL
int
cvGetTrackbarPos
(
const
char
*
trackbar_name
,
const
char
*
window_name
)
{
int
pos
=
-
1
;
CV_FUNCNAME
(
"cvGetTrackbarPos"
);
__BEGIN__
;
CvWindow
*
window
;
CvTrackbar
*
trackbar
=
0
;
if
(
trackbar_name
==
0
||
window_name
==
0
)
CV_ERROR
(
CV_StsNullPtr
,
"NULL trackbar or window name"
);
window
=
icvFindWindowByName
(
window_name
);
if
(
window
)
trackbar
=
icvFindTrackbarByName
(
window
,
trackbar_name
);
if
(
trackbar
)
pos
=
trackbar
->
pos
;
__END__
;
return
pos
;
}
CV_IMPL
void
cvSetTrackbarPos
(
const
char
*
trackbar_name
,
const
char
*
window_name
,
int
pos
)
{
CV_FUNCNAME
(
"cvSetTrackbarPos"
);
__BEGIN__
;
CvWindow
*
window
;
CvTrackbar
*
trackbar
=
0
;
if
(
trackbar_name
==
0
||
window_name
==
0
)
CV_ERROR
(
CV_StsNullPtr
,
"NULL trackbar or window name"
);
window
=
icvFindWindowByName
(
window_name
);
if
(
window
)
trackbar
=
icvFindTrackbarByName
(
window
,
trackbar_name
);
if
(
trackbar
)
{
if
(
pos
<
0
)
pos
=
0
;
if
(
pos
>
trackbar
->
maxval
)
pos
=
trackbar
->
maxval
;
//TODO: update trackbar
}
__END__
;
}
CV_IMPL
void
cvSetTrackbarMax
(
const
char
*
trackbar_name
,
const
char
*
window_name
,
int
maxval
)
{
CV_FUNCNAME
(
"cvSetTrackbarMax"
);
__BEGIN__
;
if
(
maxval
>=
0
)
{
CvWindow
*
window
=
0
;
CvTrackbar
*
trackbar
=
0
;
if
(
trackbar_name
==
0
||
window_name
==
0
)
{
CV_ERROR
(
CV_StsNullPtr
,
"NULL trackbar or window name"
);
}
window
=
icvFindWindowByName
(
window_name
);
if
(
window
)
{
trackbar
=
icvFindTrackbarByName
(
window
,
trackbar_name
);
if
(
trackbar
)
{
// The position will be min(pos, maxval).
trackbar
->
maxval
=
maxval
;
//TODO: update trackbar
}
}
}
__END__
;
}
CV_IMPL
void
*
cvGetWindowHandle
(
const
char
*
window_name
)
{
void
*
hwnd
=
0
;
CV_FUNCNAME
(
"cvGetWindowHandle"
);
__BEGIN__
;
CvWindow
*
window
;
if
(
window_name
==
0
)
CV_ERROR
(
CV_StsNullPtr
,
"NULL window name"
);
window
=
icvFindWindowByName
(
window_name
);
if
(
window
)
hwnd
=
(
void
*
)
window
->
hwnd
;
__END__
;
return
hwnd
;
}
CV_IMPL
const
char
*
cvGetWindowName
(
void
*
window_handle
)
{
const
char
*
window_name
=
""
;
CV_FUNCNAME
(
"cvGetWindowName"
);
__BEGIN__
;
CvWindow
*
window
=
0
;
if
(
window_handle
==
0
)
CV_ERROR
(
CV_StsNullPtr
,
"NULL window"
);
// window = TODO: find window by handle
if
(
window
)
window_name
=
window
->
name
;
__END__
;
return
0
;
}
#endif //defined WINRT && !defined WINRT_8_0
\ No newline at end of file
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