hostsupport/inc/VG/vgext.h
branchbug235_bringup_0
changeset 55 09263774e342
parent 54 067180f57b12
child 56 40cc73c24bf8
equal deleted inserted replaced
54:067180f57b12 55:09263774e342
     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 */