1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/epoc32/include/WF/wfc.h Wed Mar 31 12:33:34 2010 +0100
1.3 @@ -0,0 +1,292 @@
1.4 +/* Copyright (c) 2009 The Khronos Group Inc.
1.5 + *
1.6 + * Permission is hereby granted, free of charge, to any person obtaining a
1.7 + * copy of this software and/or associated documentation files (the
1.8 + * "Materials"), to deal in the Materials without restriction, including
1.9 + * without limitation the rights to use, copy, modify, merge, publish,
1.10 + * distribute, sublicense, and/or sell copies of the Materials, and to
1.11 + * permit persons to whom the Materials are furnished to do so, subject to
1.12 + * the following conditions:
1.13 + *
1.14 + * The above copyright notice and this permission notice shall be included
1.15 + * in all copies or substantial portions of the Materials.
1.16 + *
1.17 + * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1.18 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1.19 + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
1.20 + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
1.21 + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
1.22 + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
1.23 + * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
1.24 + */
1.25 +
1.26 +/*! \defgroup wfc OpenWF Composition SI
1.27 + * @{
1.28 + */
1.29 +
1.30 +/*! \file wfc.h
1.31 + *
1.32 + * \brief OpenWF Composition public API, type definitions and function prototypes
1.33 + *
1.34 + * This is one of the three header files defined by the specification.
1.35 + * This file contains the portable definitions of data types
1.36 + * and function prototypes.
1.37 +
1.38 + * Refer to OpenWF Composition specification for the
1.39 + * additional documentation.
1.40 + *
1.41 + */
1.42 +
1.43 +/*! @} */
1.44 +
1.45 +#ifndef _WFC_H_
1.46 +#define _WFC_H_
1.47 +
1.48 +#include <WF/wfcplatform.h>
1.49 +
1.50 +#ifdef __cplusplus
1.51 +extern "C" {
1.52 +#endif
1.53 +
1.54 +#define OPENWFC_VERSION_1_0 (1)
1.55 +
1.56 +#define WFC_NONE (0)
1.57 +
1.58 +#define WFC_INVALID_HANDLE ((WFCHandle)0)
1.59 +
1.60 +#define WFC_DEFAULT_DEVICE_ID (0)
1.61 +
1.62 +typedef enum {
1.63 + WFC_FALSE = KHR_BOOLEAN_FALSE,
1.64 + WFC_TRUE = KHR_BOOLEAN_TRUE,
1.65 + WFC_BOOLEAN_FORCE_32BIT = 0x7FFFFFFF
1.66 +} WFCboolean;
1.67 +
1.68 +typedef WFCHandle WFCDevice;
1.69 +typedef WFCHandle WFCContext;
1.70 +typedef WFCHandle WFCSource;
1.71 +typedef WFCHandle WFCMask;
1.72 +typedef WFCHandle WFCElement;
1.73 +
1.74 +typedef enum {
1.75 + WFC_ERROR_NONE = 0,
1.76 + WFC_ERROR_OUT_OF_MEMORY = 0x7001,
1.77 + WFC_ERROR_ILLEGAL_ARGUMENT = 0x7002,
1.78 + WFC_ERROR_UNSUPPORTED = 0x7003,
1.79 + WFC_ERROR_BAD_ATTRIBUTE = 0x7004,
1.80 + WFC_ERROR_IN_USE = 0x7005,
1.81 + WFC_ERROR_BUSY = 0x7006,
1.82 + WFC_ERROR_BAD_DEVICE = 0x7007,
1.83 + WFC_ERROR_BAD_HANDLE = 0x7008,
1.84 + WFC_ERROR_INCONSISTENCY = 0x7009,
1.85 + WFC_ERROR_FORCE_32BIT = 0x7FFFFFFF
1.86 +} WFCErrorCode;
1.87 +
1.88 +typedef enum {
1.89 + WFC_DEVICE_FILTER_SCREEN_NUMBER = 0x7020,
1.90 + WFC_DEVICE_FILTER_FORCE_32BIT = 0x7FFFFFFF
1.91 +} WFCDeviceFilter;
1.92 +
1.93 +typedef enum {
1.94 + /* Read-only */
1.95 + WFC_DEVICE_CLASS = 0x7030,
1.96 + WFC_DEVICE_ID = 0x7031,
1.97 + WFC_DEVICE_FORCE_32BIT = 0x7FFFFFFF
1.98 +} WFCDeviceAttrib;
1.99 +
1.100 +typedef enum {
1.101 + WFC_DEVICE_CLASS_FULLY_CAPABLE = 0x7040,
1.102 + WFC_DEVICE_CLASS_OFF_SCREEN_ONLY = 0x7041,
1.103 + WFC_DEVICE_CLASS_FORCE_32BIT = 0x7FFFFFFF
1.104 +} WFCDeviceClass;
1.105 +
1.106 +typedef enum {
1.107 + /* Read-only */
1.108 + WFC_CONTEXT_TYPE = 0x7051,
1.109 + WFC_CONTEXT_TARGET_HEIGHT = 0x7052,
1.110 + WFC_CONTEXT_TARGET_WIDTH = 0x7053,
1.111 + WFC_CONTEXT_LOWEST_ELEMENT = 0x7054,
1.112 +
1.113 + /* Read-write */
1.114 + WFC_CONTEXT_ROTATION = 0x7061,
1.115 + WFC_CONTEXT_BG_COLOR = 0x7062,
1.116 + WFC_CONTEXT_FORCE_32BIT = 0x7FFFFFFF
1.117 +} WFCContextAttrib;
1.118 +
1.119 +typedef enum {
1.120 + WFC_CONTEXT_TYPE_ON_SCREEN = 0x7071,
1.121 + WFC_CONTEXT_TYPE_OFF_SCREEN = 0x7072,
1.122 + WFC_CONTEXT_TYPE_FORCE_32BIT = 0x7FFFFFFF
1.123 +} WFCContextType;
1.124 +
1.125 +typedef enum {
1.126 + /* Clockwise rotation */
1.127 + WFC_ROTATION_0 = 0x7081, /* default */
1.128 + WFC_ROTATION_90 = 0x7082,
1.129 + WFC_ROTATION_180 = 0x7083,
1.130 + WFC_ROTATION_270 = 0x7084,
1.131 + WFC_ROTATION_FORCE_32BIT = 0x7FFFFFFF
1.132 +} WFCRotation;
1.133 +
1.134 +typedef enum {
1.135 + WFC_ELEMENT_DESTINATION_RECTANGLE = 0x7101,
1.136 + WFC_ELEMENT_SOURCE = 0x7102,
1.137 + WFC_ELEMENT_SOURCE_RECTANGLE = 0x7103,
1.138 + WFC_ELEMENT_SOURCE_FLIP = 0x7104,
1.139 + WFC_ELEMENT_SOURCE_ROTATION = 0x7105,
1.140 + WFC_ELEMENT_SOURCE_SCALE_FILTER = 0x7106,
1.141 + WFC_ELEMENT_TRANSPARENCY_TYPES = 0x7107,
1.142 + WFC_ELEMENT_GLOBAL_ALPHA = 0x7108,
1.143 + WFC_ELEMENT_MASK = 0x7109,
1.144 + WFC_ELEMENT_FORCE_32BIT = 0x7FFFFFFF
1.145 +} WFCElementAttrib;
1.146 +
1.147 +typedef enum {
1.148 + WFC_SCALE_FILTER_NONE = 0x7151, /* default */
1.149 + WFC_SCALE_FILTER_FASTER = 0x7152,
1.150 + WFC_SCALE_FILTER_BETTER = 0x7153,
1.151 + WFC_SCALE_FILTER_FORCE_32BIT = 0x7FFFFFFF
1.152 +} WFCScaleFilter;
1.153 +
1.154 +typedef enum {
1.155 + WFC_TRANSPARENCY_NONE = 0, /* default */
1.156 + WFC_TRANSPARENCY_ELEMENT_GLOBAL_ALPHA = (1 << 0),
1.157 + WFC_TRANSPARENCY_SOURCE = (1 << 1),
1.158 + WFC_TRANSPARENCY_MASK = (1 << 2),
1.159 + WFC_TRANSPARENCY_FORCE_32BIT = 0x7FFFFFFF
1.160 +} WFCTransparencyType;
1.161 +
1.162 +typedef enum {
1.163 + WFC_VENDOR = 0x7200,
1.164 + WFC_RENDERER = 0x7201,
1.165 + WFC_VERSION = 0x7202,
1.166 + WFC_EXTENSIONS = 0x7203,
1.167 + WFC_STRINGID_FORCE_32BIT = 0x7FFFFFFF
1.168 +} WFCStringID;
1.169 +
1.170 +
1.171 +/* Function Prototypes */
1.172 +
1.173 +/* Device */
1.174 +WFC_API_CALL WFCint WFC_APIENTRY
1.175 + wfcEnumerateDevices(WFCint *deviceIds, WFCint deviceIdsCount,
1.176 + const WFCint *filterList) WFC_APIEXIT;
1.177 +WFC_API_CALL WFCDevice WFC_APIENTRY
1.178 + wfcCreateDevice(WFCint deviceId, const WFCint *attribList) WFC_APIEXIT;
1.179 +WFC_API_CALL WFCErrorCode WFC_APIENTRY
1.180 + wfcGetError(WFCDevice dev) WFC_APIEXIT;
1.181 +WFC_API_CALL WFCint WFC_APIENTRY
1.182 + wfcGetDeviceAttribi(WFCDevice dev, WFCDeviceAttrib attrib) WFC_APIEXIT;
1.183 +WFC_API_CALL WFCErrorCode WFC_APIENTRY
1.184 + wfcDestroyDevice(WFCDevice dev) WFC_APIEXIT;
1.185 +
1.186 +/* Context */
1.187 +WFC_API_CALL WFCContext WFC_APIENTRY
1.188 + wfcCreateOnScreenContext(WFCDevice dev,
1.189 + WFCint screenNumber,
1.190 + const WFCint *attribList) WFC_APIEXIT;
1.191 +WFC_API_CALL WFCContext WFC_APIENTRY
1.192 + wfcCreateOffScreenContext(WFCDevice dev,
1.193 + WFCNativeStreamType stream,
1.194 + const WFCint *attribList) WFC_APIEXIT;
1.195 +WFC_API_CALL void WFC_APIENTRY
1.196 + wfcCommit(WFCDevice dev, WFCContext ctx, WFCboolean wait) WFC_APIEXIT;
1.197 +WFC_API_CALL WFCint WFC_APIENTRY
1.198 + wfcGetContextAttribi(WFCDevice dev, WFCContext ctx,
1.199 + WFCContextAttrib attrib) WFC_APIEXIT;
1.200 +WFC_API_CALL void WFC_APIENTRY
1.201 + wfcGetContextAttribfv(WFCDevice dev, WFCContext ctx,
1.202 + WFCContextAttrib attrib, WFCint count, WFCfloat *values) WFC_APIEXIT;
1.203 +WFC_API_CALL void WFC_APIENTRY
1.204 + wfcSetContextAttribi(WFCDevice dev, WFCContext ctx,
1.205 + WFCContextAttrib attrib, WFCint value) WFC_APIEXIT;
1.206 +WFC_API_CALL void WFC_APIENTRY
1.207 + wfcSetContextAttribfv(WFCDevice dev, WFCContext ctx,
1.208 + WFCContextAttrib attrib,
1.209 + WFCint count, const WFCfloat *values) WFC_APIEXIT;
1.210 +WFC_API_CALL void WFC_APIENTRY
1.211 + wfcDestroyContext(WFCDevice dev, WFCContext ctx) WFC_APIEXIT;
1.212 +
1.213 +/* Source */
1.214 +WFC_API_CALL WFCSource WFC_APIENTRY
1.215 + wfcCreateSourceFromStream(WFCDevice dev, WFCContext ctx,
1.216 + WFCNativeStreamType stream,
1.217 + const WFCint *attribList) WFC_APIEXIT;
1.218 +WFC_API_CALL void WFC_APIENTRY
1.219 + wfcDestroySource(WFCDevice dev, WFCSource src) WFC_APIEXIT;
1.220 +
1.221 +/* Mask */
1.222 +WFC_API_CALL WFCMask WFC_APIENTRY
1.223 + wfcCreateMaskFromStream(WFCDevice dev, WFCContext ctx,
1.224 + WFCNativeStreamType stream,
1.225 + const WFCint *attribList) WFC_APIEXIT;
1.226 +WFC_API_CALL void WFC_APIENTRY
1.227 + wfcDestroyMask(WFCDevice dev, WFCMask mask) WFC_APIEXIT;
1.228 +
1.229 +/* Element */
1.230 +WFC_API_CALL WFCElement WFC_APIENTRY
1.231 + wfcCreateElement(WFCDevice dev, WFCContext ctx,
1.232 + const WFCint *attribList) WFC_APIEXIT;
1.233 +WFC_API_CALL WFCint WFC_APIENTRY
1.234 + wfcGetElementAttribi(WFCDevice dev, WFCElement element,
1.235 + WFCElementAttrib attrib) WFC_APIEXIT;
1.236 +WFC_API_CALL WFCfloat WFC_APIENTRY
1.237 + wfcGetElementAttribf(WFCDevice dev, WFCElement element,
1.238 + WFCElementAttrib attrib) WFC_APIEXIT;
1.239 +WFC_API_CALL void WFC_APIENTRY
1.240 + wfcGetElementAttribiv(WFCDevice dev, WFCElement element,
1.241 + WFCElementAttrib attrib, WFCint count, WFCint *values) WFC_APIEXIT;
1.242 +WFC_API_CALL void WFC_APIENTRY
1.243 + wfcGetElementAttribfv(WFCDevice dev, WFCElement element,
1.244 + WFCElementAttrib attrib, WFCint count, WFCfloat *values) WFC_APIEXIT;
1.245 +WFC_API_CALL void WFC_APIENTRY
1.246 + wfcSetElementAttribi(WFCDevice dev, WFCElement element,
1.247 + WFCElementAttrib attrib, WFCint value) WFC_APIEXIT;
1.248 +WFC_API_CALL void WFC_APIENTRY
1.249 + wfcSetElementAttribf(WFCDevice dev, WFCElement element,
1.250 + WFCElementAttrib attrib, WFCfloat value) WFC_APIEXIT;
1.251 +WFC_API_CALL void WFC_APIENTRY
1.252 + wfcSetElementAttribiv(WFCDevice dev, WFCElement element,
1.253 + WFCElementAttrib attrib,
1.254 + WFCint count, const WFCint *values) WFC_APIEXIT;
1.255 +WFC_API_CALL void WFC_APIENTRY
1.256 + wfcSetElementAttribfv(WFCDevice dev, WFCElement element,
1.257 + WFCElementAttrib attrib,
1.258 + WFCint count, const WFCfloat *values) WFC_APIEXIT;
1.259 +WFC_API_CALL void WFC_APIENTRY
1.260 + wfcInsertElement(WFCDevice dev, WFCElement element,
1.261 + WFCElement subordinate) WFC_APIEXIT;
1.262 +WFC_API_CALL void WFC_APIENTRY
1.263 + wfcRemoveElement(WFCDevice dev, WFCElement element) WFC_APIEXIT;
1.264 +WFC_API_CALL WFCElement WFC_APIENTRY
1.265 + wfcGetElementAbove(WFCDevice dev, WFCElement element) WFC_APIEXIT;
1.266 +WFC_API_CALL WFCElement WFC_APIENTRY
1.267 + wfcGetElementBelow(WFCDevice dev, WFCElement element) WFC_APIEXIT;
1.268 +WFC_API_CALL void WFC_APIENTRY
1.269 + wfcDestroyElement(WFCDevice dev, WFCElement element) WFC_APIEXIT;
1.270 +
1.271 +/* Rendering */
1.272 +WFC_API_CALL void WFC_APIENTRY
1.273 + wfcActivate(WFCDevice dev, WFCContext ctx) WFC_APIEXIT;
1.274 +WFC_API_CALL void WFC_APIENTRY
1.275 + wfcDeactivate(WFCDevice dev, WFCContext ctx) WFC_APIEXIT;
1.276 +WFC_API_CALL void WFC_APIENTRY
1.277 + wfcCompose(WFCDevice dev, WFCContext ctx, WFCboolean wait) WFC_APIEXIT;
1.278 +WFC_API_CALL void WFC_APIENTRY
1.279 + wfcFence(WFCDevice dev, WFCContext ctx, WFCEGLDisplay dpy,
1.280 + WFCEGLSync sync) WFC_APIEXIT;
1.281 +
1.282 +/* Renderer and extension information */
1.283 +WFC_API_CALL WFCint WFC_APIENTRY
1.284 + wfcGetStrings(WFCDevice dev,
1.285 + WFCStringID name,
1.286 + const char **strings,
1.287 + WFCint stringsCount) WFC_APIEXIT;
1.288 +WFC_API_CALL WFCboolean WFC_APIENTRY
1.289 + wfcIsExtensionSupported(WFCDevice dev, const char *string) WFC_APIEXIT;
1.290 +
1.291 +#ifdef __cplusplus
1.292 +}
1.293 +#endif
1.294 +
1.295 +#endif /* _WFC_H_ */