• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifdef __cplusplus
230 } /* extern "C" */
231 #endif
232 
233 #endif /* _VGEXT_H */
234