| 1 | /* $Revision: 6810 $ on $Date:: 2008-10-29 14:31:37 +0000 #$ */ | 
|---|
| 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 "openvg.h" | 
|---|
| 44 | #include "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 |  | 
|---|