/* * 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 "include/codec/SkCodec.h" #include "include/core/SkColorSpace.h" #include "include/core/SkImageInfo.h" #include "include/core/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 MakeFromStream(std::unique_ptr, 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; // SkCodec only applies the colorXform if it's necessary for color space // conversion. SkRawCodec will always convert, so tell SkCodec not to. bool usesColorXform() const override { return false; } private: /* * Creates an instance of the decoder * Called only by NewFromStream, takes ownership of dngImage. */ SkRawCodec(SkDngImage* dngImage); std::unique_ptr fDngImage; typedef SkCodec INHERITED; }; #endif