diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-03-07 03:25:16 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-03-07 03:25:16 +0000 |
commit | 4cd9e2169e35cd67ee7358acea6541245e1d1744 (patch) | |
tree | 6e78d84ef91181b41f5c45a73bab003c63780f10 /tools | |
parent | a5572e5bb2a2bbeeb59de0741c2527869d365a0c (diff) |
Add SkCanvas::writePixels that takes info+pixels directly
add corresponding methods to device (w/ diff name to avoid colliding with exising virtuals)
BUG=skia:
R=bsalomon@google.com, robertphillips@google.com, junov@google.com, junov@chromium.org
Author: reed@google.com
Review URL: https://codereview.chromium.org/180113010
git-svn-id: http://skia.googlecode.com/svn/trunk@13697 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tools')
-rw-r--r-- | tools/sk_tool_utils.cpp | 48 | ||||
-rw-r--r-- | tools/sk_tool_utils.h | 28 |
2 files changed, 76 insertions, 0 deletions
diff --git a/tools/sk_tool_utils.cpp b/tools/sk_tool_utils.cpp new file mode 100644 index 0000000000..f5b8b9f93d --- /dev/null +++ b/tools/sk_tool_utils.cpp @@ -0,0 +1,48 @@ +#include "sk_tool_utils.h" + +namespace sk_tool_utils { + +void config8888_to_imagetypes(SkCanvas::Config8888 config, SkColorType* ct, SkAlphaType* at) { + switch (config) { + case SkCanvas::kNative_Premul_Config8888: + *ct = kPMColor_SkColorType; + *at = kPremul_SkAlphaType; + break; + case SkCanvas::kNative_Unpremul_Config8888: + *ct = kPMColor_SkColorType; + *at = kUnpremul_SkAlphaType; + break; + case SkCanvas::kBGRA_Premul_Config8888: + *ct = kBGRA_8888_SkColorType; + *at = kPremul_SkAlphaType; + break; + case SkCanvas::kBGRA_Unpremul_Config8888: + *ct = kBGRA_8888_SkColorType; + *at = kUnpremul_SkAlphaType; + break; + case SkCanvas::kRGBA_Premul_Config8888: + *ct = kRGBA_8888_SkColorType; + *at = kPremul_SkAlphaType; + break; + case SkCanvas::kRGBA_Unpremul_Config8888: + *ct = kRGBA_8888_SkColorType; + *at = kUnpremul_SkAlphaType; + break; + default: + SkASSERT(0); + } +} + +void write_pixels(SkCanvas* canvas, const SkBitmap& bitmap, int x, int y, + SkColorType colorType, SkAlphaType alphaType) { + SkBitmap tmp(bitmap); + tmp.lockPixels(); + + SkImageInfo info = tmp.info(); + info.fColorType = colorType; + info.fAlphaType = alphaType; + + canvas->writePixels(info, tmp.getPixels(), tmp.rowBytes(), x, y); +} + +} diff --git a/tools/sk_tool_utils.h b/tools/sk_tool_utils.h new file mode 100644 index 0000000000..7747a12096 --- /dev/null +++ b/tools/sk_tool_utils.h @@ -0,0 +1,28 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef sk_tool_utils_DEFINED +#define sk_tool_utils_DEFINED + +#include "SkCanvas.h" +#include "SkBitmap.h" + +namespace sk_tool_utils { + + /** + * Return the colorType and alphaType that correspond to the specified Config8888 + */ + void config8888_to_imagetypes(SkCanvas::Config8888, SkColorType*, SkAlphaType*); + + /** + * Call canvas->writePixels() by using the pixels from bitmap, but with an info that claims + * the pixels are colorType + alphaType + */ + void write_pixels(SkCanvas*, const SkBitmap&, int x, int y, SkColorType, SkAlphaType); +} + +#endif |