diff options
author | msarett <msarett@google.com> | 2015-09-08 15:35:32 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-08 15:35:32 -0700 |
commit | a5783aeff042ccaf517e50dee3660a4925f5f694 (patch) | |
tree | 17144d306e184bd3d6178e863769c5febbd59e22 /dm/DMSrcSink.h | |
parent | 036fd8e6f66b53cf87a5f91083cae82f0aeb3635 (diff) |
Provides various implementations of Android's SkBitmapRegionDecoder.
Implements testing in DM for these implementations.
nanobench testing will follow after this.
TBR=scroggo
BUG=skia:
Committed: https://skia.googlesource.com/skia/+/76f755e6d54a32f9887ad254ce59a3a62f28bde4
Review URL: https://codereview.chromium.org/1288963002
Diffstat (limited to 'dm/DMSrcSink.h')
-rw-r--r-- | dm/DMSrcSink.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/dm/DMSrcSink.h b/dm/DMSrcSink.h index efae87138e..fe6c91dfad 100644 --- a/dm/DMSrcSink.h +++ b/dm/DMSrcSink.h @@ -12,6 +12,7 @@ #include "SkBBHFactory.h" #include "SkBBoxHierarchy.h" #include "SkBitmap.h" +#include "SkBitmapRegionDecoderInterface.h" #include "SkCanvas.h" #include "SkData.h" #include "SkGPipe.h" @@ -128,6 +129,34 @@ private: float fScale; }; +// Allows for testing of various implementations of Android's BitmapRegionDecoder +class BRDSrc : public Src { +public: + enum Mode { + // Decode the entire image as one region. + kFullImage_Mode, + // Splits the image into multiple regions using a divisor and decodes the regions + // separately. Also, this test adds a border of a few pixels to each of the regions + // that it is decoding. This tests the behavior when a client asks for a region that + // does not fully fit in the image. + kDivisor_Mode, + }; + + BRDSrc(Path, SkBitmapRegionDecoderInterface::Strategy, Mode, CodecSrc::DstColorType, uint32_t); + + static float GetScale(uint32_t sampleSize) { return 1.0f / (float) sampleSize; } + + Error draw(SkCanvas*) const override; + SkISize size() const override; + Name name() const override; + bool veto(SinkFlags) const override; +private: + Path fPath; + SkBitmapRegionDecoderInterface::Strategy fStrategy; + Mode fMode; + CodecSrc::DstColorType fDstColorType; + uint32_t fSampleSize; +}; class ImageSrc : public Src { public: |