--- /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 <WF/wfcplatform.h>
+
+#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_ */