graphicscomposition/openwfcinterface/include/wfc.h
changeset 0 5d03bc08d59c
equal deleted inserted replaced
-1:000000000000 0:5d03bc08d59c
       
     1 /* Copyright (c) 2009 The Khronos Group Inc.
       
     2  *
       
     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:
       
    10  *
       
    11  * The above copyright notice and this permission notice shall be included
       
    12  * in all copies or substantial portions of the Materials.
       
    13  *
       
    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.
       
    21  */
       
    22 
       
    23 /*! \defgroup wfc OpenWF Composition SI
       
    24  * @{
       
    25  */
       
    26 
       
    27 /*! \file wfc.h
       
    28  *
       
    29  *  \brief OpenWF Composition public API, type definitions and function prototypes
       
    30  *
       
    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.
       
    34 
       
    35  *  Refer to OpenWF Composition specification for the
       
    36  *  additional documentation.
       
    37  *
       
    38  */
       
    39 
       
    40 /*! @} */
       
    41 
       
    42 #ifndef _WFC_H_
       
    43 #define _WFC_H_
       
    44 
       
    45 #include <WF/wfcplatform.h>
       
    46 
       
    47 #ifdef __cplusplus
       
    48 extern "C" {
       
    49 #endif
       
    50 
       
    51 #define OPENWFC_VERSION_1_0       (1)
       
    52 
       
    53 #define WFC_NONE                  (0)
       
    54 
       
    55 #define WFC_INVALID_HANDLE        ((WFCHandle)0)
       
    56 
       
    57 #define WFC_DEFAULT_DEVICE_ID     (0)
       
    58 
       
    59 typedef enum {
       
    60     WFC_FALSE                               = KHR_BOOLEAN_FALSE,
       
    61     WFC_TRUE                                = KHR_BOOLEAN_TRUE,
       
    62     WFC_BOOLEAN_FORCE_32BIT                 = 0x7FFFFFFF
       
    63 } WFCboolean;
       
    64 
       
    65 typedef WFCHandle WFCDevice;
       
    66 typedef WFCHandle WFCContext;
       
    67 typedef WFCHandle WFCSource;
       
    68 typedef WFCHandle WFCMask;
       
    69 typedef WFCHandle WFCElement;
       
    70 
       
    71 typedef enum {
       
    72     WFC_ERROR_NONE                          = 0,
       
    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
       
    83 } WFCErrorCode;
       
    84 
       
    85 typedef enum {
       
    86     WFC_DEVICE_FILTER_SCREEN_NUMBER         = 0x7020,
       
    87     WFC_DEVICE_FILTER_FORCE_32BIT           = 0x7FFFFFFF
       
    88 } WFCDeviceFilter;
       
    89 
       
    90 typedef enum {
       
    91     /* Read-only */
       
    92     WFC_DEVICE_CLASS                        = 0x7030,
       
    93     WFC_DEVICE_ID                           = 0x7031,
       
    94     WFC_DEVICE_FORCE_32BIT                  = 0x7FFFFFFF
       
    95 } WFCDeviceAttrib;
       
    96 
       
    97 typedef enum {
       
    98     WFC_DEVICE_CLASS_FULLY_CAPABLE          = 0x7040,
       
    99     WFC_DEVICE_CLASS_OFF_SCREEN_ONLY        = 0x7041,
       
   100     WFC_DEVICE_CLASS_FORCE_32BIT            = 0x7FFFFFFF
       
   101 } WFCDeviceClass;
       
   102 
       
   103 typedef enum {
       
   104     /* Read-only */
       
   105     WFC_CONTEXT_TYPE                        = 0x7051,
       
   106     WFC_CONTEXT_TARGET_HEIGHT               = 0x7052,
       
   107     WFC_CONTEXT_TARGET_WIDTH                = 0x7053,
       
   108     WFC_CONTEXT_LOWEST_ELEMENT              = 0x7054,
       
   109 
       
   110     /* Read-write */
       
   111     WFC_CONTEXT_ROTATION                    = 0x7061,
       
   112     WFC_CONTEXT_BG_COLOR                    = 0x7062,
       
   113     WFC_CONTEXT_FORCE_32BIT                 = 0x7FFFFFFF
       
   114 } WFCContextAttrib;
       
   115 
       
   116 typedef enum {
       
   117     WFC_CONTEXT_TYPE_ON_SCREEN              = 0x7071,
       
   118     WFC_CONTEXT_TYPE_OFF_SCREEN             = 0x7072,
       
   119     WFC_CONTEXT_TYPE_FORCE_32BIT            = 0x7FFFFFFF
       
   120 } WFCContextType;
       
   121 
       
   122 typedef enum {
       
   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
       
   129 } WFCRotation;
       
   130 
       
   131 typedef enum {
       
   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
       
   142 } WFCElementAttrib;
       
   143 
       
   144 typedef enum {
       
   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
       
   149 } WFCScaleFilter;
       
   150 
       
   151 typedef enum {
       
   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;
       
   158 
       
   159 typedef enum {
       
   160     WFC_VENDOR                              = 0x7200,
       
   161     WFC_RENDERER                            = 0x7201,
       
   162     WFC_VERSION                             = 0x7202,
       
   163     WFC_EXTENSIONS                          = 0x7203,
       
   164     WFC_STRINGID_FORCE_32BIT                = 0x7FFFFFFF
       
   165 } WFCStringID;
       
   166 
       
   167 
       
   168 /* Function Prototypes */
       
   169 
       
   170 /* Device */
       
   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;
       
   182 
       
   183 /* Context */
       
   184 WFC_API_CALL WFCContext WFC_APIENTRY
       
   185     wfcCreateOnScreenContext(WFCDevice dev,
       
   186         WFCint screenNumber,
       
   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;
       
   209 
       
   210 /* Source */
       
   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;
       
   217 
       
   218 /* Mask */
       
   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;
       
   225 
       
   226 /* Element */
       
   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;
       
   267 
       
   268 /* Rendering */
       
   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;
       
   278 
       
   279 /* Renderer and extension information */
       
   280 WFC_API_CALL WFCint WFC_APIENTRY
       
   281     wfcGetStrings(WFCDevice dev,
       
   282         WFCStringID name,
       
   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;
       
   287 
       
   288 #ifdef __cplusplus
       
   289 }
       
   290 #endif
       
   291 
       
   292 #endif /* _WFC_H_ */