// create image and load external data imgSrc = vgCreateImage(VG_lRGBA_8888, imgGirlAlphaWidth, imgGirlAlphaHeight, VG_IMAGE_QUALITY_NONANTIALIASED); vgImageSubData(imgSrc, (const void *)imgGirlAlphaData, imgGirlAlphaDataStride, imgGirlAlphaFormat, 0, 0, imgGirlAlphaWidth, imgGirlAlphaHeight); imgDst = vgCreateImage(VG_lRGBA_8888, imgGirlAlphaWidth, imgGirlAlphaHeight, VG_IMAGE_QUALITY_NONANTIALIASED); // set channel masks and a border color vgSeti(VG_FILTER_CHANNEL_MASK, VG_RED | VG_GREEN | VG_BLUE | VG_ALPHA); col[0] = 0.12f; col[1] = 0.35f; col[2] = 0.75f; col[3] = 1.0f; vgSetfv(VG_TILE_FILL_COLOR, 4, col); vgSeti(VG_FILTER_FORMAT_LINEAR, VG_TRUE); vgSeti(VG_FILTER_FORMAT_PREMULTIPLIED, VG_FALSE); // Gaussian filter with standard deviation(s) 0.5 vgGaussianBlur(imgDst, imgSrc, 0.5f, 0.5f, VG_TILE_REFLECT); vgGetImageSubData(imgDst, imgOutputDataRGBA, imgGirlAlphaDataStride, imgGirlAlphaFormat, 0, 0, imgGirlAlphaWidth, imgGirlAlphaHeight); strcpy(imgFileName, "filter_gaussian_05.png"); saveImage32(f, imgFileName, "Gaussian filter with standard deviation(s) 0.5.", imgGirlAlphaWidth, imgGirlAlphaHeight, imgOutputDataRGBA, 0); // Gaussian filter with standard deviation(s) 1.0 vgGaussianBlur(imgDst, imgSrc, 1.0f, 1.0f, VG_TILE_REFLECT); vgGetImageSubData(imgDst, imgOutputDataRGBA, imgGirlAlphaDataStride, imgGirlAlphaFormat, 0, 0, imgGirlAlphaWidth, imgGirlAlphaHeight); strcpy(imgFileName, "filter_gaussian_10.png"); saveImage32(f, imgFileName, "Gaussian filter with standard deviation(s) 1.0.", imgGirlAlphaWidth, imgGirlAlphaHeight, imgOutputDataRGBA, 0); // Gaussian filter with standard deviation(s) 1.5 vgGaussianBlur(imgDst, imgSrc, 1.5f, 1.5f, VG_TILE_REFLECT); vgGetImageSubData(imgDst, imgOutputDataRGBA, imgGirlAlphaDataStride, imgGirlAlphaFormat, 0, 0, imgGirlAlphaWidth, imgGirlAlphaHeight); strcpy(imgFileName, "filter_gaussian_15.png"); saveImage32(f, imgFileName, "Gaussian filter with standard deviation(s) 1.5.", imgGirlAlphaWidth, imgGirlAlphaHeight, imgOutputDataRGBA, 0); // Gaussian filter with standard deviation(s) 2.0 vgGaussianBlur(imgDst, imgSrc, 2.0f, 2.0f, VG_TILE_REFLECT); vgGetImageSubData(imgDst, imgOutputDataRGBA, imgGirlAlphaDataStride, imgGirlAlphaFormat, 0, 0, imgGirlAlphaWidth, imgGirlAlphaHeight); strcpy(imgFileName, "filter_gaussian_20.png"); saveImage32(f, imgFileName, "Gaussian filter with standard deviation(s) 2.0.", imgGirlAlphaWidth, imgGirlAlphaHeight, imgOutputDataRGBA, 0); // Gaussian filter with standard deviation(s) 4.0 vgGaussianBlur(imgDst, imgSrc, 4.0f, 4.0f, VG_TILE_REFLECT); vgGetImageSubData(imgDst, imgOutputDataRGBA, imgGirlAlphaDataStride, imgGirlAlphaFormat, 0, 0, imgGirlAlphaWidth, imgGirlAlphaHeight); strcpy(imgFileName, "filter_gaussian_40.png"); saveImage32(f, imgFileName, "Gaussian filter with standard deviation(s) 4.0.", imgGirlAlphaWidth, imgGirlAlphaHeight, imgOutputDataRGBA, 0); // Gaussian filter with standard deviation(s) 8.0 vgGaussianBlur(imgDst, imgSrc, 8.0f, 8.0f, VG_TILE_REFLECT); vgGetImageSubData(imgDst, imgOutputDataRGBA, imgGirlAlphaDataStride, imgGirlAlphaFormat, 0, 0, imgGirlAlphaWidth, imgGirlAlphaHeight); strcpy(imgFileName, "filter_gaussian_80.png"); saveImage32(f, imgFileName, "Gaussian filter with standard deviation(s) 8.0.", imgGirlAlphaWidth, imgGirlAlphaHeight, imgOutputDataRGBA, 0); // Gaussian filter with standard deviation(s) 16.0 vgGaussianBlur(imgDst, imgSrc, 16.0f, 16.0f, VG_TILE_REFLECT); vgGetImageSubData(imgDst, imgOutputDataRGBA, imgGirlAlphaDataStride, imgGirlAlphaFormat, 0, 0, imgGirlAlphaWidth, imgGirlAlphaHeight); strcpy(imgFileName, "filter_gaussian_160.png"); saveImage32(f, imgFileName, "Gaussian filter with standard deviation(s) 16.0.", imgGirlAlphaWidth, imgGirlAlphaHeight, imgOutputDataRGBA, 0); vgDestroyImage(imgSrc); vgDestroyImage(imgDst);