diff -r 000000000000 -r 5d03bc08d59c graphicscomposition/openwfcinterface/include/wfc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicscomposition/openwfcinterface/include/wfc.h Tue Feb 02 01:47:50 2010 +0200 @@ -0,0 +1,292 @@ +/* Copyright (c) 2009 The Khronos Group Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and/or associated documentation files (the + * "Materials"), to deal in the Materials without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Materials, and to + * permit persons to whom the Materials are furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Materials. + * + * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + */ + +/*! \defgroup wfc OpenWF Composition SI + * @{ + */ + +/*! \file wfc.h + * + * \brief OpenWF Composition public API, type definitions and function prototypes + * + * This is one of the three header files defined by the specification. + * This file contains the portable definitions of data types + * and function prototypes. + + * Refer to OpenWF Composition specification for the + * additional documentation. + * + */ + +/*! @} */ + +#ifndef _WFC_H_ +#define _WFC_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OPENWFC_VERSION_1_0 (1) + +#define WFC_NONE (0) + +#define WFC_INVALID_HANDLE ((WFCHandle)0) + +#define WFC_DEFAULT_DEVICE_ID (0) + +typedef enum { + WFC_FALSE = KHR_BOOLEAN_FALSE, + WFC_TRUE = KHR_BOOLEAN_TRUE, + WFC_BOOLEAN_FORCE_32BIT = 0x7FFFFFFF +} WFCboolean; + +typedef WFCHandle WFCDevice; +typedef WFCHandle WFCContext; +typedef WFCHandle WFCSource; +typedef WFCHandle WFCMask; +typedef WFCHandle WFCElement; + +typedef enum { + WFC_ERROR_NONE = 0, + WFC_ERROR_OUT_OF_MEMORY = 0x7001, + WFC_ERROR_ILLEGAL_ARGUMENT = 0x7002, + WFC_ERROR_UNSUPPORTED = 0x7003, + WFC_ERROR_BAD_ATTRIBUTE = 0x7004, + WFC_ERROR_IN_USE = 0x7005, + WFC_ERROR_BUSY = 0x7006, + WFC_ERROR_BAD_DEVICE = 0x7007, + WFC_ERROR_BAD_HANDLE = 0x7008, + WFC_ERROR_INCONSISTENCY = 0x7009, + WFC_ERROR_FORCE_32BIT = 0x7FFFFFFF +} WFCErrorCode; + +typedef enum { + WFC_DEVICE_FILTER_SCREEN_NUMBER = 0x7020, + WFC_DEVICE_FILTER_FORCE_32BIT = 0x7FFFFFFF +} WFCDeviceFilter; + +typedef enum { + /* Read-only */ + WFC_DEVICE_CLASS = 0x7030, + WFC_DEVICE_ID = 0x7031, + WFC_DEVICE_FORCE_32BIT = 0x7FFFFFFF +} WFCDeviceAttrib; + +typedef enum { + WFC_DEVICE_CLASS_FULLY_CAPABLE = 0x7040, + WFC_DEVICE_CLASS_OFF_SCREEN_ONLY = 0x7041, + WFC_DEVICE_CLASS_FORCE_32BIT = 0x7FFFFFFF +} WFCDeviceClass; + +typedef enum { + /* Read-only */ + WFC_CONTEXT_TYPE = 0x7051, + WFC_CONTEXT_TARGET_HEIGHT = 0x7052, + WFC_CONTEXT_TARGET_WIDTH = 0x7053, + WFC_CONTEXT_LOWEST_ELEMENT = 0x7054, + + /* Read-write */ + WFC_CONTEXT_ROTATION = 0x7061, + WFC_CONTEXT_BG_COLOR = 0x7062, + WFC_CONTEXT_FORCE_32BIT = 0x7FFFFFFF +} WFCContextAttrib; + +typedef enum { + WFC_CONTEXT_TYPE_ON_SCREEN = 0x7071, + WFC_CONTEXT_TYPE_OFF_SCREEN = 0x7072, + WFC_CONTEXT_TYPE_FORCE_32BIT = 0x7FFFFFFF +} WFCContextType; + +typedef enum { + /* Clockwise rotation */ + WFC_ROTATION_0 = 0x7081, /* default */ + WFC_ROTATION_90 = 0x7082, + WFC_ROTATION_180 = 0x7083, + WFC_ROTATION_270 = 0x7084, + WFC_ROTATION_FORCE_32BIT = 0x7FFFFFFF +} WFCRotation; + +typedef enum { + WFC_ELEMENT_DESTINATION_RECTANGLE = 0x7101, + WFC_ELEMENT_SOURCE = 0x7102, + WFC_ELEMENT_SOURCE_RECTANGLE = 0x7103, + WFC_ELEMENT_SOURCE_FLIP = 0x7104, + WFC_ELEMENT_SOURCE_ROTATION = 0x7105, + WFC_ELEMENT_SOURCE_SCALE_FILTER = 0x7106, + WFC_ELEMENT_TRANSPARENCY_TYPES = 0x7107, + WFC_ELEMENT_GLOBAL_ALPHA = 0x7108, + WFC_ELEMENT_MASK = 0x7109, + WFC_ELEMENT_FORCE_32BIT = 0x7FFFFFFF +} WFCElementAttrib; + +typedef enum { + WFC_SCALE_FILTER_NONE = 0x7151, /* default */ + WFC_SCALE_FILTER_FASTER = 0x7152, + WFC_SCALE_FILTER_BETTER = 0x7153, + WFC_SCALE_FILTER_FORCE_32BIT = 0x7FFFFFFF +} WFCScaleFilter; + +typedef enum { + WFC_TRANSPARENCY_NONE = 0, /* default */ + WFC_TRANSPARENCY_ELEMENT_GLOBAL_ALPHA = (1 << 0), + WFC_TRANSPARENCY_SOURCE = (1 << 1), + WFC_TRANSPARENCY_MASK = (1 << 2), + WFC_TRANSPARENCY_FORCE_32BIT = 0x7FFFFFFF +} WFCTransparencyType; + +typedef enum { + WFC_VENDOR = 0x7200, + WFC_RENDERER = 0x7201, + WFC_VERSION = 0x7202, + WFC_EXTENSIONS = 0x7203, + WFC_STRINGID_FORCE_32BIT = 0x7FFFFFFF +} WFCStringID; + + +/* Function Prototypes */ + +/* Device */ +WFC_API_CALL WFCint WFC_APIENTRY + wfcEnumerateDevices(WFCint *deviceIds, WFCint deviceIdsCount, + const WFCint *filterList) WFC_APIEXIT; +WFC_API_CALL WFCDevice WFC_APIENTRY + wfcCreateDevice(WFCint deviceId, const WFCint *attribList) WFC_APIEXIT; +WFC_API_CALL WFCErrorCode WFC_APIENTRY + wfcGetError(WFCDevice dev) WFC_APIEXIT; +WFC_API_CALL WFCint WFC_APIENTRY + wfcGetDeviceAttribi(WFCDevice dev, WFCDeviceAttrib attrib) WFC_APIEXIT; +WFC_API_CALL WFCErrorCode WFC_APIENTRY + wfcDestroyDevice(WFCDevice dev) WFC_APIEXIT; + +/* Context */ +WFC_API_CALL WFCContext WFC_APIENTRY + wfcCreateOnScreenContext(WFCDevice dev, + WFCint screenNumber, + const WFCint *attribList) WFC_APIEXIT; +WFC_API_CALL WFCContext WFC_APIENTRY + wfcCreateOffScreenContext(WFCDevice dev, + WFCNativeStreamType stream, + const WFCint *attribList) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcCommit(WFCDevice dev, WFCContext ctx, WFCboolean wait) WFC_APIEXIT; +WFC_API_CALL WFCint WFC_APIENTRY + wfcGetContextAttribi(WFCDevice dev, WFCContext ctx, + WFCContextAttrib attrib) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcGetContextAttribfv(WFCDevice dev, WFCContext ctx, + WFCContextAttrib attrib, WFCint count, WFCfloat *values) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcSetContextAttribi(WFCDevice dev, WFCContext ctx, + WFCContextAttrib attrib, WFCint value) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcSetContextAttribfv(WFCDevice dev, WFCContext ctx, + WFCContextAttrib attrib, + WFCint count, const WFCfloat *values) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcDestroyContext(WFCDevice dev, WFCContext ctx) WFC_APIEXIT; + +/* Source */ +WFC_API_CALL WFCSource WFC_APIENTRY + wfcCreateSourceFromStream(WFCDevice dev, WFCContext ctx, + WFCNativeStreamType stream, + const WFCint *attribList) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcDestroySource(WFCDevice dev, WFCSource src) WFC_APIEXIT; + +/* Mask */ +WFC_API_CALL WFCMask WFC_APIENTRY + wfcCreateMaskFromStream(WFCDevice dev, WFCContext ctx, + WFCNativeStreamType stream, + const WFCint *attribList) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcDestroyMask(WFCDevice dev, WFCMask mask) WFC_APIEXIT; + +/* Element */ +WFC_API_CALL WFCElement WFC_APIENTRY + wfcCreateElement(WFCDevice dev, WFCContext ctx, + const WFCint *attribList) WFC_APIEXIT; +WFC_API_CALL WFCint WFC_APIENTRY + wfcGetElementAttribi(WFCDevice dev, WFCElement element, + WFCElementAttrib attrib) WFC_APIEXIT; +WFC_API_CALL WFCfloat WFC_APIENTRY + wfcGetElementAttribf(WFCDevice dev, WFCElement element, + WFCElementAttrib attrib) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcGetElementAttribiv(WFCDevice dev, WFCElement element, + WFCElementAttrib attrib, WFCint count, WFCint *values) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcGetElementAttribfv(WFCDevice dev, WFCElement element, + WFCElementAttrib attrib, WFCint count, WFCfloat *values) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcSetElementAttribi(WFCDevice dev, WFCElement element, + WFCElementAttrib attrib, WFCint value) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcSetElementAttribf(WFCDevice dev, WFCElement element, + WFCElementAttrib attrib, WFCfloat value) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcSetElementAttribiv(WFCDevice dev, WFCElement element, + WFCElementAttrib attrib, + WFCint count, const WFCint *values) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcSetElementAttribfv(WFCDevice dev, WFCElement element, + WFCElementAttrib attrib, + WFCint count, const WFCfloat *values) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcInsertElement(WFCDevice dev, WFCElement element, + WFCElement subordinate) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcRemoveElement(WFCDevice dev, WFCElement element) WFC_APIEXIT; +WFC_API_CALL WFCElement WFC_APIENTRY + wfcGetElementAbove(WFCDevice dev, WFCElement element) WFC_APIEXIT; +WFC_API_CALL WFCElement WFC_APIENTRY + wfcGetElementBelow(WFCDevice dev, WFCElement element) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcDestroyElement(WFCDevice dev, WFCElement element) WFC_APIEXIT; + +/* Rendering */ +WFC_API_CALL void WFC_APIENTRY + wfcActivate(WFCDevice dev, WFCContext ctx) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcDeactivate(WFCDevice dev, WFCContext ctx) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcCompose(WFCDevice dev, WFCContext ctx, WFCboolean wait) WFC_APIEXIT; +WFC_API_CALL void WFC_APIENTRY + wfcFence(WFCDevice dev, WFCContext ctx, WFCEGLDisplay dpy, + WFCEGLSync sync) WFC_APIEXIT; + +/* Renderer and extension information */ +WFC_API_CALL WFCint WFC_APIENTRY + wfcGetStrings(WFCDevice dev, + WFCStringID name, + const char **strings, + WFCint stringsCount) WFC_APIEXIT; +WFC_API_CALL WFCboolean WFC_APIENTRY + wfcIsExtensionSupported(WFCDevice dev, const char *string) WFC_APIEXIT; + +#ifdef __cplusplus +} +#endif + +#endif /* _WFC_H_ */