os/graphics/graphicscomposition/openwfcinterface/include/wfc.h
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
/* Copyright (c) 2009 The Khronos Group Inc.
sl@0
     2
 *
sl@0
     3
 * Permission is hereby granted, free of charge, to any person obtaining a
sl@0
     4
 * copy of this software and/or associated documentation files (the
sl@0
     5
 * "Materials"), to deal in the Materials without restriction, including
sl@0
     6
 * without limitation the rights to use, copy, modify, merge, publish,
sl@0
     7
 * distribute, sublicense, and/or sell copies of the Materials, and to
sl@0
     8
 * permit persons to whom the Materials are furnished to do so, subject to
sl@0
     9
 * the following conditions:
sl@0
    10
 *
sl@0
    11
 * The above copyright notice and this permission notice shall be included
sl@0
    12
 * in all copies or substantial portions of the Materials.
sl@0
    13
 *
sl@0
    14
 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
sl@0
    15
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
sl@0
    16
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
sl@0
    17
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
sl@0
    18
 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
sl@0
    19
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
sl@0
    20
 * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
sl@0
    21
 */
sl@0
    22
sl@0
    23
/*! \defgroup wfc OpenWF Composition SI
sl@0
    24
 * @{
sl@0
    25
 */
sl@0
    26
sl@0
    27
/*! \file wfc.h
sl@0
    28
 *
sl@0
    29
 *  \brief OpenWF Composition public API, type definitions and function prototypes
sl@0
    30
 *
sl@0
    31
 *  This is one of the three header files defined by the specification.
sl@0
    32
 *  This file contains the portable definitions of data types
sl@0
    33
 *  and function prototypes.
sl@0
    34
sl@0
    35
 *  Refer to OpenWF Composition specification for the
sl@0
    36
 *  additional documentation.
sl@0
    37
 *
sl@0
    38
 */
sl@0
    39
sl@0
    40
/*! @} */
sl@0
    41
sl@0
    42
#ifndef _WFC_H_
sl@0
    43
#define _WFC_H_
sl@0
    44
sl@0
    45
#include <WF/wfcplatform.h>
sl@0
    46
sl@0
    47
#ifdef __cplusplus
sl@0
    48
