|  | /* | 
|  | * 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 |