diff options
author | reed@google.com <reed@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-31 18:15:09 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-31 18:15:09 +0000 |
commit | 6a736e9e6db9c688a1c0ddbb1a56bd9d4785a0ea (patch) | |
tree | 9538533f08a7b8ac719a97791083ab88088177c4 /skia/ext/platform_canvas.cc | |
parent | cb90452a7ce186deb3257ca73ec169d3a91f8f36 (diff) | |
download | chromium_src-6a736e9e6db9c688a1c0ddbb1a56bd9d4785a0ea.zip chromium_src-6a736e9e6db9c688a1c0ddbb1a56bd9d4785a0ea.tar.gz chromium_src-6a736e9e6db9c688a1c0ddbb1a56bd9d4785a0ea.tar.bz2 |
implement MakeOpaque at the canvas level, respecting matrix and clip
Review URL: http://codereview.chromium.org/7799023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99009 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'skia/ext/platform_canvas.cc')
-rw-r--r-- | skia/ext/platform_canvas.cc | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/skia/ext/platform_canvas.cc b/skia/ext/platform_canvas.cc index 279af45..f4510744 100644 --- a/skia/ext/platform_canvas.cc +++ b/skia/ext/platform_canvas.cc @@ -76,10 +76,23 @@ void DrawToNativeContext(SkCanvas* canvas, PlatformSurface context, int x, platform_device->DrawToNativeContext(context, x, y, src_rect); } +static SkPMColor MakeOpaqueXfermodeProc(SkPMColor src, SkPMColor dst) { + return dst | (0xFF << SK_A32_SHIFT); +} + void MakeOpaque(SkCanvas* canvas, int x, int y, int width, int height) { - PlatformDevice* platform_device = GetPlatformDevice(GetTopDevice(*canvas)); - if (platform_device) - platform_device->MakeOpaque(x, y, width, height); + if (width <= 0 || height <= 0) + return; + + SkRect rect; + rect.setXYWH(SkIntToScalar(x), SkIntToScalar(y), + SkIntToScalar(width), SkIntToScalar(height)); + SkPaint paint; + // so we don't draw anything on a device that ignores xfermodes + paint.setColor(0); + // install our custom mode + paint.setXfermode(new SkProcXfermode(MakeOpaqueXfermodeProc))->unref(); + canvas->drawRect(rect, paint); } } // namespace skia |