• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
onGetEncodedFormat()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