| 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 */ |