Home | History | Annotate | Download | only in codec
      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 SkCodec* NewFromStream(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