diff options
author | 2013-12-09 22:01:03 +0000 | |
---|---|---|
committer | 2013-12-09 22:01:03 +0000 | |
commit | 9230ea29718bcf1a92a89a1a518fb896bbbe00cf (patch) | |
tree | 153017a9ac43c57dd65b570beed5ab0ec92a32d1 /src/core/SkBitmap.cpp | |
parent | 331e237890dcc044155b7015be2341134378bb4e (diff) |
make info real in SkPixelRef, and add bitmap::asImageInfo
BUG=
R=scroggo@google.com
Review URL: https://codereview.chromium.org/108663004
git-svn-id: http://skia.googlecode.com/svn/trunk@12586 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkBitmap.cpp')
-rw-r--r-- | src/core/SkBitmap.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/core/SkBitmap.cpp b/src/core/SkBitmap.cpp index 7e204f22d3..25a6b1dba4 100644 --- a/src/core/SkBitmap.cpp +++ b/src/core/SkBitmap.cpp @@ -361,6 +361,48 @@ void SkBitmap::updatePixelsFromRef() const { } } +static bool config_to_colorType(SkBitmap::Config config, SkColorType* ctOut) { + SkColorType ct; + switch (config) { + case SkBitmap::kA8_Config: + ct = kAlpha_8_SkColorType; + break; + case SkBitmap::kIndex8_Config: + ct = kIndex_8_SkColorType; + break; + case SkBitmap::kRGB_565_Config: + ct = kRGB_565_SkColorType; + break; + case SkBitmap::kARGB_4444_Config: + ct = kARGB_4444_SkColorType; + break; + case SkBitmap::kARGB_8888_Config: + ct = kPMColor_SkColorType; + break; + case SkBitmap::kNo_Config: + default: + return false; + } + if (ctOut) { + *ctOut = ct; + } + return true; +} + +bool SkBitmap::asImageInfo(SkImageInfo* info) const { + SkColorType ct; + if (!config_to_colorType(this->config(), &ct)) { + return false; + } + if (info) { + info->fWidth = fWidth; + info->fHeight = fHeight; + info->fAlphaType = this->alphaType(); + info->fColorType = ct; + } + return true; +} + SkPixelRef* SkBitmap::setPixelRef(SkPixelRef* pr, size_t offset) { // do this first, we that we never have a non-zero offset with a null ref if (NULL == pr) { |