Home | History | Annotate | Download | only in VG
      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