Merge branch 'mesa_7_5_branch' into mesa_7_6_branch
[profile/ivi/mesa.git] / include / VG / vgext.h
1 /* $Revision: 6810 $ on $Date:: 2008-10-29 10:31:37 -0400 #$ */\r
2 \r
3 /*------------------------------------------------------------------------\r
4  * \r
5  * VG extensions Reference Implementation\r
6  * -------------------------------------\r
7  *\r
8  * Copyright (c) 2008 The Khronos Group Inc.\r
9  *\r
10  * Permission is hereby granted, free of charge, to any person obtaining a\r
11  * copy of this software and /or associated documentation files\r
12  * (the "Materials "), to deal in the Materials without restriction,\r
13  * including without limitation the rights to use, copy, modify, merge,\r
14  * publish, distribute, sublicense, and/or sell copies of the Materials,\r
15  * and to permit persons to whom the Materials are furnished to do so,\r
16  * subject to the following conditions: \r
17  *\r
18  * The above copyright notice and this permission notice shall be included \r
19  * in all copies or substantial portions of the Materials. \r
20  *\r
21  * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
22  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
23  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r
24  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\r
25  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\r
26  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR\r
27  * THE USE OR OTHER DEALINGS IN THE MATERIALS.\r
28  *\r
29  *//**\r
30  * \file\r
31  * \brief       VG extensions\r
32  *//*-------------------------------------------------------------------*/\r
33 \r
34 \r
35 \r
36 #ifndef _VGEXT_H\r
37 #define _VGEXT_H\r
38 \r
39 #ifdef __cplusplus\r
40 extern "C" {\r
41 #endif\r
42 \r
43 #include <VG/openvg.h>\r
44 #include <VG/vgu.h>\r
45 \r
46 #ifndef VG_API_ENTRYP\r
47 #   define VG_API_ENTRYP VG_API_ENTRY*\r
48 #endif\r
49 \r
50 #ifndef VGU_API_ENTRYP\r
51 #   define VGU_API_ENTRYP VGU_API_ENTRY*\r
52 #endif\r
53 \r
54 /*-------------------------------------------------------------------------------\r
55  * KHR extensions\r
56  *------------------------------------------------------------------------------*/\r
57 \r
58 typedef enum  {\r
59 \r
60 #ifndef VG_KHR_iterative_average_blur\r
61   VG_MAX_AVERAGE_BLUR_DIMENSION_KHR        = 0x116B,\r
62   VG_AVERAGE_BLUR_DIMENSION_RESOLUTION_KHR = 0x116C,\r
63   VG_MAX_AVERAGE_BLUR_ITERATIONS_KHR       = 0x116D,\r
64 #endif\r
65 \r
66   VG_PARAM_TYPE_KHR_FORCE_SIZE             = VG_MAX_ENUM\r
67 } VGParamTypeKHR;\r
68 \r
69 #ifndef VG_KHR_EGL_image\r
70 #define VG_KHR_EGL_image 1\r
71 /* VGEGLImageKHR is an opaque handle to an EGLImage */\r
72 typedef void* VGeglImageKHR; \r
73 \r
74 #ifdef VG_VGEXT_PROTOTYPES\r
75 VG_API_CALL VGImage VG_API_ENTRY vgCreateEGLImageTargetKHR(VGeglImageKHR image);\r
76 #endif\r
77 typedef VGImage (VG_API_ENTRYP PFNVGCREATEEGLIMAGETARGETKHRPROC) (VGeglImageKHR image);\r
78 \r
79 #endif\r
80 \r
81 \r
82 #ifndef VG_KHR_iterative_average_blur\r
83 #define VG_KHR_iterative_average_blur 1\r
84 \r
85 #ifdef VG_VGEXT_PROTOTYPES\r
86 VG_API_CALL void vgIterativeAverageBlurKHR(VGImage dst,VGImage src,VGfloat dimX,VGfloat dimY,VGuint iterative,VGTilingMode tilingMode);\r
87 #endif \r
88 typedef void (VG_API_ENTRYP PFNVGITERATIVEAVERAGEBLURKHRPROC) (VGImage dst,VGImage src,VGfloat dimX,VGfloat dimY,VGuint iterative,VGTilingMode tilingMode);\r
89 \r
90 #endif\r
91 \r
92 \r
93 #ifndef VG_KHR_advanced_blending\r
94 #define VG_KHR_advanced_blending 1\r
95 \r
96 typedef enum {\r
97   VG_BLEND_OVERLAY_KHR        = 0x2010,\r
98   VG_BLEND_HARDLIGHT_KHR      = 0x2011,\r
99   VG_BLEND_SOFTLIGHT_SVG_KHR  = 0x2012,\r
100   VG_BLEND_SOFTLIGHT_KHR      = 0x2013,\r
101   VG_BLEND_COLORDODGE_KHR     = 0x2014,\r
102   VG_BLEND_COLORBURN_KHR      = 0x2015,\r
103   VG_BLEND_DIFFERENCE_KHR     = 0x2016,\r
104   VG_BLEND_SUBTRACT_KHR       = 0x2017,\r
105   VG_BLEND_INVERT_KHR         = 0x2018,\r
106   VG_BLEND_EXCLUSION_KHR      = 0x2019,\r
107   VG_BLEND_LINEARDODGE_KHR    = 0x201a,\r
108   VG_BLEND_LINEARBURN_KHR     = 0x201b,\r
109   VG_BLEND_VIVIDLIGHT_KHR     = 0x201c,\r
110   VG_BLEND_LINEARLIGHT_KHR    = 0x201d,\r
111   VG_BLEND_PINLIGHT_KHR       = 0x201e,\r
112   VG_BLEND_HARDMIX_KHR        = 0x201f,\r
113   VG_BLEND_CLEAR_KHR          = 0x2020,\r
114   VG_BLEND_DST_KHR            = 0x2021,\r
115   VG_BLEND_SRC_OUT_KHR        = 0x2022,\r
116   VG_BLEND_DST_OUT_KHR        = 0x2023,\r
117   VG_BLEND_SRC_ATOP_KHR       = 0x2024,\r
118   VG_BLEND_DST_ATOP_KHR       = 0x2025,\r
119   VG_BLEND_XOR_KHR            = 0x2026,\r
120 \r
121   VG_BLEND_MODE_KHR_FORCE_SIZE= VG_MAX_ENUM\r
122 } VGBlendModeKHR;\r
123 #endif\r
124 \r
125 #ifndef VG_KHR_parametric_filter\r
126 #define VG_KHR_parametric_filter 1 \r
127 \r
128 typedef enum {\r
129   VG_PF_OBJECT_VISIBLE_FLAG_KHR = (1 << 0),\r
130   VG_PF_KNOCKOUT_FLAG_KHR       = (1 << 1),\r
131   VG_PF_OUTER_FLAG_KHR          = (1 << 2),\r
132   VG_PF_INNER_FLAG_KHR          = (1 << 3),\r
133 \r
134   VG_PF_TYPE_KHR_FORCE_SIZE     = VG_MAX_ENUM\r
135 } VGPfTypeKHR;\r
136 \r
137 typedef enum {\r
138   VGU_IMAGE_IN_USE_ERROR           = 0xF010,\r
139 \r
140   VGU_ERROR_CODE_KHR_FORCE_SIZE    = VG_MAX_ENUM\r
141 } VGUErrorCodeKHR;\r
142 \r
143 #ifdef VG_VGEXT_PROTOTYPES\r
144 VG_API_CALL void VG_API_ENTRY vgParametricFilterKHR(VGImage dst,VGImage src,VGImage blur,VGfloat strength,VGfloat offsetX,VGfloat offsetY,VGbitfield filterFlags,VGPaint highlightPaint,VGPaint shadowPaint);\r
145 VGU_API_CALL VGUErrorCode VGU_API_ENTRY vguDropShadowKHR(VGImage dst,VGImage src,VGfloat dimX,VGfloat dimY,VGuint iterative,VGfloat strength,VGfloat distance,VGfloat angle,VGbitfield filterFlags,VGbitfield allowedQuality,VGuint shadowColorRGBA);\r
146 VGU_API_CALL VGUErrorCode VGU_API_ENTRY vguGlowKHR(VGImage dst,VGImage src,VGfloat dimX,VGfloat dimY,VGuint iterative,VGfloat strength,VGbitfield filterFlags,VGbitfield allowedQuality,VGuint glowColorRGBA) ;\r
147 VGU_API_CALL VGUErrorCode VGU_API_ENTRY vguBevelKHR(VGImage dst,VGImage src,VGfloat dimX,VGfloat dimY,VGuint iterative,VGfloat strength,VGfloat distance,VGfloat angle,VGbitfield filterFlags,VGbitfield allowedQuality,VGuint highlightColorRGBA,VGuint shadowColorRGBA);\r
148 VGU_API_CALL VGUErrorCode VGU_API_ENTRY vguGradientGlowKHR(VGImage dst,VGImage src,VGfloat dimX,VGfloat dimY,VGuint iterative,VGfloat strength,VGfloat distance,VGfloat angle,VGbitfield filterFlags,VGbitfield allowedQuality,VGuint stopsCount,const VGfloat* glowColorRampStops);\r
149 VGU_API_CALL VGUErrorCode VGU_API_ENTRY vguGradientBevelKHR(VGImage dst,VGImage src,VGfloat dimX,VGfloat dimY,VGuint iterative,VGfloat strength,VGfloat distance,VGfloat angle,VGbitfield filterFlags,VGbitfield allowedQuality,VGuint stopsCount,const VGfloat* bevelColorRampStops);\r
150 #endif\r
151 typedef void (VG_API_ENTRYP PFNVGPARAMETRICFILTERKHRPROC) (VGImage dst,VGImage src,VGImage blur,VGfloat strength,VGfloat offsetX,VGfloat offsetY,VGbitfield filterFlags,VGPaint highlightPaint,VGPaint shadowPaint);\r
152 typedef VGUErrorCode (VGU_API_ENTRYP PFNVGUDROPSHADOWKHRPROC) (VGImage dst,VGImage src,VGfloat dimX,VGfloat dimY,VGuint iterative,VGfloat strength,VGfloat distance,VGfloat angle,VGbitfield filterFlags,VGbitfield allowedQuality,VGuint shadowColorRGBA);\r
153 typedef VGUErrorCode (VGU_API_ENTRYP PFNVGUGLOWKHRPROC) (VGImage dst,VGImage src,VGfloat dimX,VGfloat dimY,VGuint iterative,VGfloat strength,VGbitfield filterFlags,VGbitfield allowedQuality,VGuint glowColorRGBA);\r
154 typedef VGUErrorCode (VGU_API_ENTRYP PFNVGUBEVELKHRPROC) (VGImage dst,VGImage src,VGfloat dimX,VGfloat dimY,VGuint iterative,VGfloat strength,VGfloat distance,VGfloat angle,VGbitfield filterFlags,VGbitfield allowedQuality,VGuint highlightColorRGBA,VGuint shadowColorRGBA);\r
155 typedef VGUErrorCode (VGU_API_ENTRYP PFNVGUGRADIENTGLOWKHRPROC) (VGImage dst,VGImage src,VGfloat dimX,VGfloat dimY,VGuint iterative,VGfloat strength,VGfloat distance,VGfloat angle,VGbitfield filterFlags,VGbitfield allowedQuality,VGuint stopsCount,const VGfloat* glowColorRampStops);\r
156 typedef VGUErrorCode (VGU_API_ENTRYP PFNVGUGRADIENTBEVELKHRPROC) (VGImage dst,VGImage src,VGfloat dimX,VGfloat dimY,VGuint iterative,VGfloat strength,VGfloat distance,VGfloat angle,VGbitfield filterFlags,VGbitfield allowedQuality,VGuint stopsCount,const VGfloat* bevelColorRampStops);\r
157 \r
158 #endif\r
159 \r
160 \r
161 /*-------------------------------------------------------------------------------\r
162  * NDS extensions\r
163  *------------------------------------------------------------------------------*/\r
164 \r
165 #ifndef VG_NDS_paint_generation\r
166 #define VG_NDS_paint_generation 1\r
167 \r
168 typedef enum { \r
169   VG_PAINT_COLOR_RAMP_LINEAR_NDS            = 0x1A10,\r
170   VG_COLOR_MATRIX_NDS                       = 0x1A11,\r
171   VG_PAINT_COLOR_TRANSFORM_LINEAR_NDS       = 0x1A12,\r
172 \r
173   VG_PAINT_PARAM_TYPE_NDS_FORCE_SIZE        = VG_MAX_ENUM\r
174 } VGPaintParamTypeNds;\r
175 \r
176 typedef enum {\r
177   VG_DRAW_IMAGE_COLOR_MATRIX_NDS            = 0x1F10,\r
178 \r
179   VG_IMAGE_MODE_NDS_FORCE_SIZE              = VG_MAX_ENUM\r
180 } VGImageModeNds;\r
181 #endif \r
182 \r
183 \r
184 #ifndef VG_NDS_projective_geometry\r
185 #define VG_NDS_projective_geometry 1\r
186 \r
187 typedef enum {\r
188   VG_CLIP_MODE_NDS                          = 0x1180,\r
189   VG_CLIP_LINES_NDS                         = 0x1181,\r
190   VG_MAX_CLIP_LINES_NDS                     = 0x1182,\r
191 \r
192   VG_PARAM_TYPE_NDS_FORCE_SIZE        = VG_MAX_ENUM\r
193 } VGParamTypeNds;\r
194 \r
195 typedef enum {\r
196   VG_CLIPMODE_NONE_NDS                      = 0x3000,\r
197   VG_CLIPMODE_CLIP_CLOSED_NDS               = 0x3001,\r
198   VG_CLIPMODE_CLIP_OPEN_NDS                 = 0x3002,\r
199   VG_CLIPMODE_CULL_NDS                      = 0x3003,\r
200 \r
201   VG_CLIPMODE_NDS_FORCE_SIZE = VG_MAX_ENUM\r
202 } VGClipModeNds;\r
203 \r
204 typedef enum {\r
205   VG_RQUAD_TO_NDS              = ( 13 << 1 ),\r
206   VG_RCUBIC_TO_NDS             = ( 14 << 1 ),\r
207   \r
208   VG_PATH_SEGMENT_NDS_FORCE_SIZE = VG_MAX_ENUM\r
209 } VGPathSegmentNds;\r
210 \r
211 typedef enum {\r
212   VG_RQUAD_TO_ABS_NDS            = (VG_RQUAD_TO_NDS  | VG_ABSOLUTE),\r
213   VG_RQUAD_TO_REL_NDS            = (VG_RQUAD_TO_NDS  | VG_RELATIVE),\r
214   VG_RCUBIC_TO_ABS_NDS           = (VG_RCUBIC_TO_NDS | VG_ABSOLUTE),\r
215   VG_RCUBIC_TO_REL_NDS           = (VG_RCUBIC_TO_NDS | VG_RELATIVE),\r
216 \r
217   VG_PATH_COMMAND_NDS_FORCE_SIZE = VG_MAX_ENUM\r
218 } VGPathCommandNds;\r
219 \r
220 #ifdef VG_VGEXT_PROTOTYPES\r
221 VG_API_CALL void VG_API_ENTRY vgProjectiveMatrixNDS(VGboolean enable) ;\r
222 VGU_API_CALL VGUErrorCode VGU_API_ENTRY vguTransformClipLineNDS(const VGfloat Ain,const VGfloat Bin,const VGfloat Cin,const VGfloat* matrix,const VGboolean inverse,VGfloat* Aout,VGfloat* Bout,VGfloat* Cout);\r
223 #endif \r
224 typedef void (VG_API_ENTRYP PFNVGPROJECTIVEMATRIXNDSPROC) (VGboolean enable) ;\r
225 typedef VGUErrorCode (VGU_API_ENTRYP PFNVGUTRANSFORMCLIPLINENDSPROC) (const VGfloat Ain,const VGfloat Bin,const VGfloat Cin,const VGfloat* matrix,const VGboolean inverse,VGfloat* Aout,VGfloat* Bout,VGfloat* Cout);\r
226 \r
227 #endif\r
228 \r
229 #ifdef __cplusplus \r
230 } /* extern "C" */\r
231 #endif\r
232 \r
233 #endif /* _VGEXT_H */\r