diff options
author | reed@google.com <reed@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-27 04:24:09 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-27 04:24:09 +0000 |
commit | fdf93ecf35b0ad0647ca1ba4d9b4e972e966fe7b (patch) | |
tree | 835944ed7c6e92ea55c2f3cdb2ec379bbad1010f /cc/output/software_renderer.cc | |
parent | 868680fa9e633e2191c3507445f890b5da0e5b38 (diff) | |
download | chromium_src-fdf93ecf35b0ad0647ca1ba4d9b4e972e966fe7b.zip chromium_src-fdf93ecf35b0ad0647ca1ba4d9b4e972e966fe7b.tar.gz chromium_src-fdf93ecf35b0ad0647ca1ba4d9b4e972e966fe7b.tar.bz2 |
don't explicitly create SkDevice, as it is intended to be private. Skia now has ways to create a canvas that completely hide the impl-details of SkDevice and its subclasses (mostly).
BUG=skia:1931
Review URL: https://codereview.chromium.org/137833013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@253714 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/output/software_renderer.cc')
-rw-r--r-- | cc/output/software_renderer.cc | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/cc/output/software_renderer.cc b/cc/output/software_renderer.cc index 3a27388..73d974b 100644 --- a/cc/output/software_renderer.cc +++ b/cc/output/software_renderer.cc @@ -177,8 +177,8 @@ void SoftwareRenderer::EnsureScissorTestDisabled() { // clipRect on the current SkCanvas. This is done by setting clipRect to // the viewport's dimensions. is_scissor_enabled_ = false; - SkBaseDevice* device = current_canvas_->getDevice(); - SetClipRect(gfx::Rect(device->width(), device->height())); + SkISize size = current_canvas_->getDeviceSize(); + SetClipRect(gfx::Rect(size.width(), size.height())); } void SoftwareRenderer::Finish() {} @@ -525,21 +525,17 @@ void SoftwareRenderer::DrawRenderPassQuad(const DrawingFrame* frame, // TODO(ajuma): Apply the filter in the same pass as the content where // possible (e.g. when there's no origin offset). See crbug.com/308201. if (filter) { - bool is_opaque = false; - skia::RefPtr<SkBaseDevice> device = - skia::AdoptRef(new SkBitmapDevice(SkBitmap::kARGB_8888_Config, - content_texture->size().width(), - content_texture->size().height(), - is_opaque)); - SkCanvas canvas(device.get()); - SkPaint paint; - paint.setImageFilter(filter.get()); - canvas.clear(SK_ColorTRANSPARENT); - canvas.translate(SkIntToScalar(-quad->rect.origin().x()), - SkIntToScalar(-quad->rect.origin().y())); - canvas.drawSprite(*content, 0, 0, &paint); - bool will_change_pixels = false; - filter_bitmap = device->accessBitmap(will_change_pixels); + SkImageInfo info = SkImageInfo::MakeN32Premul( + content_texture->size().width(), content_texture->size().height()); + if (filter_bitmap.allocPixels(info)) { + SkCanvas canvas(filter_bitmap); + SkPaint paint; + paint.setImageFilter(filter.get()); + canvas.clear(SK_ColorTRANSPARENT); + canvas.translate(SkIntToScalar(-quad->rect.origin().x()), + SkIntToScalar(-quad->rect.origin().y())); + canvas.drawSprite(*content, 0, 0, &paint); + } } } |