| Index: src/utils/SkBitmapTransformer.h
|
| ===================================================================
|
| --- src/utils/SkBitmapTransformer.h (revision 8815)
|
| +++ src/utils/SkBitmapTransformer.h (working copy)
|
| @@ -1,104 +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.
|
| - */
|
| -
|
| -#ifndef SkBitmapTransformer_DEFINED
|
| -#define SkBitmapTransformer_DEFINED
|
| -
|
| -#include "SkBitmap.h"
|
| -
|
| -/**
|
| - * Class that can copy pixel data out of an SkBitmap, transforming it
|
| - * into the appropriate PixelFormat.
|
| - *
|
| - * As noted in https://codereview.appspot.com/6849119/#msg6 and
|
| - * https://codereview.appspot.com/6900047 , at some point we might want
|
| - * to make this more general purpose:
|
| - * - support more PixelFormats
|
| - * - use existing SkCanvas::Config8888 enum instead of new PixelFormat enum
|
| - * - add method to copy pixel data for a single row, instead of the whole bitmap
|
| - * - add methods to copy pixel data INTO an SkBitmap
|
| - *
|
| - * That would allow us to replace SkCopyConfig8888ToBitmap() in
|
| - * src/core/SkConfig8888.h , as well as the transformations used by
|
| - * src/images/SkImageDecoder_libpng.cpp , with this common code.
|
| - *
|
| - * But for now, we want something more narrowly targeted, just
|
| - * supplying what is needed by SkBitmapChecksummer.
|
| - */
|
| -class SkBitmapTransformer {
|
| -public:
|
| - enum PixelFormat {
|
| - // 32 bits per pixel, ARGB byte order, with the alpha-channel
|
| - // value premultiplied into the R/G/B channel values.
|
| - kARGB_8888_Premul_PixelFormat,
|
| -
|
| - // marks the end of the list
|
| - kLast_PixelFormat = kARGB_8888_Premul_PixelFormat,
|
| - };
|
| -
|
| - /**
|
| - * Creates an SkBitmapTransformer instance that can transform between
|
| - * the given bitmap and a pixel buffer with given pixelFormat.
|
| - *
|
| - * Call IsValid() before using, to confirm that this particular
|
| - * bitmap/pixelFormat combination is supported!
|
| - */
|
| - SkBitmapTransformer(const SkBitmap& bitmap, PixelFormat pixelFormat) :
|
| - fBitmap(bitmap), fPixelFormat(pixelFormat) {}
|
| -
|
| - /**
|
| - * Returns true iff we can convert between fBitmap and fPixelFormat.
|
| - * If this returns false, the return values of any other methods will
|
| - * be meaningless!
|
| - *
|
| - * @param logReason whether to log the reason why this combination
|
| - * is unsupported (only applies in debug mode)
|
| - */
|
| - bool isValid(bool logReason=false) const;
|
| -
|
| - /**
|
| - * Returns the number of bytes needed to store a single row of the
|
| - * bitmap's pixels if converted to pixelFormat.
|
| - */
|
| - size_t bytesNeededPerRow() const {
|
| - // This is hard-coded for the single supported PixelFormat.
|
| - return fBitmap.width() * 4;
|
| - }
|
| -
|
| - /**
|
| - * Returns the number of bytes needed to store the entire bitmap
|
| - * if converted to pixelFormat, ASSUMING that it is written
|
| - * out as a single contiguous blob of pixels (no leftover bytes
|
| - * at the end of each row).
|
| - */
|
| - size_t bytesNeededTotal() const {
|
| - return this->bytesNeededPerRow() * fBitmap.height();
|
| - }
|
| -
|
| - /**
|
| - * Writes the entire bitmap into dstBuffer, using the already-specified
|
| - * pixelFormat. Returns true if successful.
|
| - *
|
| - * dstBufferSize is the maximum allowable bytes to write into dstBuffer;
|
| - * if that is not large enough to hold the entire bitmap, then this
|
| - * will fail immediately and return false.
|
| - * We force the caller to pass this in to avoid buffer overruns in
|
| - * unanticipated cases.
|
| - *
|
| - * All pixels for all rows will be written into dstBuffer as a
|
| - * single contiguous blob (no skipped pixels at the end of each
|
| - * row).
|
| - */
|
| - bool copyBitmapToPixelBuffer (void *dstBuffer, size_t dstBufferSize) const;
|
| -
|
| -private:
|
| - const SkBitmap& fBitmap;
|
| - const PixelFormat fPixelFormat;
|
| -};
|
| -
|
| -#endif
|
|
|