Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  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.