#if defined(OPENVG_VERSION_1_1) vgSeti(VG_RENDERING_QUALITY, VG_RENDERING_QUALITY_BETTER); vgSeti(VG_IMAGE_QUALITY, VG_IMAGE_QUALITY_FASTER); vgSeti(VG_SCISSORING, VG_FALSE); col[0] = 0.0f; col[1] = 0.0f; col[2] = 0.0f; col[3] = 0.0f; vgSetfv(VG_CLEAR_COLOR, 4, col); vgClear(0, 0, 256, 256); col[0] = 0.3f; col[1] = 0.3f; col[2] = 0.3f; col[3] = 0.9f; vgSetfv(VG_CLEAR_COLOR, 4, col); // disable alpha mask vgSeti(VG_MASKING, VG_FALSE); // set blend mode and user to surface matrix vgSeti(VG_BLEND_MODE, VG_BLEND_SRC_OVER); // create a path path0 = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_ALL); pathSegs[0] = VG_MOVE_TO_ABS; pathData[0] = -20.0f; pathData[1] = 20.0f; pathSegs[1] = VG_CUBIC_TO_ABS; pathData[2] = -200.0f; pathData[3] = 170.0f; pathData[4] = -200.0f; pathData[5] = -170.0f; pathData[6] = -20.0f; pathData[7] = -20.0f; pathSegs[2] = VG_CUBIC_TO_ABS; pathData[8] = -170.0f; pathData[9] = -200.0f; pathData[10] = 170.0f; pathData[11] = -200.0f; pathData[12] = 20.0f; pathData[13] = -20.0f; pathSegs[3] = VG_CUBIC_TO_ABS; pathData[14] = 200.0f; pathData[15] = -170.0f; pathData[16] = 200.0f; pathData[17] = 170.0f; pathData[18] = 20.0f; pathData[19] = 20.0f; pathSegs[4] = VG_CUBIC_TO_ABS; pathData[20] = 170.0f; pathData[21] = 200.0f; pathData[22] = -170.0f; pathData[23] = 200.0f; pathData[24] = -20.0f; pathData[25] = 20.0f; pathSegs[5] = VG_CLOSE_PATH; vgAppendPathData(path0, 6, pathSegs, pathData); // create image used for pattern, and load external data imgPattern = vgCreateImage(VG_lRGBA_8888_PRE, imgPatternWidth, imgPatternHeight, VG_IMAGE_QUALITY_FASTER); vgImageSubData(imgPattern, (const void *)&imgPatternData[imgPatternWidth * (imgPatternHeight - 1)], -imgPatternDataStride, imgPatternFormat, 0, 0, imgPatternWidth, imgPatternHeight); #define GEN_COLOR_PAINT(_paint) \ vgSetParameteri(_paint, VG_PAINT_TYPE, VG_PAINT_TYPE_COLOR); \ col[0] = 0.35f; col[1] = 0.5f; col[2] = 0.75f; col[3] = 0.8f; \ vgSetParameterfv(_paint, VG_PAINT_COLOR, 4, col); \ vgSetPaint(_paint, VG_FILL_PATH); #define GEN_LINGRAD_PAINT(_paint) \ colStops[0] = 0.00f; colStops[1] = 0.4f; colStops[2] = 0.0f; colStops[3] = 0.6f; colStops[4] = 0.80f; \ colStops[5] = 0.25f; colStops[6] = 0.9f; colStops[7] = 0.5f; colStops[8] = 0.1f; colStops[9] = 0.80f; \ colStops[10] = 0.50f; colStops[11] = 0.8f; colStops[12] = 0.8f; colStops[13] = 0.0f; colStops[14] = 0.80f; \ colStops[15] = 0.75f; colStops[16] = 0.0f; colStops[17] = 0.3f; colStops[18] = 0.5f; colStops[19] = 0.80f; \ colStops[20] = 1.00f; colStops[21] = 0.4f; colStops[22] = 0.0f; colStops[23] = 0.6f; colStops[24] = 0.80f; \ linGrad[0] = -60.0f; linGrad[1] = -20.0f; \ linGrad[2] = 60.0f; linGrad[3] = 20.0f; \ vgSetParameteri(_paint, VG_PAINT_TYPE, VG_PAINT_TYPE_LINEAR_GRADIENT); \ vgSetParameterfv(_paint, VG_PAINT_COLOR_RAMP_STOPS, 25, colStops); \ vgSetParameterfv(_paint, VG_PAINT_LINEAR_GRADIENT, 4, linGrad); \ vgSetParameteri(_paint, VG_PAINT_COLOR_RAMP_SPREAD_MODE, VG_COLOR_RAMP_SPREAD_REPEAT); \ vgSetPaint(_paint, VG_FILL_PATH); #define GEN_RADGRAD_PAINT(_paint) \ colStops[0] = 0.00f; colStops[1] = 0.4f; colStops[2] = 0.0f; colStops[3] = 0.6f; colStops[4] = 0.70f; \ colStops[5] = 0.25f; colStops[6] = 0.9f; colStops[7] = 0.5f; colStops[8] = 0.1f; colStops[9] = 0.70f; \ colStops[10] = 0.50f; colStops[11] = 0.8f; colStops[12] = 0.8f; colStops[13] = 0.0f; colStops[14] = 0.70f; \ colStops[15] = 0.75f; colStops[16] = 0.0f; colStops[17] = 0.3f; colStops[18] = 0.5f; colStops[19] = 0.70f; \ colStops[20] = 1.00f; colStops[21] = 0.4f; colStops[22] = 0.0f; colStops[23] = 0.6f; colStops[24] = 0.70f; \ radGrad[0] = 0.0f; radGrad[1] = 0.0f; \ radGrad[2] = -30.0f; radGrad[3] = -5.0f; \ radGrad[4] = 65.0f; \ vgSetParameteri(_paint, VG_PAINT_TYPE, VG_PAINT_TYPE_RADIAL_GRADIENT); \ vgSetParameterfv(_paint, VG_PAINT_COLOR_RAMP_STOPS, 25, colStops); \ vgSetParameterfv(_paint, VG_PAINT_RADIAL_GRADIENT, 5, radGrad); \ vgSetParameteri(_paint, VG_PAINT_COLOR_RAMP_SPREAD_MODE, VG_COLOR_RAMP_SPREAD_REPEAT); \ vgSetPaint(_paint, VG_FILL_PATH); #define GEN_PATTERN_PAINT(_paint) \ vgSetParameteri(_paint, VG_PAINT_TYPE, VG_PAINT_TYPE_PATTERN); \ vgSetParameteri(_paint, VG_PAINT_PATTERN_TILING_MODE, VG_TILE_REPEAT); \ vgPaintPattern(_paint, imgPattern); \ vgSetPaint(_paint, VG_FILL_PATH); #define DO_COLOR_TRANSFORMATION_ON_PATH(_sr, _sg, _sb, _sa, _br, _bg, _bb, _ba, _fileName, _testDesc) \ vgClear(0, 0, 256, 256); \ vgLoadIdentity(); \ vgTranslate(64.0f, 128.0f); \ vgRotate(45.0f); \ vgScale(0.8f, 0.8f); \ vgSeti(VG_COLOR_TRANSFORM, VG_FALSE); \ vgDrawPath(path0, VG_FILL_PATH); \ vgLoadIdentity(); \ vgTranslate(192.0f, 128.0f); \ vgRotate(45.0f); \ vgScale(0.8f, 0.8f); \ { \ VGfloat ctValues[8] = { _sr, _sg, _sb, _sa, _br, _bg, _bb, _ba }; \ vgSetfv(VG_COLOR_TRANSFORM_VALUES, 8, ctValues); \ } \ vgSeti(VG_COLOR_TRANSFORM, VG_TRUE); \ vgDrawPath(path0, VG_FILL_PATH); \ saveDrawingSurface(f, _fileName, _testDesc, 0, 0, 256, 256); \ eglSwapBuffers(display, surface); #define DO_COLOR_TRANSFORMATION_ON_IMAGE(_sr, _sg, _sb, _sa, _br, _bg, _bb, _ba, _fileName, _testDesc) \ vgClear(0, 0, 256, 256); \ vgLoadIdentity(); \ vgSeti(VG_COLOR_TRANSFORM, VG_FALSE); \ vgDrawImage(img); \ vgLoadIdentity(); \ vgTranslate(128.0f, 0.0f); \ { \ VGfloat ctValues[8] = { _sr, _sg, _sb, _sa, _br, _bg, _bb, _ba }; \ vgSetfv(VG_COLOR_TRANSFORM_VALUES, 8, ctValues); \ } \ vgSeti(VG_COLOR_TRANSFORM, VG_TRUE); \ vgDrawImage(img); \ saveDrawingSurface(f, _fileName, _testDesc, 0, 0, 256, 256); \ eglSwapBuffers(display, surface); for (i = 0; i < 7; ++i) { VGPaint paint = vgCreatePaint(); switch (i) { case 0: GEN_COLOR_PAINT(paint) vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE); DO_COLOR_TRANSFORMATION_ON_PATH(-1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, "color_transform_01.png", "Color inversion (preserving alpha), color paint type.") DO_COLOR_TRANSFORMATION_ON_PATH(0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_02.png", "Half color (preserving alpha), color paint type.") DO_COLOR_TRANSFORMATION_ON_PATH(-1.5f, 1.5f, 1.5f, 1.0f, 2.0f, -1.0f, -0.375f, 0.0f, "color_transform_03.png", "Custom transformation (preserving alpha), color paint type.") DO_COLOR_TRANSFORMATION_ON_PATH(1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_04.png", "50% alpha channel (preserving rgb), color paint type.") break; case 1: GEN_LINGRAD_PAINT(paint) vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE); DO_COLOR_TRANSFORMATION_ON_PATH(-1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, "color_transform_11.png", "Color inversion (preserving alpha), linear gradient paint type.") DO_COLOR_TRANSFORMATION_ON_PATH(0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_12.png", "Half color (preserving alpha), linear gradient paint type.") DO_COLOR_TRANSFORMATION_ON_PATH(-1.5f, 1.5f, 1.5f, 1.0f, 2.0f, -1.0f, -0.375f, 0.0f, "color_transform_13.png", "Custom transformation (preserving alpha), linear gradient paint type.") DO_COLOR_TRANSFORMATION_ON_PATH(1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_14.png", "50% alpha channel (preserving rgb), linear gradient paint type.") break; case 2: GEN_RADGRAD_PAINT(paint) vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE); DO_COLOR_TRANSFORMATION_ON_PATH(-1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, "color_transform_21.png", "Color inversion (preserving alpha), radial gradient paint type.") DO_COLOR_TRANSFORMATION_ON_PATH(0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_22.png", "Half color (preserving alpha), radial gradient paint type.") DO_COLOR_TRANSFORMATION_ON_PATH(-1.5f, 1.5f, 1.5f, 1.0f, 2.0f, -1.0f, -0.375f, 0.0f, "color_transform_23.png", "Custom transformation (preserving alpha), radial gradient paint type.") DO_COLOR_TRANSFORMATION_ON_PATH(1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_24.png", "50% alpha channel (preserving rgb), radial gradient paint type.") break; case 3: GEN_PATTERN_PAINT(paint) vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE); DO_COLOR_TRANSFORMATION_ON_PATH(-1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, "color_transform_31.png", "Color inversion (preserving alpha), pattern paint type.") DO_COLOR_TRANSFORMATION_ON_PATH(0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_32.png", "Half color (preserving alpha), pattern paint type.") DO_COLOR_TRANSFORMATION_ON_PATH(-1.5f, 1.5f, 1.5f, 1.0f, 2.0f, -1.0f, -0.375f, 0.0f, "color_transform_33.png", "Custom transformation (preserving alpha), pattern paint type.") DO_COLOR_TRANSFORMATION_ON_PATH(1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_34.png", "50% alpha channel (preserving rgb), pattern paint type.") break; case 4: vgSeti(VG_IMAGE_MODE, VG_DRAW_IMAGE_NORMAL); #if defined(OPENVG_VERSION_1_1) for (j = VG_sRGBX_8888; j <= VG_A_4; ++j) { #else for (j = VG_sRGBX_8888; j <= VG_BW_1; ++j) { #endif img = vgCreateImage(j, imgGirlAlphaWidth, imgGirlAlphaHeight, VG_IMAGE_QUALITY_NONANTIALIASED); vgImageSubData(img, (const void *)&imgGirlAlphaData[imgGirlAlphaWidth * (imgGirlAlphaHeight - 1)], -imgGirlAlphaDataStride, imgGirlAlphaFormat, 0, 0, imgGirlAlphaWidth, imgGirlAlphaHeight); vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); strcpy(imgFileName, "color_transform_"); strcat(imgFileName, imageFormatToString(j)); strcat(imgFileName, "_41.png"); strcpy(testDesc, "Color inversion (preserving alpha), drawing "); strcat(testDesc, imageFormatToString(j)); strcat(testDesc, " image."); DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, imgFileName, testDesc) strcpy(imgFileName, "color_transform_"); strcat(imgFileName, imageFormatToString(j)); strcat(imgFileName, "_42.png"); strcpy(testDesc, "Half color (preserving alpha), drawing "); strcat(testDesc, imageFormatToString(j)); strcat(testDesc, " image."); DO_COLOR_TRANSFORMATION_ON_IMAGE(0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, imgFileName, testDesc) strcpy(imgFileName, "color_transform_"); strcat(imgFileName, imageFormatToString(j)); strcat(imgFileName, "_43.png"); strcpy(testDesc, "Custom transformation (preserving alpha), drawing "); strcat(testDesc, imageFormatToString(j)); strcat(testDesc, " image."); DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.5f, 1.5f, 1.5f, 1.0f, 2.0f, -1.0f, -0.375f, 0.0f, imgFileName, testDesc) strcpy(imgFileName, "color_transform_"); strcat(imgFileName, imageFormatToString(j)); strcat(imgFileName, "_44.png"); strcpy(testDesc, "50% alpha channel (preserving rgb), drawing "); strcat(testDesc, imageFormatToString(j)); strcat(testDesc, " image."); DO_COLOR_TRANSFORMATION_ON_IMAGE(1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, imgFileName, testDesc) vgDestroyImage(img); } break; case 5: vgSeti(VG_IMAGE_MODE, VG_DRAW_IMAGE_MULTIPLY); img = vgCreateImage(imgMultiplyAlphaFormat, imgMultiplyAlphaWidth, imgMultiplyAlphaHeight, VG_IMAGE_QUALITY_NONANTIALIASED); vgImageSubData(img, (const void *)&imgMultiplyAlphaData[imgMultiplyAlphaWidth * (imgMultiplyAlphaHeight - 1)], -imgMultiplyAlphaDataStride, imgMultiplyAlphaFormat, 0, 0, imgMultiplyAlphaWidth, imgMultiplyAlphaHeight); GEN_COLOR_PAINT(paint) vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, "color_transform_multiply_51.png", "Color inversion (preserving alpha), drawing an image in multiply mode, color paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_52.png", "Half color (preserving alpha), drawing an image in multiply mode, color paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.5f, 1.5f, 1.5f, 1.0f, 2.0f, -1.0f, -0.375f, 0.0f, "color_transform_multiply_53.png", "Custom transformation (preserving alpha), drawing an image in multiply mode, color paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_54.png", "50% alpha channel (preserving rgb), drawing an image in multiply mode, color paint type.") GEN_LINGRAD_PAINT(paint) vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, "color_transform_multiply_55.png", "Color inversion (preserving alpha), drawing an image in multiply mode, linear gradient paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_56.png", "Half color (preserving alpha), drawing an image in multiply mode, linear gradient paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.5f, 1.5f, 1.5f, 1.0f, 2.0f, -1.0f, -0.375f, 0.0f, "color_transform_multiply_57.png", "Custom transformation (preserving alpha), drawing an image in multiply mode, linear gradient paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_58.png", "50% alpha channel (preserving rgb), drawing an image in multiply mode, linear gradient paint type.") GEN_RADGRAD_PAINT(paint) vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, "color_transform_multiply_59.png", "Color inversion (preserving alpha), drawing an image in multiply mode, radial gradient paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_60.png", "Half color (preserving alpha), drawing an image in multiply mode, radial gradient paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.5f, 1.5f, 1.5f, 1.0f, 2.0f, -1.0f, -0.375f, 0.0f, "color_transform_multiply_61.png", "Custom transformation (preserving alpha), drawing an image in multiply mode, radial gradient paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_62.png", "50% alpha channel (preserving rgb), drawing an image in multiply mode, radial gradient paint type.") GEN_PATTERN_PAINT(paint) vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, "color_transform_multiply_63.png", "Color inversion (preserving alpha), drawing an image in multiply mode, pattern paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_64.png", "Half color (preserving alpha), drawing an image in multiply mode, pattern paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.5f, 1.5f, 1.5f, 1.0f, 2.0f, -1.0f, -0.375f, 0.0f, "color_transform_multiply_65.png", "Custom transformation (preserving alpha), drawing an image in multiply mode, pattern paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_66.png", "50% alpha channel (preserving rgb), drawing an image in multiply mode, pattern paint type.") vgDestroyImage(img); break; case 6: vgSeti(VG_IMAGE_MODE, VG_DRAW_IMAGE_STENCIL); img = vgCreateImage(imgMultiplyAlphaFormat, imgMultiplyAlphaWidth, imgMultiplyAlphaHeight, VG_IMAGE_QUALITY_NONANTIALIASED); vgImageSubData(img, (const void *)&imgMultiplyAlphaData[imgMultiplyAlphaWidth * (imgMultiplyAlphaHeight - 1)], -imgMultiplyAlphaDataStride, imgMultiplyAlphaFormat, 0, 0, imgMultiplyAlphaWidth, imgMultiplyAlphaHeight); GEN_COLOR_PAINT(paint) vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, "color_transform_multiply_71.png", "Color inversion (preserving alpha), drawing an image in stencil mode, color paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_72.png", "Half color (preserving alpha), drawing an image in stencil mode, color paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.5f, 1.5f, 1.5f, 1.0f, 2.0f, -1.0f, -0.375f, 0.0f, "color_transform_multiply_73.png", "Custom transformation (preserving alpha), drawing an image in stencil mode, color paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_74.png", "50% alpha channel (preserving rgb), drawing an image in stencil mode, color paint type.") GEN_LINGRAD_PAINT(paint) vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, "color_transform_multiply_75.png", "Color inversion (preserving alpha), drawing an image in stencil mode, linear gradient paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_76.png", "Half color (preserving alpha), drawing an image in stencil mode, linear gradient paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.5f, 1.5f, 1.5f, 1.0f, 2.0f, -1.0f, -0.375f, 0.0f, "color_transform_multiply_77.png", "Custom transformation (preserving alpha), drawing an image in stencil mode, linear gradient paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_78.png", "50% alpha channel (preserving rgb), drawing an image in stencil mode, linear gradient paint type.") GEN_RADGRAD_PAINT(paint) vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, "color_transform_multiply_79.png", "Color inversion (preserving alpha), drawing an image in stencil mode, radial gradient paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_80.png", "Half color (preserving alpha), drawing an image in stencil mode, radial gradient paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.5f, 1.5f, 1.5f, 1.0f, 2.0f, -1.0f, -0.375f, 0.0f, "color_transform_multiply_81.png", "Custom transformation (preserving alpha), drawing an image in stencil mode, radial gradient paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_82.png", "50% alpha channel (preserving rgb), drawing an image in stencil mode, radial gradient paint type.") GEN_PATTERN_PAINT(paint) vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, "color_transform_multiply_83.png", "Color inversion (preserving alpha), drawing an image in stencil mode, pattern paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_84.png", "Half color (preserving alpha), drawing an image in stencil mode, pattern paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(-1.5f, 1.5f, 1.5f, 1.0f, 2.0f, -1.0f, -0.375f, 0.0f, "color_transform_multiply_85.png", "Custom transformation (preserving alpha), drawing an image in stencil mode, pattern paint type.") DO_COLOR_TRANSFORMATION_ON_IMAGE(1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, "color_transform_multiply_86.png", "50% alpha channel (preserving rgb), drawing an image in stencil mode, pattern paint type.") vgDestroyImage(img); break; } vgDestroyPaint(paint); } vgSeti(VG_COLOR_TRANSFORM, VG_FALSE); vgDestroyPath(path0); vgDestroyImage(imgPattern); #undef DO_COLOR_TRANSFORMATION #undef DO_COLOR_TRANSFORMATION_ON_IMAGE #undef GEN_COLOR_PAINT #undef GEN_LINGRAD_PAINT #undef GEN_RADGRAD_PAINT #undef GEN_PATTERN_PAINT #endif