diff options
author | msarett <msarett@google.com> | 2015-09-04 13:00:49 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-04 13:00:50 -0700 |
commit | 76f755e6d54a32f9887ad254ce59a3a62f28bde4 (patch) | |
tree | 9fd2954a383da06941f9448c57c8bddb8378e84e /dm/DMSrcSink.h | |
parent | c3470340b6658dea7baa3ac90d3b716c0afd7051 (diff) |
Provides various implementations of Android's SkBitmapRegionDecoder.
Implements testing in DM for these implementations.
nanobench testing will follow after this.
BUG=skia:
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: |