graphicscomposition/openwfcinterface/include/wfc.h
changeset 0 5d03bc08d59c
--- /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_ */