| Index: src/utils/SkBitmapTransformer.cpp
|
| ===================================================================
|
| --- src/utils/SkBitmapTransformer.cpp (revision 8815)
|
| +++ src/utils/SkBitmapTransformer.cpp (working copy)
|
| @@ -1,87 +0,0 @@
|
| -
|
| -/*
|
| - * Copyright 2012 Google Inc.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license that can be
|
| - * found in the LICENSE file.
|
| - */
|
| -
|
| -#include "SkBitmap.h"
|
| -#include "SkBitmapTransformer.h"
|
| -#include "SkColorPriv.h"
|
| -#include "SkTypes.h"
|
| -
|
| -bool SkBitmapTransformer::isValid(bool logReason) const {
|
| - bool retval = true;
|
| -
|
| - switch(fPixelFormat) {
|
| - case kARGB_8888_Premul_PixelFormat:
|
| - break;
|
| - default:
|
| - if (logReason) {
|
| - SkDEBUGF(("PixelFormat %d not supported\n", fPixelFormat));
|
| - }
|
| - retval = false;
|
| - }
|
| -
|
| - SkBitmap::Config bitmapConfig = fBitmap.config();
|
| - switch(bitmapConfig) {
|
| - case SkBitmap::kARGB_8888_Config:
|
| - break;
|
| - default:
|
| - if (logReason) {
|
| - SkDEBUGF(("SkBitmap::Config %d not supported\n", bitmapConfig));
|
| - }
|
| - retval = false;
|
| - }
|
| -
|
| - return retval;
|
| -}
|
| -
|
| -/**
|
| - * Transform from kARGB_8888_Config to kARGB_8888_Premul_PixelFormat.
|
| - *
|
| - * Similar to the various scanline transformers in
|
| - * src/images/transform_scanline.h .
|
| - */
|
| -static void transform_scanline(const char* SK_RESTRICT src, int width,
|
| - char* SK_RESTRICT dst) {
|
| - const SkPMColor* SK_RESTRICT srcP = reinterpret_cast<const SkPMColor*>(src);
|
| - for (int i = 0; i < width; i++) {
|
| - SkPMColor c = *srcP++;
|
| - unsigned a = SkGetPackedA32(c);
|
| - unsigned r = SkGetPackedR32(c);
|
| - unsigned g = SkGetPackedG32(c);
|
| - unsigned b = SkGetPackedB32(c);
|
| - *dst++ = a;
|
| - *dst++ = r;
|
| - *dst++ = g;
|
| - *dst++ = b;
|
| - }
|
| -}
|
| -
|
| -bool SkBitmapTransformer::copyBitmapToPixelBuffer(void *dstBuffer,
|
| - size_t dstBufferSize) const {
|
| - if (!this->isValid(true)) {
|
| - return false;
|
| - }
|
| - size_t bytesNeeded = this->bytesNeededTotal();
|
| - if (dstBufferSize < bytesNeeded) {
|
| - SkDEBUGF(("dstBufferSize %d must be >= %d\n", dstBufferSize, bytesNeeded));
|
| - return false;
|
| - }
|
| -
|
| - fBitmap.lockPixels();
|
| - int width = fBitmap.width();
|
| - size_t srcRowBytes = fBitmap.rowBytes();
|
| - size_t dstRowBytes = this->bytesNeededPerRow();
|
| - const char *srcBytes = const_cast<const char *>(static_cast<char*>(fBitmap.getPixels()));
|
| - char *dstBytes = static_cast<char *>(dstBuffer);
|
| - for (int y = 0; y < fBitmap.height(); y++) {
|
| - transform_scanline(srcBytes, width, dstBytes);
|
| - srcBytes += srcRowBytes;
|
| - dstBytes += dstRowBytes;
|
| - }
|
| - fBitmap.unlockPixels();
|
| - return true;
|
| -}
|
|
|