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