extern "C" {
sl@0
    49
#endif
sl@0
    50
sl@0
    51
#define OPENWFC_VERSION_1_0       (1)
sl@0
    52
sl@0
    53
#define WFC_NONE                  (0)
sl@0
    54
sl@0
    55
#define WFC_INVALID_HANDLE        ((WFCHandle)0)
sl@0
    56
sl@0
    57
#define WFC_DEFAULT_DEVICE_ID     (0)
sl@0
    58
sl@0
    59
typedef enum {
sl@0
    60
    WFC_FALSE                               = KHR_BOOLEAN_FALSE,
sl@0
    61
    WFC_TRUE                                = KHR_BOOLEAN_TRUE,
sl@0
    62
    WFC_BOOLEAN_FORCE_32BIT                 = 0x7FFFFFFF
sl@0
    63
} WFCboolean;
sl@0
    64
sl@0
    65
typedef WFCHandle WFCDevice;
sl@0
    66
typedef WFCHandle WFCContext;
sl@0
    67
typedef WFCHandle WFCSource;
sl@0
    68
typedef WFCHandle WFCMask;
sl@0
    69
typedef WFCHandle WFCElement;
sl@0
    70
sl@0
    71
typedef enum {
sl@0
    72
    WFC_ERROR_NONE                          = 0,
sl@0
    73
    WFC_ERROR_OUT_OF_MEMORY                 = 0x7001,
sl@0
    74
    WFC_ERROR_ILLEGAL_ARGUMENT              = 0x7002,
sl@0
    75
    WFC_ERROR_UNSUPPORTED                   = 0x7003,
sl@0
    76
    WFC_ERROR_BAD_ATTRIBUTE                 = 0x7004,
sl@0
    77
    WFC_ERROR_IN_USE                        = 0x7005,
sl@0
    78
    WFC_ERROR_BUSY                          = 0x7006,
sl@0
    79
    WFC_ERROR_BAD_DEVICE                    = 0x7007,
sl@0
    80
    WFC_ERROR_BAD_HANDLE                    = 0x7008,
sl@0
    81
    WFC_ERROR_INCONSISTENCY                 = 0x7009,
sl@0
    82
    WFC_ERROR_FORCE_32BIT                   = 0x7FFFFFFF
sl@0
    83
} WFCErrorCode;
sl@0
    84
sl@0
    85
typedef enum {
sl@0
    86
    WFC_DEVICE_FILTER_SCREEN_NUMBER         = 0x7020,
sl@0
    87
    WFC_DEVICE_FILTER_FORCE_32BIT           = 0x7FFFFFFF
sl@0
    88
} WFCDeviceFilter;
sl@0
    89
sl@0
    90
typedef enum {
sl@0
    91
    /* Read-only */
sl@0
    92
    WFC_DEVICE_CLASS                        = 0x7030,
sl@0
    93
    WFC_DEVICE_ID                           = 0x7031,
sl@0
    94
    WFC_DEVICE_FORCE_32BIT                  = 0x7FFFFFFF
sl@0
    95
} WFCDeviceAttrib;
sl@0
    96
sl@0
    97
typedef enum {
sl@0
    98
    WFC_DEVICE_CLASS_FULLY_CAPABLE          = 0x7040,
sl@0
    99
    WFC_DEVICE_CLASS_OFF_SCREEN_ONLY        = 0x7041,
sl@0
   100
    WFC_DEVICE_CLASS_FORCE_32BIT            = 0x7FFFFFFF
sl@0
   101
} WFCDeviceClass;
sl@0
   102
sl@0
   103
typedef enum {
sl@0
   104
    /* Read-only */
sl@0
   105
    WFC_CONTEXT_TYPE                        = 0x7051,
sl@0
   106
    WFC_CONTEXT_TARGET_HEIGHT               = 0x7052,
sl@0
   107
    WFC_CONTEXT_TARGET_WIDTH                = 0x7053,
sl@0
   108
    WFC_CONTEXT_LOWEST_ELEMENT              = 0x7054,
sl@0
   109
sl@0
   110
    /* Read-write */
sl@0
   111
    WFC_CONTEXT_ROTATION                    = 0x7061,
sl@0
   112
    WFC_CONTEXT_BG_COLOR                    = 0x7062,
sl@0
   113
    WFC_CONTEXT_FORCE_32BIT                 = 0x7FFFFFFF
sl@0
   114
} WFCContextAttrib;
sl@0
   115
sl@0
   116
typedef enum {
sl@0
   117
    WFC_CONTEXT_TYPE_ON_SCREEN              = 0x7071,
sl@0
   118
    WFC_CONTEXT_TYPE_OFF_SCREEN             = 0x7072,
sl@0
   119
    WFC_CONTEXT_TYPE_FORCE_32BIT            = 0x7FFFFFFF
sl@0
   120
} WFCContextType;
sl@0
   121
sl@0
   122
typedef enum {
sl@0
   123
    /* Clockwise rotation */
sl@0
   124
    WFC_ROTATION_0                          = 0x7081,  /* default */
sl@0
   125
    WFC_ROTATION_90                         = 0x7082,
sl@0
   126
    WFC_ROTATION_180                        = 0x7083,
sl@0
   127
    WFC_ROTATION_270                        = 0x7084,
sl@0
   128
    WFC_ROTATION_FORCE_32BIT                = 0x7FFFFFFF
sl@0
   129
} WFCRotation;
sl@0
   130
sl@0
   131
typedef enum {
sl@0
   132
    WFC_ELEMENT_DESTINATION_RECTANGLE       = 0x7101,
sl@0
   133
    WFC_ELEMENT_SOURCE                      = 0x7102,
sl@0
   134
    WFC_ELEMENT_SOURCE_RECTANGLE            = 0x7103,
sl@0
   135
    WFC_ELEMENT_SOURCE_FLIP                 = 0x7104,
sl@0
   136
    WFC_ELEMENT_SOURCE_ROTATION             = 0x7105,
sl@0
   137
    WFC_ELEMENT_SOURCE_SCALE_FILTER         = 0x7106,
sl@0
   138
    WFC_ELEMENT_TRANSPARENCY_TYPES          = 0x7107,
sl@0
   139
    WFC_ELEMENT_GLOBAL_ALPHA                = 0x7108,
sl@0
   140
    WFC_ELEMENT_MASK                        = 0x7109,
sl@0
   141
    WFC_ELEMENT_FORCE_32BIT                 = 0x7FFFFFFF
sl@0
   142
} WFCElementAttrib;
sl@0
   143
sl@0
   144
typedef enum {
sl@0
   145
    WFC_SCALE_FILTER_NONE                   = 0x7151,  /* default */
sl@0
   146
    WFC_SCALE_FILTER_FASTER                 = 0x7152,
sl@0
   147
    WFC_SCALE_FILTER_BETTER                 = 0x7153,
sl@0
   148
    WFC_SCALE_FILTER_FORCE_32BIT            = 0x7FFFFFFF
sl@0
   149
} WFCScaleFilter;
sl@0
   150
sl@0
   151
typedef enum {
sl@0
   152
    WFC_TRANSPARENCY_NONE                   = 0,       /* default */
sl@0
   153
    WFC_TRANSPARENCY_ELEMENT_GLOBAL_ALPHA   = (1 << 0),
sl@0
   154
    WFC_TRANSPARENCY_SOURCE                 = (1 << 1),
sl@0
   155
    WFC_TRANSPARENCY_MASK                   = (1 << 2),
sl@0
   156
    WFC_TRANSPARENCY_FORCE_32BIT            = 0x7FFFFFFF
sl@0
   157
} WFCTransparencyType;
sl@0
   158
sl@0
   159
typedef enum {
sl@0
   160
    WFC_VENDOR                              = 0x7200,
sl@0
   161
    WFC_RENDERER                            = 0x7201,
sl@0
   162
    WFC_VERSION                             = 0x7202,
sl@0
   163
    WFC_EXTENSIONS                          = 0x7203,
sl@0
   164
    WFC_STRINGID_FORCE_32BIT                = 0x7FFFFFFF
sl@0
   165
} WFCStringID;
sl@0
   166
sl@0
   167
sl@0
   168
/* Function Prototypes */
sl@0
   169
sl@0
   170
/* Device */
sl@0
   171
WFC_API_CALL WFCint WFC_APIENTRY
sl@0
   172
    wfcEnumerateDevices(WFCint *deviceIds, WFCint deviceIdsCount,
sl@0
   173
        const WFCint *filterList) WFC_APIEXIT;
sl@0
   174
WFC_API_CALL WFCDevice WFC_APIENTRY
sl@0
   175
    wfcCreateDevice(WFCint deviceId, const WFCint *attribList) WFC_APIEXIT;
sl@0
   176
WFC_API_CALL WFCErrorCode WFC_APIENTRY
sl@0
   177
    wfcGetError(WFCDevice dev) WFC_APIEXIT;
sl@0
   178
WFC_API_CALL WFCint WFC_APIENTRY
sl@0
   179
    wfcGetDeviceAttribi(WFCDevice dev, WFCDeviceAttrib attrib) WFC_APIEXIT;
sl@0
   180
WFC_API_CALL WFCErrorCode WFC_APIENTRY
sl@0
   181
    wfcDestroyDevice(WFCDevice dev) WFC_APIEXIT;
sl@0
   182
sl@0
   183
/* Context */
sl@0
   184
WFC_API_CALL WFCContext WFC_APIENTRY
sl@0
   185
    wfcCreateOnScreenContext(WFCDevice dev,
sl@0
   186
        WFCint screenNumber,
sl@0
   187
        const WFCint *attribList) WFC_APIEXIT;
sl@0
   188
WFC_API_CALL WFCContext WFC_APIENTRY
sl@0
   189
    wfcCreateOffScreenContext(WFCDevice dev,
sl@0
   190
        WFCNativeStreamType stream,
sl@0
   191
        const WFCint *attribList) WFC_APIEXIT;
sl@0
   192
WFC_API_CALL void WFC_APIENTRY
sl@0
   193
    wfcCommit(WFCDevice dev, WFCContext ctx, WFCboolean wait) WFC_APIEXIT;
sl@0
   194
WFC_API_CALL WFCint WFC_APIENTRY
sl@0
   195
    wfcGetContextAttribi(WFCDevice dev, WFCContext ctx,
sl@0
   196
        WFCContextAttrib attrib) WFC_APIEXIT;
sl@0
   197
WFC_API_CALL void WFC_APIENTRY
sl@0
   198
    wfcGetContextAttribfv(WFCDevice dev, WFCContext ctx,
sl@0
   199
        WFCContextAttrib attrib, WFCint count, WFCfloat *values) WFC_APIEXIT;
sl@0
   200
WFC_API_CALL void WFC_APIENTRY
sl@0
   201
    wfcSetContextAttribi(WFCDevice dev, WFCContext ctx,
sl@0
   202
        WFCContextAttrib attrib, WFCint value) WFC_APIEXIT;
sl@0
   203
WFC_API_CALL void WFC_APIENTRY
sl@0
   204
    wfcSetContextAttribfv(WFCDevice dev, WFCContext ctx,
sl@0
   205
        WFCContextAttrib attrib,
sl@0
   206
        WFCint count, const WFCfloat *values) WFC_APIEXIT;
sl@0
   207
WFC_API_CALL void WFC_APIENTRY
sl@0
   208
    wfcDestroyContext(WFCDevice dev, WFCContext ctx) WFC_APIEXIT;
sl@0
   209
sl@0
   210
/* Source */
sl@0
   211
WFC_API_CALL WFCSource WFC_APIENTRY
sl@0
   212
    wfcCreateSourceFromStream(WFCDevice dev, WFCContext ctx,
sl@0
   213
        WFCNativeStreamType stream,
sl@0
   214
        const WFCint *attribList) WFC_APIEXIT;
sl@0
   215
WFC_API_CALL void WFC_APIENTRY
sl@0
   216
    wfcDestroySource(WFCDevice dev, WFCSource src) WFC_APIEXIT;
sl@0
   217
sl@0
   218
/* Mask */
sl@0
   219
WFC_API_CALL WFCMask WFC_APIENTRY
sl@0
   220
    wfcCreateMaskFromStream(WFCDevice dev, WFCContext ctx,
sl@0
   221
        WFCNativeStreamType stream,
sl@0
   222
        const WFCint *attribList) WFC_APIEXIT;
sl@0
   223
WFC_API_CALL void WFC_APIENTRY
sl@0
   224
    wfcDestroyMask(WFCDevice dev, WFCMask mask) WFC_APIEXIT;
sl@0
   225
sl@0
   226
/* Element */
sl@0
   227
WFC_API_CALL WFCElement WFC_APIENTRY
sl@0
   228
    wfcCreateElement(WFCDevice dev, WFCContext ctx,
sl@0
   229
        const WFCint *attribList) WFC_APIEXIT;
sl@0
   230
WFC_API_CALL WFCint WFC_APIENTRY
sl@0
   231
    wfcGetElementAttribi(WFCDevice dev, WFCElement element,
sl@0
   232
        WFCElementAttrib attrib) WFC_APIEXIT;
sl@0
   233
WFC_API_CALL WFCfloat WFC_APIENTRY
sl@0
   234
    wfcGetElementAttribf(WFCDevice dev, WFCElement element,
sl@0
   235
        WFCElementAttrib attrib) WFC_APIEXIT;
sl@0
   236
WFC_API_CALL void WFC_APIENTRY
sl@0
   237
    wfcGetElementAttribiv(WFCDevice dev, WFCElement element,
sl@0
   238
        WFCElementAttrib attrib, WFCint count, WFCint *values) WFC_APIEXIT;
sl@0
   239
WFC_API_CALL void WFC_APIENTRY
sl@0
   240
    wfcGetElementAttribfv(WFCDevice dev, WFCElement element,
sl@0
   241
        WFCElementAttrib attrib, WFCint count, WFCfloat *values) WFC_APIEXIT;
sl@0
   242
WFC_API_CALL void WFC_APIENTRY
sl@0
   243
    wfcSetElementAttribi(WFCDevice dev, WFCElement element,
sl@0
   244
        WFCElementAttrib attrib, WFCint value) WFC_APIEXIT;
sl@0
   245
WFC_API_CALL void WFC_APIENTRY
sl@0
   246
    wfcSetElementAttribf(WFCDevice dev, WFCElement element,
sl@0
   247
        WFCElementAttrib attrib, WFCfloat value) WFC_APIEXIT;
sl@0
   248
WFC_API_CALL void WFC_APIENTRY
sl@0
   249
    wfcSetElementAttribiv(WFCDevice dev, WFCElement element,
sl@0
   250
        WFCElementAttrib attrib,
sl@0
   251
        WFCint count, const WFCint *values) WFC_APIEXIT;
sl@0
   252
WFC_API_CALL void WFC_APIENTRY
sl@0
   253
    wfcSetElementAttribfv(WFCDevice dev, WFCElement element,
sl@0
   254
        WFCElementAttrib attrib,
sl@0
   255
        WFCint count, const WFCfloat *values) WFC_APIEXIT;
sl@0
   256
WFC_API_CALL void WFC_APIENTRY
sl@0
   257
    wfcInsertElement(WFCDevice dev, WFCElement element,
sl@0
   258
        WFCElement subordinate) WFC_APIEXIT;
sl@0
   259
WFC_API_CALL void WFC_APIENTRY
sl@0
   260
    wfcRemoveElement(WFCDevice dev, WFCElement element) WFC_APIEXIT;
sl@0
   261
WFC_API_CALL WFCElement WFC_APIENTRY
sl@0
   262
    wfcGetElementAbove(WFCDevice dev, WFCElement element) WFC_APIEXIT;
sl@0
   263
WFC_API_CALL WFCElement WFC_APIENTRY
sl@0
   264
    wfcGetElementBelow(WFCDevice dev, WFCElement element) WFC_APIEXIT;
sl@0
   265
WFC_API_CALL void WFC_APIENTRY
sl@0
   266
    wfcDestroyElement(WFCDevice dev, WFCElement element) WFC_APIEXIT;
sl@0
   267
sl@0
   268
/* Rendering */
sl@0
   269
WFC_API_CALL void WFC_APIENTRY
sl@0
   270
    wfcActivate(WFCDevice dev, WFCContext ctx) WFC_APIEXIT;
sl@0
   271
WFC_API_CALL void WFC_APIENTRY
sl@0
   272
    wfcDeactivate(WFCDevice dev, WFCContext ctx) WFC_APIEXIT;
sl@0
   273
WFC_API_CALL void WFC_APIENTRY
sl@0
   274
    wfcCompose(WFCDevice dev, WFCContext ctx, WFCboolean wait) WFC_APIEXIT;
sl@0
   275
WFC_API_CALL void WFC_APIENTRY
sl@0
   276
    wfcFence(WFCDevice dev, WFCContext ctx, WFCEGLDisplay dpy,
sl@0
   277
        WFCEGLSync sync) WFC_APIEXIT;
sl@0
   278
sl@0
   279
/* Renderer and extension information */
sl@0
   280
WFC_API_CALL WFCint WFC_APIENTRY
sl@0
   281
    wfcGetStrings(WFCDevice dev,
sl@0
   282
        WFCStringID name,
sl@0
   283
        const char **strings,
sl@0
   284
        WFCint stringsCount) WFC_APIEXIT;
sl@0
   285
WFC_API_CALL WFCboolean WFC_APIENTRY
sl@0
   286
    wfcIsExtensionSupported(WFCDevice dev, const char *string) WFC_APIEXIT;
sl@0
   287
sl@0
   288
#ifdef __cplusplus
sl@0
   289
}
sl@0
   290
#endif
sl@0
   291
sl@0
   292
#endif /* _WFC_H_ */