1 /* 2 * Copyright 2016 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SkRawCodec_DEFINED 9 #define SkRawCodec_DEFINED 10 11 #include "SkCodec.h" 12 #include "SkColorSpace.h" 13 #include "SkImageInfo.h" 14 #include "SkTypes.h" 15 16 class SkDngImage; 17 class SkStream; 18 19 /* 20 * 21 * This class implements the decoding for RAW images 22 * 23 */ 24 class SkRawCodec : public SkCodec { 25 public: 26 27 /* 28 * Creates a RAW decoder 29 * Takes ownership of the stream 30 */ 31 static std::unique_ptr<SkCodec> MakeFromStream(std::unique_ptr<SkStream>, Result*); 32 33 ~SkRawCodec() override; 34 35 protected: 36 37 Result onGetPixels(const SkImageInfo& dstInfo, void* dst, size_t dstRowBytes, const Options&, 38 int*) override; 39 40 SkEncodedImageFormat onGetEncodedFormat() const override { 41 return SkEncodedImageFormat::kDNG; 42 } 43 44 SkISize onGetScaledDimensions(float desiredScale) const override; 45 46 bool onDimensionsSupported(const SkISize&) override; 47 48 private: 49 50 /* 51 * Creates an instance of the decoder 52 * Called only by NewFromStream, takes ownership of dngImage. 53 */ 54 SkRawCodec(SkDngImage* dngImage); 55 56 std::unique_ptr<SkDngImage> fDngImage; 57 58 typedef SkCodec INHERITED; 59 }; 60 61 #endif 62