openvg.h

Go to the documentation of this file.
00001 /**********************************************************************
00002  *                                                                    *
00003  * Sample implementation of openvg.h, version 1.0.1                   *
00004  *                                                                    *
00005  * Copyright © 2005-2007 The Khronos Group                            *
00006  *                                                                    *
00007  **********************************************************************/
00008 
00009 #ifndef _OPENVG_H
00010 #define _OPENVG_H
00011 
00012 #ifdef __cplusplus
00013 extern "C" {
00014 #endif
00015 
00016 #include <vg/khronos_types.h>
00017 
00018 #define OPENVG_VERSION_1_0 1
00019 
00020 typedef khronos_float    VGfloat;
00021 typedef khronos_int8_t   VGbyte;
00022 typedef khronos_uint8_t  VGubyte;
00023 typedef khronos_int16_t  VGshort;
00024 typedef khronos_int32_t  VGint;
00025 typedef khronos_uint32_t VGuint;
00026 typedef khronos_uint32_t VGbitfield;
00027 
00028 typedef enum {
00029   VG_FALSE = 0,
00030   VG_TRUE  = 1
00031 } VGboolean;
00032 
00033 #define VG_MAXSHORT ((VGshort)((~((unsigned)0)) >> 1))
00034 #define VG_MAXINT ((VGint)((~((unsigned)0)) >> 1))
00035 
00036 typedef VGuint VGHandle;
00037 
00038 #define VG_INVALID_HANDLE ((VGHandle)0)
00039 
00040 typedef enum {
00041   VG_NO_ERROR                                 = 0,
00042   VG_BAD_HANDLE_ERROR                         = 0x1000,
00043   VG_ILLEGAL_ARGUMENT_ERROR                   = 0x1001,
00044   VG_OUT_OF_MEMORY_ERROR                      = 0x1002,
00045   VG_PATH_CAPABILITY_ERROR                    = 0x1003,
00046   VG_UNSUPPORTED_IMAGE_FORMAT_ERROR           = 0x1004,
00047   VG_UNSUPPORTED_PATH_FORMAT_ERROR            = 0x1005,
00048   VG_IMAGE_IN_USE_ERROR                       = 0x1006,
00049   VG_NO_CONTEXT_ERROR                         = 0x1007
00050 } VGErrorCode;
00051 
00052 typedef enum {
00053   /* Mode settings */
00054   VG_MATRIX_MODE                              = 0x1100,
00055   VG_FILL_RULE                                = 0x1101,
00056   VG_IMAGE_QUALITY                            = 0x1102,
00057   VG_RENDERING_QUALITY                        = 0x1103,
00058   VG_BLEND_MODE                               = 0x1104,
00059   VG_IMAGE_MODE                               = 0x1105,
00060 
00061   /* Scissoring rectangles */
00062   VG_SCISSOR_RECTS                            = 0x1106,
00063 
00064   /* Stroke parameters */
00065   VG_STROKE_LINE_WIDTH                        = 0x1110,
00066   VG_STROKE_CAP_STYLE                         = 0x1111,
00067   VG_STROKE_JOIN_STYLE                        = 0x1112,
00068   VG_STROKE_MITER_LIMIT                       = 0x1113,
00069   VG_STROKE_DASH_PATTERN                      = 0x1114,
00070   VG_STROKE_DASH_PHASE                        = 0x1115,
00071   VG_STROKE_DASH_PHASE_RESET                  = 0x1116,
00072 
00073   /* Edge fill color for VG_TILE_FILL tiling mode */
00074   VG_TILE_FILL_COLOR                          = 0x1120,
00075 
00076   /* Color for vgClear */
00077   VG_CLEAR_COLOR                              = 0x1121,
00078 
00079   /* Enable/disable alpha masking and scissoring */
00080   VG_MASKING                                  = 0x1130,
00081   VG_SCISSORING                               = 0x1131,
00082 
00083   /* Pixel layout information */
00084   VG_PIXEL_LAYOUT                             = 0x1140,
00085   VG_SCREEN_LAYOUT                            = 0x1141,
00086 
00087   /* Source format selection for image filters */
00088   VG_FILTER_FORMAT_LINEAR                     = 0x1150,
00089   VG_FILTER_FORMAT_PREMULTIPLIED              = 0x1151,
00090 
00091   /* Destination write enable mask for image filters */
00092   VG_FILTER_CHANNEL_MASK                      = 0x1152,
00093 
00094   /* Implementation limits (read-only) */
00095   VG_MAX_SCISSOR_RECTS                        = 0x1160,
00096   VG_MAX_DASH_COUNT                           = 0x1161,
00097   VG_MAX_KERNEL_SIZE                          = 0x1162,
00098   VG_MAX_SEPARABLE_KERNEL_SIZE                = 0x1163,
00099   VG_MAX_COLOR_RAMP_STOPS                     = 0x1164,
00100   VG_MAX_IMAGE_WIDTH                          = 0x1165,
00101   VG_MAX_IMAGE_HEIGHT                         = 0x1166,
00102   VG_MAX_IMAGE_PIXELS                         = 0x1167,
00103   VG_MAX_IMAGE_BYTES                          = 0x1168,
00104   VG_MAX_FLOAT                                = 0x1169,
00105   VG_MAX_GAUSSIAN_STD_DEVIATION               = 0x116A
00106 } VGParamType;
00107 
00108 typedef enum {
00109   VG_RENDERING_QUALITY_NONANTIALIASED         = 0x1200,
00110   VG_RENDERING_QUALITY_FASTER                 = 0x1201,
00111   VG_RENDERING_QUALITY_BETTER                 = 0x1202  /* Default */
00112 } VGRenderingQuality;
00113 
00114 typedef enum {
00115   VG_PIXEL_LAYOUT_UNKNOWN                     = 0x1300,
00116   VG_PIXEL_LAYOUT_RGB_VERTICAL                = 0x1301,
00117   VG_PIXEL_LAYOUT_BGR_VERTICAL                = 0x1302,
00118   VG_PIXEL_LAYOUT_RGB_HORIZONTAL              = 0x1303,
00119   VG_PIXEL_LAYOUT_BGR_HORIZONTAL              = 0x1304
00120 } VGPixelLayout;
00121 
00122 typedef enum {
00123   VG_MATRIX_PATH_USER_TO_SURFACE              = 0x1400,
00124   VG_MATRIX_IMAGE_USER_TO_SURFACE             = 0x1401,
00125   VG_MATRIX_FILL_PAINT_TO_USER                = 0x1402,
00126   VG_MATRIX_STROKE_PAINT_TO_USER              = 0x1403
00127 } VGMatrixMode;
00128 
00129 typedef enum {
00130   VG_CLEAR_MASK                               = 0x1500,
00131   VG_FILL_MASK                                = 0x1501,
00132   VG_SET_MASK                                 = 0x1502,
00133   VG_UNION_MASK                               = 0x1503,
00134   VG_INTERSECT_MASK                           = 0x1504,
00135   VG_SUBTRACT_MASK                            = 0x1505
00136 } VGMaskOperation;
00137 
00138 #define VG_PATH_FORMAT_STANDARD 0
00139 
00140 typedef enum {
00141   VG_PATH_DATATYPE_S_8                        =  0,
00142   VG_PATH_DATATYPE_S_16                       =  1,
00143   VG_PATH_DATATYPE_S_32                       =  2,
00144   VG_PATH_DATATYPE_F                          =  3
00145 } VGPathDatatype;
00146 
00147 typedef enum {
00148   VG_ABSOLUTE                                 = 0,
00149   VG_RELATIVE                                 = 1
00150 } VGPathAbsRel;
00151 
00152 typedef enum {
00153   VG_CLOSE_PATH                               = ( 0 << 1),
00154   VG_MOVE_TO                                  = ( 1 << 1),
00155   VG_LINE_TO                                  = ( 2 << 1),
00156   VG_HLINE_TO                                 = ( 3 << 1),
00157   VG_VLINE_TO                                 = ( 4 << 1),
00158   VG_QUAD_TO                                  = ( 5 << 1),
00159   VG_CUBIC_TO                                 = ( 6 << 1),
00160   VG_SQUAD_TO                                 = ( 7 << 1),
00161   VG_SCUBIC_TO                                = ( 8 << 1),
00162   VG_SCCWARC_TO                               = ( 9 << 1),
00163   VG_SCWARC_TO                                = (10 << 1),
00164   VG_LCCWARC_TO                               = (11 << 1),
00165   VG_LCWARC_TO                                = (12 << 1)
00166 } VGPathSegment;
00167 
00168 typedef enum {
00169   VG_MOVE_TO_ABS                              = VG_MOVE_TO    | VG_ABSOLUTE,
00170   VG_MOVE_TO_REL                              = VG_MOVE_TO    | VG_RELATIVE,
00171   VG_LINE_TO_ABS                              = VG_LINE_TO    | VG_ABSOLUTE,
00172   VG_LINE_TO_REL                              = VG_LINE_TO    | VG_RELATIVE,
00173   VG_HLINE_TO_ABS                             = VG_HLINE_TO   | VG_ABSOLUTE,
00174   VG_HLINE_TO_REL                             = VG_HLINE_TO   | VG_RELATIVE,
00175   VG_VLINE_TO_ABS                             = VG_VLINE_TO   | VG_ABSOLUTE,
00176   VG_VLINE_TO_REL                             = VG_VLINE_TO   | VG_RELATIVE,
00177   VG_QUAD_TO_ABS                              = VG_QUAD_TO    | VG_ABSOLUTE,
00178   VG_QUAD_TO_REL                              = VG_QUAD_TO    | VG_RELATIVE,
00179   VG_CUBIC_TO_ABS                             = VG_CUBIC_TO   | VG_ABSOLUTE,
00180   VG_CUBIC_TO_REL                             = VG_CUBIC_TO   | VG_RELATIVE,
00181   VG_SQUAD_TO_ABS                             = VG_SQUAD_TO   | VG_ABSOLUTE,
00182   VG_SQUAD_TO_REL                             = VG_SQUAD_TO   | VG_RELATIVE,
00183   VG_SCUBIC_TO_ABS                            = VG_SCUBIC_TO  | VG_ABSOLUTE,
00184   VG_SCUBIC_TO_REL                            = VG_SCUBIC_TO  | VG_RELATIVE,
00185   VG_SCCWARC_TO_ABS                           = VG_SCCWARC_TO | VG_ABSOLUTE,
00186   VG_SCCWARC_TO_REL                           = VG_SCCWARC_TO | VG_RELATIVE,
00187   VG_SCWARC_TO_ABS                            = VG_SCWARC_TO  | VG_ABSOLUTE,
00188   VG_SCWARC_TO_REL                            = VG_SCWARC_TO  | VG_RELATIVE,
00189   VG_LCCWARC_TO_ABS                           = VG_LCCWARC_TO | VG_ABSOLUTE,
00190   VG_LCCWARC_TO_REL                           = VG_LCCWARC_TO | VG_RELATIVE,
00191   VG_LCWARC_TO_ABS                            = VG_LCWARC_TO  | VG_ABSOLUTE,
00192   VG_LCWARC_TO_REL                            = VG_LCWARC_TO  | VG_RELATIVE
00193 } VGPathCommand;
00194 
00195 typedef VGHandle VGPath;
00196 
00197 typedef enum {
00198   VG_PATH_CAPABILITY_APPEND_FROM              = (1 <<  0),
00199   VG_PATH_CAPABILITY_APPEND_TO                = (1 <<  1),
00200   VG_PATH_CAPABILITY_MODIFY                   = (1 <<  2),
00201   VG_PATH_CAPABILITY_TRANSFORM_FROM           = (1 <<  3),
00202   VG_PATH_CAPABILITY_TRANSFORM_TO             = (1 <<  4),
00203   VG_PATH_CAPABILITY_INTERPOLATE_FROM         = (1 <<  5),
00204   VG_PATH_CAPABILITY_INTERPOLATE_TO           = (1 <<  6),
00205   VG_PATH_CAPABILITY_PATH_LENGTH              = (1 <<  7),
00206   VG_PATH_CAPABILITY_POINT_ALONG_PATH         = (1 <<  8),
00207   VG_PATH_CAPABILITY_TANGENT_ALONG_PATH       = (1 <<  9),
00208   VG_PATH_CAPABILITY_PATH_BOUNDS              = (1 << 10),
00209   VG_PATH_CAPABILITY_PATH_TRANSFORMED_BOUNDS  = (1 << 11),
00210   VG_PATH_CAPABILITY_ALL                      = (1 << 12) - 1
00211 } VGPathCapabilities;
00212 
00213 typedef enum {
00214   VG_PATH_FORMAT                              = 0x1600,
00215   VG_PATH_DATATYPE                            = 0x1601,
00216   VG_PATH_SCALE                               = 0x1602,
00217   VG_PATH_BIAS                                = 0x1603,
00218   VG_PATH_NUM_SEGMENTS                        = 0x1604,
00219   VG_PATH_NUM_COORDS                          = 0x1605
00220 } VGPathParamType;
00221 
00222 typedef enum {
00223   VG_CAP_BUTT                                 = 0x1700,
00224   VG_CAP_ROUND                                = 0x1701,
00225   VG_CAP_SQUARE                               = 0x1702
00226 } VGCapStyle;
00227 
00228 typedef enum {
00229   VG_JOIN_MITER                               = 0x1800,
00230   VG_JOIN_ROUND                               = 0x1801,
00231   VG_JOIN_BEVEL                               = 0x1802
00232 } VGJoinStyle;
00233 
00234 typedef enum {
00235   VG_EVEN_ODD                                 = 0x1900,
00236   VG_NON_ZERO                                 = 0x1901
00237 } VGFillRule;
00238 
00239 typedef enum {
00240   VG_STROKE_PATH                              = (1 << 0),
00241   VG_FILL_PATH                                = (1 << 1)
00242 } VGPaintMode;
00243 
00244 typedef VGHandle VGPaint;
00245 
00246 typedef enum {
00247   /* Color paint parameters */
00248   VG_PAINT_TYPE                               = 0x1A00,
00249   VG_PAINT_COLOR                              = 0x1A01,
00250   VG_PAINT_COLOR_RAMP_SPREAD_MODE             = 0x1A02,
00251   VG_PAINT_COLOR_RAMP_PREMULTIPLIED           = 0x1A07,
00252   VG_PAINT_COLOR_RAMP_STOPS                   = 0x1A03,
00253 
00254   /* Linear gradient paint parameters */
00255   VG_PAINT_LINEAR_GRADIENT                    = 0x1A04,
00256 
00257   /* Radial gradient paint parameters */
00258   VG_PAINT_RADIAL_GRADIENT                    = 0x1A05,
00259 
00260   /* Pattern paint parameters */
00261   VG_PAINT_PATTERN_TILING_MODE                = 0x1A06
00262 } VGPaintParamType;
00263 
00264 typedef enum {
00265   VG_PAINT_TYPE_COLOR                         = 0x1B00,
00266   VG_PAINT_TYPE_LINEAR_GRADIENT               = 0x1B01,
00267   VG_PAINT_TYPE_RADIAL_GRADIENT               = 0x1B02,
00268   VG_PAINT_TYPE_PATTERN                       = 0x1B03
00269 } VGPaintType;
00270 
00271 typedef enum {
00272   VG_COLOR_RAMP_SPREAD_PAD                    = 0x1C00,
00273   VG_COLOR_RAMP_SPREAD_REPEAT                 = 0x1C01,
00274   VG_COLOR_RAMP_SPREAD_REFLECT                = 0x1C02
00275 } VGColorRampSpreadMode;
00276 
00277 typedef enum {
00278   VG_TILE_FILL                                = 0x1D00,
00279   VG_TILE_PAD                                 = 0x1D01,
00280   VG_TILE_REPEAT                              = 0x1D02,
00281   VG_TILE_REFLECT                             = 0x1D03
00282 } VGTilingMode;
00283 
00284 typedef enum {
00285   /* RGB{A,X} channel ordering */
00286   VG_sRGBX_8888                               =  0,
00287   VG_sRGBA_8888                               =  1,
00288   VG_sRGBA_8888_PRE                           =  2,
00289   VG_sRGB_565                                 =  3,
00290   VG_sRGBA_5551                               =  4,
00291   VG_sRGBA_4444                               =  5,
00292   VG_sL_8                                     =  6,
00293   VG_lRGBX_8888                               =  7,
00294   VG_lRGBA_8888                               =  8,
00295   VG_lRGBA_8888_PRE                           =  9,
00296   VG_lL_8                                     = 10,
00297   VG_A_8                                      = 11,
00298   VG_BW_1                                     = 12,
00299 
00300   /* {A,X}RGB channel ordering */
00301   VG_sXRGB_8888                               =  0 | (1 << 6),
00302   VG_sARGB_8888                               =  1 | (1 << 6),
00303   VG_sARGB_8888_PRE                           =  2 | (1 << 6),
00304   VG_sARGB_1555                               =  4 | (1 << 6),
00305   VG_sARGB_4444                               =  5 | (1 << 6),
00306   VG_lXRGB_8888                               =  7 | (1 << 6),
00307   VG_lARGB_8888                               =  8 | (1 << 6),
00308   VG_lARGB_8888_PRE                           =  9 | (1 << 6),
00309 
00310   /* BGR{A,X} channel ordering */
00311   VG_sBGRX_8888                               =  0 | (1 << 7),
00312   VG_sBGRA_8888                               =  1 | (1 << 7),
00313   VG_sBGRA_8888_PRE                           =  2 | (1 << 7),
00314   VG_sBGR_565                                 =  3 | (1 << 7),
00315   VG_sBGRA_5551                               =  4 | (1 << 7),
00316   VG_sBGRA_4444                               =  5 | (1 << 7),
00317   VG_lBGRX_8888                               =  7 | (1 << 7),
00318   VG_lBGRA_8888                               =  8 | (1 << 7),
00319   VG_lBGRA_8888_PRE                           =  9 | (1 << 7),
00320 
00321   /* {A,X}BGR channel ordering */
00322   VG_sXBGR_8888                               =  0 | (1 << 6) | (1 << 7),
00323   VG_sABGR_8888                               =  1 | (1 << 6) | (1 << 7),
00324   VG_sABGR_8888_PRE                           =  2 | (1 << 6) | (1 << 7),
00325   VG_sABGR_1555                               =  4 | (1 << 6) | (1 << 7),
00326   VG_sABGR_4444                               =  5 | (1 << 6) | (1 << 7),
00327   VG_lXBGR_8888                               =  7 | (1 << 6) | (1 << 7),
00328   VG_lABGR_8888                               =  8 | (1 << 6) | (1 << 7),
00329   VG_lABGR_8888_PRE                           =  9 | (1 << 6) | (1 << 7)
00330 } VGImageFormat;
00331 
00332 typedef VGHandle VGImage;
00333 
00334 typedef enum {
00335   VG_IMAGE_QUALITY_NONANTIALIASED             = (1 << 0),
00336   VG_IMAGE_QUALITY_FASTER                     = (1 << 1),
00337   VG_IMAGE_QUALITY_BETTER                     = (1 << 2)
00338 } VGImageQuality;
00339 
00340 typedef enum {
00341   VG_IMAGE_FORMAT                             = 0x1E00,
00342   VG_IMAGE_WIDTH                              = 0x1E01,
00343   VG_IMAGE_HEIGHT                             = 0x1E02
00344 } VGImageParamType;
00345 
00346 typedef enum {
00347   VG_DRAW_IMAGE_NORMAL                        = 0x1F00,
00348   VG_DRAW_IMAGE_MULTIPLY                      = 0x1F01,
00349   VG_DRAW_IMAGE_STENCIL                       = 0x1F02
00350 } VGImageMode;
00351 
00352 typedef enum {
00353   VG_RED                                      = (1 << 3),
00354   VG_GREEN                                    = (1 << 2),
00355   VG_BLUE                                     = (1 << 1),
00356   VG_ALPHA                                    = (1 << 0)
00357 } VGImageChannel;
00358 
00359 typedef enum {
00360   VG_BLEND_SRC                                = 0x2000,
00361   VG_BLEND_SRC_OVER                           = 0x2001,
00362   VG_BLEND_DST_OVER                           = 0x2002,
00363   VG_BLEND_SRC_IN                             = 0x2003,
00364   VG_BLEND_DST_IN                             = 0x2004,
00365   VG_BLEND_MULTIPLY                           = 0x2005,
00366   VG_BLEND_SCREEN                             = 0x2006,
00367   VG_BLEND_DARKEN                             = 0x2007,
00368   VG_BLEND_LIGHTEN                            = 0x2008,
00369   VG_BLEND_ADDITIVE                           = 0x2009
00370 } VGBlendMode;
00371 
00372 typedef enum {
00373   VG_IMAGE_FORMAT_QUERY                       = 0x2100,
00374   VG_PATH_DATATYPE_QUERY                      = 0x2101
00375 } VGHardwareQueryType;
00376 
00377 typedef enum {
00378   VG_HARDWARE_ACCELERATED                     = 0x2200,
00379   VG_HARDWARE_UNACCELERATED                   = 0x2201
00380 } VGHardwareQueryResult;
00381 
00382 typedef enum {
00383   VG_VENDOR                                   = 0x2300,
00384   VG_RENDERER                                 = 0x2301,
00385   VG_VERSION                                  = 0x2302,
00386   VG_EXTENSIONS                               = 0x2303
00387 } VGStringID;
00388 
00389 /* Function Prototypes */
00390 
00391 #ifndef VG_API_CALL
00392 #define VG_API_CALL extern
00393 #endif
00394 
00395 VG_API_CALL VGErrorCode vgGetError(void);
00396 
00397 VG_API_CALL void vgFlush(void);
00398 VG_API_CALL void vgFinish(void);
00399 
00400 /* Getters and Setters */
00401 VG_API_CALL void vgSetf (VGParamType type, VGfloat value);
00402 VG_API_CALL void vgSeti (VGParamType type, VGint value);
00403 VG_API_CALL void vgSetfv(VGParamType type, VGint count,
00404                          const VGfloat * values);
00405 VG_API_CALL void vgSetiv(VGParamType type, VGint count,
00406                          const VGint * values);
00407 
00408 VG_API_CALL VGfloat vgGetf(VGParamType type);
00409 VG_API_CALL VGint   vgGeti(VGParamType type);
00410 VG_API_CALL VGint   vgGetVectorSize(VGParamType type);
00411 VG_API_CALL void    vgGetfv(VGParamType type, VGint count, VGfloat * values);
00412 VG_API_CALL void    vgGetiv(VGParamType type, VGint count, VGint * values);
00413 
00414 VG_API_CALL void vgSetParameterf(VGHandle object,
00415                                  VGint paramType,
00416                                  VGfloat value);
00417 VG_API_CALL void vgSetParameteri(VGHandle object,
00418                                  VGint paramType,
00419                                  VGint value);
00420 VG_API_CALL void vgSetParameterfv(VGHandle object,
00421                                   VGint paramType,
00422                                   VGint count, const VGfloat * values);
00423 VG_API_CALL void vgSetParameteriv(VGHandle object,
00424                                   VGint paramType,
00425                                   VGint count, const VGint * values);
00426 
00427 VG_API_CALL VGfloat vgGetParameterf(VGHandle object,
00428                                     VGint paramType);
00429 VG_API_CALL VGint vgGetParameteri(VGHandle object,
00430                                   VGint paramType);
00431 VG_API_CALL VGint vgGetParameterVectorSize(VGHandle object,
00432                                            VGint paramType);
00433 VG_API_CALL void vgGetParameterfv(VGHandle object,
00434                                   VGint paramType,
00435                                   VGint count, VGfloat * values);
00436 VG_API_CALL void vgGetParameteriv(VGHandle object,
00437                                   VGint paramType,
00438                                   VGint count, VGint * values);
00439 
00440 /* Matrix Manipulation */
00441 VG_API_CALL void vgLoadIdentity(void);
00442 VG_API_CALL void vgLoadMatrix(const VGfloat * m);
00443 VG_API_CALL void vgGetMatrix(VGfloat * m);
00444 VG_API_CALL void vgMultMatrix(const VGfloat * m);
00445 VG_API_CALL void vgTranslate(VGfloat tx, VGfloat ty);
00446 VG_API_CALL void vgScale(VGfloat sx, VGfloat sy);
00447 VG_API_CALL void vgShear(VGfloat shx, VGfloat shy);
00448 VG_API_CALL void vgRotate(VGfloat angle);
00449 
00450 /* Masking and Clearing */
00451 VG_API_CALL void vgMask(VGImage mask, VGMaskOperation operation,
00452                         VGint x, VGint y, VGint width, VGint height);
00453 VG_API_CALL void vgClear(VGint x, VGint y, VGint width, VGint height);
00454 
00455 /* Paths */
00456 VG_API_CALL VGPath vgCreatePath(VGint pathFormat,
00457                                 VGPathDatatype datatype,
00458                                 VGfloat scale, VGfloat bias,
00459                                 VGint segmentCapacityHint,
00460                                 VGint coordCapacityHint,
00461                                 VGbitfield capabilities);
00462 VG_API_CALL void vgClearPath(VGPath path, VGbitfield capabilities);
00463 VG_API_CALL void vgDestroyPath(VGPath path);
00464 VG_API_CALL void vgRemovePathCapabilities(VGPath path,
00465                                           VGbitfield capabilities);
00466 VG_API_CALL VGbitfield vgGetPathCapabilities(VGPath path);
00467 VG_API_CALL void vgAppendPath(VGPath dstPath, VGPath srcPath);
00468 VG_API_CALL void vgAppendPathData(VGPath dstPath,
00469                                   VGint numSegments,
00470                                   const VGubyte * pathSegments,
00471                                   const void * pathData);
00472 VG_API_CALL void vgModifyPathCoords(VGPath dstPath, VGint startIndex,
00473                                     VGint numSegments,
00474                                     const void * pathData);
00475 VG_API_CALL void vgTransformPath(VGPath dstPath, VGPath srcPath);
00476 VG_API_CALL VGboolean vgInterpolatePath(VGPath dstPath,
00477                                         VGPath startPath,
00478                                         VGPath endPath,
00479                                         VGfloat amount);
00480 VG_API_CALL VGfloat vgPathLength(VGPath path,
00481                                  VGint startSegment, VGint numSegments);
00482 VG_API_CALL void vgPointAlongPath(VGPath path,
00483                                   VGint startSegment, VGint numSegments,
00484                                   VGfloat distance,
00485                                   VGfloat * x, VGfloat * y,
00486                                   VGfloat * tangentX, VGfloat * tangentY);
00487 VG_API_CALL void vgPathBounds(VGPath path,
00488                               VGfloat * minX, VGfloat * minY,
00489                               VGfloat * width, VGfloat * height);
00490 VG_API_CALL void vgPathTransformedBounds(VGPath path,
00491                                          VGfloat * minX, VGfloat * minY,
00492                                          VGfloat * width, VGfloat * height);
00493 VG_API_CALL void vgDrawPath(VGPath path, VGbitfield paintModes);
00494 
00495 /* Paint */
00496 VG_API_CALL VGPaint vgCreatePaint(void);
00497 VG_API_CALL void vgDestroyPaint(VGPaint paint);
00498 VG_API_CALL void vgSetPaint(VGPaint paint, VGbitfield paintModes);
00499 VG_API_CALL VGPaint vgGetPaint(VGPaintMode paintMode);
00500 VG_API_CALL void vgSetColor(VGPaint paint, VGuint rgba);
00501 VG_API_CALL VGuint vgGetColor(VGPaint paint);
00502 VG_API_CALL void vgPaintPattern(VGPaint paint, VGImage pattern);
00503 
00504 /* Images */
00505 VG_API_CALL VGImage vgCreateImage(VGImageFormat format,
00506                                   VGint width, VGint height,
00507                                   VGbitfield allowedQuality);
00508 VG_API_CALL void vgDestroyImage(VGImage image);
00509 VG_API_CALL void vgClearImage(VGImage image,
00510                               VGint x, VGint y, VGint width, VGint height);
00511 VG_API_CALL void vgImageSubData(VGImage image,
00512                                 const void * data, VGint dataStride,
00513                                 VGImageFormat dataFormat,
00514                                 VGint x, VGint y, VGint width, VGint height);
00515 VG_API_CALL void vgGetImageSubData(VGImage image,
00516                                    void * data, VGint dataStride,
00517                                    VGImageFormat dataFormat,
00518                                    VGint x, VGint y,
00519                                    VGint width, VGint height);
00520 VG_API_CALL VGImage vgChildImage(VGImage parent,
00521                                  VGint x, VGint y, VGint width, VGint height);
00522 VG_API_CALL VGImage vgGetParent(VGImage image); 
00523 VG_API_CALL void vgCopyImage(VGImage dst, VGint dx, VGint dy,
00524                              VGImage src, VGint sx, VGint sy,
00525                              VGint width, VGint height,
00526                              VGboolean dither);
00527 VG_API_CALL void vgDrawImage(VGImage image);
00528 VG_API_CALL void vgSetPixels(VGint dx, VGint dy,
00529                              VGImage src, VGint sx, VGint sy,
00530                              VGint width, VGint height);
00531 VG_API_CALL void vgWritePixels(const void * data, VGint dataStride,
00532                                VGImageFormat dataFormat,
00533                                VGint dx, VGint dy,
00534                                VGint width, VGint height);
00535 VG_API_CALL void vgGetPixels(VGImage dst, VGint dx, VGint dy,
00536                              VGint sx, VGint sy,
00537                              VGint width, VGint height);
00538 VG_API_CALL void vgReadPixels(void * data, VGint dataStride,
00539                               VGImageFormat dataFormat,
00540                               VGint sx, VGint sy,
00541                               VGint width, VGint height);
00542 VG_API_CALL void vgCopyPixels(VGint dx, VGint dy,
00543                               VGint sx, VGint sy,
00544                               VGint width, VGint height);
00545 
00546 /* Image Filters */
00547 VG_API_CALL void vgColorMatrix(VGImage dst, VGImage src,
00548                                const VGfloat * matrix);
00549 VG_API_CALL void vgConvolve(VGImage dst, VGImage src,
00550                             VGint kernelWidth, VGint kernelHeight,
00551                             VGint shiftX, VGint shiftY,
00552                             const VGshort * kernel,
00553                             VGfloat scale,
00554                             VGfloat bias,
00555                             VGTilingMode tilingMode);
00556 VG_API_CALL void vgSeparableConvolve(VGImage dst, VGImage src,
00557                                      VGint kernelWidth,
00558                                      VGint kernelHeight,
00559                                      VGint shiftX, VGint shiftY,
00560                                      const VGshort * kernelX,
00561                                      const VGshort * kernelY,
00562                                      VGfloat scale,
00563                                      VGfloat bias,
00564                                      VGTilingMode tilingMode);
00565 VG_API_CALL void vgGaussianBlur(VGImage dst, VGImage src,
00566                                 VGfloat stdDeviationX,
00567                                 VGfloat stdDeviationY,
00568                                 VGTilingMode tilingMode);
00569 VG_API_CALL void vgLookup(VGImage dst, VGImage src,
00570                           const VGubyte * redLUT,
00571                           const VGubyte * greenLUT,
00572                           const VGubyte * blueLUT,
00573                           const VGubyte * alphaLUT,
00574                           VGboolean outputLinear,
00575                           VGboolean outputPremultiplied);
00576 VG_API_CALL void vgLookupSingle(VGImage dst, VGImage src,
00577                                 const VGuint * lookupTable,
00578                                 VGImageChannel sourceChannel,
00579                                 VGboolean outputLinear,
00580                                 VGboolean outputPremultiplied);
00581 
00582 /* Hardware Queries */
00583 VG_API_CALL VGHardwareQueryResult vgHardwareQuery(VGHardwareQueryType key,
00584                                                   VGint setting);
00585 
00586 /* Renderer and Extension Information */
00587 VG_API_CALL const VGubyte * vgGetString(VGStringID name);
00588 
00589 #ifdef __cplusplus
00590 } /* extern "C" */
00591 #endif
00592 
00593 #endif /* _OPENVG_H */

Copyright © Nokia Corporation 2001-2007
Back to top