-skia::RefPtr<SkSurface> ResourceProvider::DirectRasterBuffer::CreateSurface() {
- skia::RefPtr<SkSurface> surface;
- switch (resource()->type) {
- case GLTexture: {
- DCHECK(resource()->gl_id);
- class GrContext* gr_context = resource_provider()->GrContext();
- if (gr_context) {
- GrBackendTextureDesc desc;
- desc.fFlags = kRenderTarget_GrBackendTextureFlag;
- desc.fWidth = resource()->size.width();
- desc.fHeight = resource()->size.height();
- desc.fConfig = ToGrPixelConfig(resource()->format);
- desc.fOrigin = kTopLeft_GrSurfaceOrigin;
- desc.fTextureHandle = resource()->gl_id;
- skia::RefPtr<GrTexture> gr_texture =
- skia::AdoptRef(gr_context->wrapBackendTexture(desc));
- SkSurface::TextRenderMode text_render_mode =
- use_distance_field_text_ ? SkSurface::kDistanceField_TextRenderMode
- : SkSurface::kStandard_TextRenderMode;
- surface = skia::AdoptRef(SkSurface::NewRenderTargetDirect(
- gr_texture->asRenderTarget(), text_render_mode));
- }
- break;
- }
- case Bitmap: {
- DCHECK(resource()->pixels);
- DCHECK_EQ(RGBA_8888, resource()->format);
- SkImageInfo image_info = SkImageInfo::MakeN32Premul(
- resource()->size.width(), resource()->size.height());
- surface = skia::AdoptRef(SkSurface::NewRasterDirect(
- image_info, resource()->pixels, image_info.minRowBytes()));
- break;
- }
- default:
- NOTREACHED();
- }
- return surface;
+skia::RefPtr<SkSurface> ResourceProvider::GpuRasterBuffer::CreateSurface() {
+ DCHECK_EQ(GLTexture, resource()->type);
+ DCHECK(resource()->gl_id);
+
+ class GrContext* gr_context = resource_provider()->GrContext();
+ // TODO(alokp): Implement TestContextProvider::GrContext().
+ if (!gr_context)
+ return skia::RefPtr<SkSurface>();
+
+ GrBackendTextureDesc desc;
+ desc.fFlags = kRenderTarget_GrBackendTextureFlag;
+ desc.fWidth = resource()->size.width();
+ desc.fHeight = resource()->size.height();
+ desc.fConfig = ToGrPixelConfig(resource()->format);
+ desc.fOrigin = kTopLeft_GrSurfaceOrigin;
+ desc.fTextureHandle = resource()->gl_id;
+ skia::RefPtr<GrTexture> gr_texture =
+ skia::AdoptRef(gr_context->wrapBackendTexture(desc));
+ SkSurface::TextRenderMode text_render_mode =
+ use_distance_field_text_ ? SkSurface::kDistanceField_TextRenderMode
+ : SkSurface::kStandard_TextRenderMode;
+ return skia::AdoptRef(SkSurface::NewRenderTargetDirect(
+ gr_texture->asRenderTarget(), text_render_mode));