SkShader* SurfaceView::getEraserShader()
{
if (!mpEraserShader)
{
SkSurface *pSurface = ....;
if (pSurface)
{
SkCanvas *pCanvas = pSurface->getCanvas();
if (pCanvas)
{
// Draw stuff...
pCanvas->flush();
}
SkImage *pBackground = pSurface->newImageSnapshot(SkSurface::kNo_Budgeted);
if (pBackground)
{
mpEraserShader = pBackground->newShader(SkShader::TileMode::kClamp_TileMode,
SkShader::TileMode::kClamp_TileMode);
SkSafeUnref(pBackground);
}
delete pSurface;
}
}
return SkSafeRef(mpEraserShader);
}