/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkRawCodec_DEFINED #define SkRawCodec_DEFINED #include "SkCodec.h" #include "SkColorSpace.h" #include "SkImageInfo.h" #include "SkTypes.h" class SkDngImage; class SkStream; /* * * This class implements the decoding for RAW images * */ class SkRawCodec : public SkCodec { public: /* * Creates a RAW decoder * Takes ownership of the stream */ static std::unique_ptr<SkCodec> MakeFromStream(std::unique_ptr<SkStream>, Result*); ~SkRawCodec() override; protected: Result onGetPixels(const SkImageInfo& dstInfo, void* dst, size_t dstRowBytes, const Options&, int*) override; SkEncodedImageFormat onGetEncodedFormat() const override { return SkEncodedImageFormat::kDNG; } SkISize onGetScaledDimensions(float desiredScale) const override; bool onDimensionsSupported(const SkISize&) override; private: /* * Creates an instance of the decoder * Called only by NewFromStream, takes ownership of dngImage. */ SkRawCodec(SkDngImage* dngImage); std::unique_ptr<SkDngImage> fDngImage; typedef SkCodec INHERITED; }; #endif