| Index: tools/SkBitmapRegionDecoderInterface.h
|
| diff --git a/tools/SkBitmapRegionDecoderInterface.h b/tools/SkBitmapRegionDecoderInterface.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..bc28c2b2af6f2710c8c2d94ef3a64abb45cbe2c2
|
| --- /dev/null
|
| +++ b/tools/SkBitmapRegionDecoderInterface.h
|
| @@ -0,0 +1,77 @@
|
| +/*
|
| + * Copyright 2015 Google Inc.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license that can be
|
| + * found in the LICENSE file.
|
| + */
|
| +
|
| +#ifndef SkBitmapRegionDecoder_DEFINED
|
| +#define SkBitmapRegionDecoder_DEFINED
|
| +
|
| +#include "SkBitmap.h"
|
| +#include "SkStream.h"
|
| +
|
| +/*
|
| + * This class aims to provide an interface to test multiple implementations of
|
| + * SkBitmapRegionDecoder.
|
| + */
|
| +class SkBitmapRegionDecoderInterface {
|
| +public:
|
| +
|
| + enum Strategy {
|
| + kCanvas_Strategy, // Draw to the canvas, uses SkCodec
|
| + kOriginal_Strategy, // Sampling, uses SkImageDecoder
|
| + // TODO (msarett): Add strategy for SkScaledCodec
|
| + };
|
| +
|
| + /*
|
| + * @param stream Encoded image stream, takes ownership
|
| + * @param strategy Strategy used for scaling and subsetting
|
| + * @return Tries to create an SkBitmapRegionDecoder, returns NULL
|
| + * on failure
|
| + */
|
| + static SkBitmapRegionDecoderInterface* CreateBitmapRegionDecoder(
|
| + SkStreamRewindable* stream, Strategy strategy);
|
| +
|
| + /*
|
| + * Decode a scaled region of the encoded image stream
|
| + *
|
| + * @param start_x X-coordinate of upper-left corner of region.
|
| + * This coordinate is unscaled, relative to the original dimensions.
|
| + * @param start_y Y-coordinate of upper-left corner of region.
|
| + * This coordinate is unscaled, relative to the original dimensions.
|
| + * @param width Width of the region to decode.
|
| + * This distance is unscaled, relative to the original dimensions.
|
| + * @param height Height of the region to decode.
|
| + * This distance is unscaled, relative to the original dimensions.
|
| + * @param sampleSize An integer downscaling factor for the decode.
|
| + * @param colorType Preferred output colorType.
|
| + * New implementations should return NULL if they do not support
|
| + * decoding to this color type.
|
| + * The old kOriginal_Strategy will decode to a default color type
|
| + * if this color type is unsupported.
|
| + * @return Pointer to a bitmap of the decoded region on success, NULL on
|
| + * failure.
|
| + */
|
| + virtual SkBitmap* decodeRegion(int start_x, int start_y, int width,
|
| + int height, int sampleSize,
|
| + SkColorType colorType) = 0;
|
| +
|
| + int width() const { return fWidth; }
|
| + int height() const { return fHeight; }
|
| +
|
| + virtual ~SkBitmapRegionDecoderInterface() {}
|
| +
|
| +protected:
|
| +
|
| + SkBitmapRegionDecoderInterface(int width, int height)
|
| + : fWidth(width)
|
| + , fHeight(height)
|
| + {}
|
| +
|
| +private:
|
| + const int fWidth;
|
| + const int fHeight;
|
| +};
|
| +
|
| +#endif
|
|
|