diff options
Diffstat (limited to '')
-rw-r--r-- | gfx/skia/skia/src/codec/SkRawCodec.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/gfx/skia/skia/src/codec/SkRawCodec.h b/gfx/skia/skia/src/codec/SkRawCodec.h new file mode 100644 index 0000000000..d1c5131afa --- /dev/null +++ b/gfx/skia/skia/src/codec/SkRawCodec.h @@ -0,0 +1,65 @@ +/* + * 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<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; + + // 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<SkDngImage> fDngImage; + + typedef SkCodec INHERITED; +}; + +#endif |