// Draw a blurred version of the provided path. // Return the right half of the middle row in 'result'. static void cpu_blur_path(const SkPath& path, SkScalar gaussianSigma, int* result, int resultCount) { SkBitmap bitmap; bitmap.allocN32Pixels(resultCount, 30); SkCanvas canvas(bitmap); blur_path(&canvas, path, gaussianSigma); readback(&canvas, result, resultCount); }
// temporary disable; see below for explanation static bool gpu_blur_path(GrContext* context, const SkPath& path, SkScalar gaussianSigma, int* result, int resultCount) { GrSurfaceDesc desc; desc.fConfig = kSkia8888_GrPixelConfig; desc.fFlags = kRenderTarget_GrSurfaceFlag; desc.fWidth = resultCount; desc.fHeight = 30; desc.fSampleCnt = 0; SkAutoTUnref<GrTexture> texture(grContext->createTexture(desc, false, nullptr, 0)); SkAutoTUnref<SkGpuDevice> device(new SkGpuDevice (grContext, texture.get())); SkCanvas canvas(device.get()); blur_path(&canvas, path, gaussianSigma); readback(&canvas, result, resultCount); return true; }
// temporary disable; see below for explanation static bool gpu_blur_path(GrContextFactory* factory, const SkPath& path, SkScalar gaussianSigma, int* result, int resultCount) { GrContext* grContext = factory->get(GrContextFactory::kNative_GLContextType); if (NULL == grContext) { return false; } GrSurfaceDesc desc; desc.fConfig = kSkia8888_GrPixelConfig; desc.fFlags = kRenderTarget_GrSurfaceFlag; desc.fWidth = resultCount; desc.fHeight = 30; desc.fSampleCnt = 0; SkAutoTUnref<GrTexture> texture(grContext->createUncachedTexture(desc, NULL, 0)); SkAutoTUnref<SkGpuDevice> device(SkNEW_ARGS(SkGpuDevice, (grContext, texture.get()))); SkCanvas canvas(device.get()); blur_path(&canvas, path, gaussianSigma); readback(&canvas, result, resultCount); return true; }