VLC
2.1.0-git
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
vlc_vout_window.h
Go to the documentation of this file.
1
/*****************************************************************************
2
* vlc_vout_window.h: vout_window_t definitions
3
*****************************************************************************
4
* Copyright (C) 2008 Rémi Denis-Courmont
5
* Copyright (C) 2009 Laurent Aimar
6
* $Id: e7944685b6ca9092ca77ec20d5aff55d32929e6b $
7
*
8
* Authors: Laurent Aimar <fenrir _AT_ videolan _DOT_ org>
9
*
10
* This program is free software; you can redistribute it and/or modify it
11
* under the terms of the GNU Lesser General Public License as published by
12
* the Free Software Foundation; either version 2.1 of the License, or
13
* (at your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU Lesser General Public License for more details.
19
*
20
* You should have received a copy of the GNU Lesser General Public License
21
* along with this program; if not, write to the Free Software Foundation,
22
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23
*****************************************************************************/
24
25
#ifndef VLC_VOUT_WINDOW_H
26
#define VLC_VOUT_WINDOW_H 1
27
28
/**
29
* \file
30
* This file defines vout windows structures and functions in vlc
31
*/
32
33
#include <
vlc_common.h
>
34
35
/* */
36
typedef
struct
vout_window_t
vout_window_t
;
37
typedef
struct
vout_window_sys_t
vout_window_sys_t
;
38
39
40
/**
41
* Window handle type
42
*/
43
enum
{
44
VOUT_WINDOW_TYPE_INVALID
=0,
45
VOUT_WINDOW_TYPE_XID
,
46
VOUT_WINDOW_TYPE_HWND
,
47
VOUT_WINDOW_TYPE_NSOBJECT
,
48
};
49
50
/**
51
* Control query for vout_window_t
52
*/
53
enum
{
54
VOUT_WINDOW_SET_STATE
,
/* unsigned state */
55
VOUT_WINDOW_SET_SIZE
,
/* unsigned i_width, unsigned i_height */
56
VOUT_WINDOW_SET_FULLSCREEN
,
/* int b_fullscreen */
57
};
58
59
typedef
struct
{
60
/* If true, a standalone window is requested */
61
bool
is_standalone;
62
63
/* Window handle type */
64
unsigned
type;
65
66
/* Window position hint */
67
int
x;
68
int
y;
69
70
/* Windows size hint */
71
unsigned
width;
72
unsigned
height;
73
74
}
vout_window_cfg_t
;
75
76
/**
77
* FIXME do we need an event system in the window too ?
78
* or the window user will take care of it ?
79
*/
80
struct
vout_window_t
{
81
VLC_COMMON_MEMBERS
82
83
/* window handle (mandatory)
84
*
85
* It must be filled in the open function.
86
*/
87
union
{
88
void
*
hwnd
;
/* Win32 window handle */
89
uint32_t
xid
;
/* X11 windows ID */
90
void
*
nsobject
;
/* Mac OSX view object */
91
}
handle
;
92
93
/* display server (mandatory) */
94
union
{
95
char
*
x11
;
/* X11 display (NULL = use default) */
96
}
display
;
97
98
/* Control on the module (mandatory)
99
*
100
* Do not use it directly; use vout_window_Control instead.
101
*/
102
int (*
control
)(
vout_window_t
*,
int
query
, va_list);
103
104
/* Private place holder for the vout_window_t module (optional)
105
*
106
* A module is free to use it as it wishes.
107
*/
108
vout_window_sys_t
*
sys
;
109
};
110
111
/**
112
* Creates a new window.
113
*
114
* @param module plugin name (usually "$window")
115
* @note If you are inside a "vout display", you must use
116
/ vout_display_NewWindow() and vout_display_DeleteWindow() instead.
117
* This enables recycling windows.
118
*/
119
VLC_API
vout_window_t
*
vout_window_New
(
vlc_object_t
*,
const
char
*module,
const
vout_window_cfg_t
*);
120
121
/**
122
* Deletes a window created by vout_window_New().
123
*
124
* @note See vout_window_New() about window recycling.
125
*/
126
VLC_API
void
vout_window_Delete
(
vout_window_t
*);
127
128
129
/**
130
* Reconfigures a window.
131
*
132
* @note The vout_window_* wrappers should be used instead of this function.
133
*
134
* @warning The caller must own the window, as vout_window_t is not thread safe.
135
*/
136
VLC_API
int
vout_window_Control
(
vout_window_t
*,
int
query
, ...);
137
138
/**
139
* Configures the window manager state for this window.
140
*/
141
static
inline
int
vout_window_SetState
(
vout_window_t
*window,
unsigned
state)
142
{
143
return
vout_window_Control
(window,
VOUT_WINDOW_SET_STATE
, state);
144
}
145
146
/**
147
* Configures the window display (i.e. inner/useful) size.
148
*/
149
static
inline
int
vout_window_SetSize
(
vout_window_t
*window,
150
unsigned
width,
unsigned
height)
151
{
152
return
vout_window_Control
(window,
VOUT_WINDOW_SET_SIZE
, width, height);
153
}
154
155
/**
156
* Sets fullscreen mode.
157
*/
158
static
inline
int
vout_window_SetFullScreen
(
vout_window_t
*window,
bool
full)
159
{
160
return
vout_window_Control
(window,
VOUT_WINDOW_SET_FULLSCREEN
, full);
161
}
162
163
#endif
/* VLC_VOUT_WINDOW_H */
Generated by
1.8.1.2