1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /*
- * 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 SkSampledCodec_DEFINED
- #define SkSampledCodec_DEFINED
- #include "include/codec/SkAndroidCodec.h"
- #include "include/codec/SkCodec.h"
- /**
- * This class implements the functionality of SkAndroidCodec. Scaling will
- * be provided by sampling if it cannot be provided by fCodec.
- */
- class SkSampledCodec : public SkAndroidCodec {
- public:
- explicit SkSampledCodec(SkCodec*, ExifOrientationBehavior);
- ~SkSampledCodec() override {}
- protected:
- SkISize onGetSampledDimensions(int sampleSize) const override;
- bool onGetSupportedSubset(SkIRect* desiredSubset) const override { return true; }
- SkCodec::Result onGetAndroidPixels(const SkImageInfo& info, void* pixels, size_t rowBytes,
- const AndroidOptions& options) override;
- private:
- /**
- * Find the best way to account for native scaling.
- *
- * Return a size that fCodec can scale to, and adjust sampleSize to finish scaling.
- *
- * @param sampleSize As an input, the requested sample size.
- * As an output, sampling needed after letting fCodec
- * scale to the returned dimensions.
- * @param nativeSampleSize Optional output parameter. Will be set to the
- * effective sample size done by fCodec.
- * @return SkISize The size that fCodec should scale to.
- */
- SkISize accountForNativeScaling(int* sampleSize, int* nativeSampleSize = nullptr) const;
- /**
- * This fulfills the same contract as onGetAndroidPixels().
- *
- * We call this function from onGetAndroidPixels() if we have determined
- * that fCodec does not support the requested scale, and we need to
- * provide the scale by sampling.
- */
- SkCodec::Result sampledDecode(const SkImageInfo& info, void* pixels, size_t rowBytes,
- const AndroidOptions& options);
- typedef SkAndroidCodec INHERITED;
- };
- #endif // SkSampledCodec_DEFINED
|