1 /* Copyright (c) 2009 The Khronos Group Inc.
3 * Permission is hereby granted, free of charge, to any person obtaining a
4 * copy of this software and/or associated documentation files (the
5 * "Materials"), to deal in the Materials without restriction, including
6 * without limitation the rights to use, copy, modify, merge, publish,
7 * distribute, sublicense, and/or sell copies of the Materials, and to
8 * permit persons to whom the Materials are furnished to do so, subject to
9 * the following conditions:
11 * The above copyright notice and this permission notice shall be included
12 * in all copies or substantial portions of the Materials.
14 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20 * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
23 /*! \defgroup wfc OpenWF Composition SI
29 * \brief OpenWF Composition public API, type definitions and function prototypes
31 * This is one of the three header files defined by the specification.
32 * This file contains the portable definitions of data types
33 * and function prototypes.
35 * Refer to OpenWF Composition specification for the
36 * additional documentation.
45 #include <WF/wfcplatform.h>
51 #define OPENWFC_VERSION_1_0 (1)
55 #define WFC_INVALID_HANDLE ((WFCHandle)0)
57 #define WFC_DEFAULT_DEVICE_ID (0)
60 WFC_FALSE = KHR_BOOLEAN_FALSE,
61 WFC_TRUE = KHR_BOOLEAN_TRUE,
62 WFC_BOOLEAN_FORCE_32BIT = 0x7FFFFFFF
65 typedef WFCHandle WFCDevice;
66 typedef WFCHandle WFCContext;
67 typedef WFCHandle WFCSource;
68 typedef WFCHandle WFCMask;
69 typedef WFCHandle WFCElement;
73 WFC_ERROR_OUT_OF_MEMORY = 0x7001,
74 WFC_ERROR_ILLEGAL_ARGUMENT = 0x7002,
75 WFC_ERROR_UNSUPPORTED = 0x7003,
76 WFC_ERROR_BAD_ATTRIBUTE = 0x7004,
77 WFC_ERROR_IN_USE = 0x7005,
78 WFC_ERROR_BUSY = 0x7006,
79 WFC_ERROR_BAD_DEVICE = 0x7007,
80 WFC_ERROR_BAD_HANDLE = 0x7008,
81 WFC_ERROR_INCONSISTENCY = 0x7009,
82 WFC_ERROR_FORCE_32BIT = 0x7FFFFFFF
86 WFC_DEVICE_FILTER_SCREEN_NUMBER = 0x7020,
87 WFC_DEVICE_FILTER_FORCE_32BIT = 0x7FFFFFFF
92 WFC_DEVICE_CLASS = 0x7030,
93 WFC_DEVICE_ID = 0x7031,
94 WFC_DEVICE_FORCE_32BIT = 0x7FFFFFFF
98 WFC_DEVICE_CLASS_FULLY_CAPABLE = 0x7040,
99 WFC_DEVICE_CLASS_OFF_SCREEN_ONLY = 0x7041,
100 WFC_DEVICE_CLASS_FORCE_32BIT = 0x7FFFFFFF
105 WFC_CONTEXT_TYPE = 0x7051,
106 WFC_CONTEXT_TARGET_HEIGHT = 0x7052,
107 WFC_CONTEXT_TARGET_WIDTH = 0x7053,
108 WFC_CONTEXT_LOWEST_ELEMENT = 0x7054,
111 WFC_CONTEXT_ROTATION = 0x7061,
112 WFC_CONTEXT_BG_COLOR = 0x7062,
113 WFC_CONTEXT_FORCE_32BIT = 0x7FFFFFFF
117 WFC_CONTEXT_TYPE_ON_SCREEN = 0x7071,
118 WFC_CONTEXT_TYPE_OFF_SCREEN = 0x7072,
119 WFC_CONTEXT_TYPE_FORCE_32BIT = 0x7FFFFFFF
123 /* Clockwise rotation */
124 WFC_ROTATION_0 = 0x7081, /* default */
125 WFC_ROTATION_90 = 0x7082,
126 WFC_ROTATION_180 = 0x7083,
127 WFC_ROTATION_270 = 0x7084,
128 WFC_ROTATION_FORCE_32BIT = 0x7FFFFFFF
132 WFC_ELEMENT_DESTINATION_RECTANGLE = 0x7101,
133 WFC_ELEMENT_SOURCE = 0x7102,
134 WFC_ELEMENT_SOURCE_RECTANGLE = 0x7103,
135 WFC_ELEMENT_SOURCE_FLIP = 0x7104,
136 WFC_ELEMENT_SOURCE_ROTATION = 0x7105,
137 WFC_ELEMENT_SOURCE_SCALE_FILTER = 0x7106,
138 WFC_ELEMENT_TRANSPARENCY_TYPES = 0x7107,
139 WFC_ELEMENT_GLOBAL_ALPHA = 0x7108,
140 WFC_ELEMENT_MASK = 0x7109,
141 WFC_ELEMENT_FORCE_32BIT = 0x7FFFFFFF
145 WFC_SCALE_FILTER_NONE = 0x7151, /* default */
146 WFC_SCALE_FILTER_FASTER = 0x7152,
147 WFC_SCALE_FILTER_BETTER = 0x7153,
148 WFC_SCALE_FILTER_FORCE_32BIT = 0x7FFFFFFF
152 WFC_TRANSPARENCY_NONE = 0, /* default */
153 WFC_TRANSPARENCY_ELEMENT_GLOBAL_ALPHA = (1 << 0),
154 WFC_TRANSPARENCY_SOURCE = (1 << 1),
155 WFC_TRANSPARENCY_MASK = (1 << 2),
156 WFC_TRANSPARENCY_FORCE_32BIT = 0x7FFFFFFF
157 } WFCTransparencyType;
161 WFC_RENDERER = 0x7201,
162 WFC_VERSION = 0x7202,
163 WFC_EXTENSIONS = 0x7203,
164 WFC_STRINGID_FORCE_32BIT = 0x7FFFFFFF
168 /* Function Prototypes */
171 WFC_API_CALL WFCint WFC_APIENTRY
172 wfcEnumerateDevices(WFCint *deviceIds, WFCint deviceIdsCount,
173 const WFCint *filterList) WFC_APIEXIT;
174 WFC_API_CALL WFCDevice WFC_APIENTRY
175 wfcCreateDevice(WFCint deviceId, const WFCint *attribList) WFC_APIEXIT;
176 WFC_API_CALL WFCErrorCode WFC_APIENTRY
177 wfcGetError(WFCDevice dev) WFC_APIEXIT;
178 WFC_API_CALL WFCint WFC_APIENTRY
179 wfcGetDeviceAttribi(WFCDevice dev, WFCDeviceAttrib attrib) WFC_APIEXIT;
180 WFC_API_CALL WFCErrorCode WFC_APIENTRY
181 wfcDestroyDevice(WFCDevice dev) WFC_APIEXIT;
184 WFC_API_CALL WFCContext WFC_APIENTRY
185 wfcCreateOnScreenContext(WFCDevice dev,
187 const WFCint *attribList) WFC_APIEXIT;
188 WFC_API_CALL WFCContext WFC_APIENTRY
189 wfcCreateOffScreenContext(WFCDevice dev,
190 WFCNativeStreamType stream,
191 const WFCint *attribList) WFC_APIEXIT;
192 WFC_API_CALL void WFC_APIENTRY
193 wfcCommit(WFCDevice dev, WFCContext ctx, WFCboolean wait) WFC_APIEXIT;
194 WFC_API_CALL WFCint WFC_APIENTRY
195 wfcGetContextAttribi(WFCDevice dev, WFCContext ctx,
196 WFCContextAttrib attrib) WFC_APIEXIT;
197 WFC_API_CALL void WFC_APIENTRY
198 wfcGetContextAttribfv(WFCDevice dev, WFCContext ctx,
199 WFCContextAttrib attrib, WFCint count, WFCfloat *values) WFC_APIEXIT;
200 WFC_API_CALL void WFC_APIENTRY
201 wfcSetContextAttribi(WFCDevice dev, WFCContext ctx,
202 WFCContextAttrib attrib, WFCint value) WFC_APIEXIT;
203 WFC_API_CALL void WFC_APIENTRY
204 wfcSetContextAttribfv(WFCDevice dev, WFCContext ctx,
205 WFCContextAttrib attrib,
206 WFCint count, const WFCfloat *values) WFC_APIEXIT;
207 WFC_API_CALL void WFC_APIENTRY
208 wfcDestroyContext(WFCDevice dev, WFCContext ctx) WFC_APIEXIT;
211 WFC_API_CALL WFCSource WFC_APIENTRY
212 wfcCreateSourceFromStream(WFCDevice dev, WFCContext ctx,
213 WFCNativeStreamType stream,
214 const WFCint *attribList) WFC_APIEXIT;
215 WFC_API_CALL void WFC_APIENTRY
216 wfcDestroySource(WFCDevice dev, WFCSource src) WFC_APIEXIT;
219 WFC_API_CALL WFCMask WFC_APIENTRY
220 wfcCreateMaskFromStream(WFCDevice dev, WFCContext ctx,
221 WFCNativeStreamType stream,
222 const WFCint *attribList) WFC_APIEXIT;
223 WFC_API_CALL void WFC_APIENTRY
224 wfcDestroyMask(WFCDevice dev, WFCMask mask) WFC_APIEXIT;
227 WFC_API_CALL WFCElement WFC_APIENTRY
228 wfcCreateElement(WFCDevice dev, WFCContext ctx,
229 const WFCint *attribList) WFC_APIEXIT;
230 WFC_API_CALL WFCint WFC_APIENTRY
231 wfcGetElementAttribi(WFCDevice dev, WFCElement element,
232 WFCElementAttrib attrib) WFC_APIEXIT;
233 WFC_API_CALL WFCfloat WFC_APIENTRY
234 wfcGetElementAttribf(WFCDevice dev, WFCElement element,
235 WFCElementAttrib attrib) WFC_APIEXIT;
236 WFC_API_CALL void WFC_APIENTRY
237 wfcGetElementAttribiv(WFCDevice dev, WFCElement element,
238 WFCElementAttrib attrib, WFCint count, WFCint *values) WFC_APIEXIT;
239 WFC_API_CALL void WFC_APIENTRY
240 wfcGetElementAttribfv(WFCDevice dev, WFCElement element,
241 WFCElementAttrib attrib, WFCint count, WFCfloat *values) WFC_APIEXIT;
242 WFC_API_CALL void WFC_APIENTRY
243 wfcSetElementAttribi(WFCDevice dev, WFCElement element,
244 WFCElementAttrib attrib, WFCint value) WFC_APIEXIT;
245 WFC_API_CALL void WFC_APIENTRY
246 wfcSetElementAttribf(WFCDevice dev, WFCElement element,
247 WFCElementAttrib attrib, WFCfloat value) WFC_APIEXIT;
248 WFC_API_CALL void WFC_APIENTRY
249 wfcSetElementAttribiv(WFCDevice dev, WFCElement element,
250 WFCElementAttrib attrib,
251 WFCint count, const WFCint *values) WFC_APIEXIT;
252 WFC_API_CALL void WFC_APIENTRY
253 wfcSetElementAttribfv(WFCDevice dev, WFCElement element,
254 WFCElementAttrib attrib,
255 WFCint count, const WFCfloat *values) WFC_APIEXIT;
256 WFC_API_CALL void WFC_APIENTRY
257 wfcInsertElement(WFCDevice dev, WFCElement element,
258 WFCElement subordinate) WFC_APIEXIT;
259 WFC_API_CALL void WFC_APIENTRY
260 wfcRemoveElement(WFCDevice dev, WFCElement element) WFC_APIEXIT;
261 WFC_API_CALL WFCElement WFC_APIENTRY
262 wfcGetElementAbove(WFCDevice dev, WFCElement element) WFC_APIEXIT;
263 WFC_API_CALL WFCElement WFC_APIENTRY
264 wfcGetElementBelow(WFCDevice dev, WFCElement element) WFC_APIEXIT;
265 WFC_API_CALL void WFC_APIENTRY
266 wfcDestroyElement(WFCDevice dev, WFCElement element) WFC_APIEXIT;
269 WFC_API_CALL void WFC_APIENTRY
270 wfcActivate(WFCDevice dev, WFCContext ctx) WFC_APIEXIT;
271 WFC_API_CALL void WFC_APIENTRY
272 wfcDeactivate(WFCDevice dev, WFCContext ctx) WFC_APIEXIT;
273 WFC_API_CALL void WFC_APIENTRY
274 wfcCompose(WFCDevice dev, WFCContext ctx, WFCboolean wait) WFC_APIEXIT;
275 WFC_API_CALL void WFC_APIENTRY
276 wfcFence(WFCDevice dev, WFCContext ctx, WFCEGLDisplay dpy,
277 WFCEGLSync sync) WFC_APIEXIT;
279 /* Renderer and extension information */
280 WFC_API_CALL WFCint WFC_APIENTRY
281 wfcGetStrings(WFCDevice dev,
283 const char **strings,
284 WFCint stringsCount) WFC_APIEXIT;
285 WFC_API_CALL WFCboolean WFC_APIENTRY
286 wfcIsExtensionSupported(WFCDevice dev, const char *string) WFC_APIEXIT;