os/graphics/graphicscomposition/openwfcinterface/include/wfc.h
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/graphics/graphicscomposition/openwfcinterface/include/wfc.h	Fri Jun 15 03:10:57 2012 +0200
     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_ */