1 /* 2 * Copyright 2015 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 SkWebpCodec_DEFINED 9 #define SkWebpCodec_DEFINED 10 11 #include "SkCodec.h" 12 #include "SkEncodedFormat.h" 13 #include "SkImageInfo.h" 14 #include "SkTypes.h" 15 16 class SkStream; 17 18 static const size_t WEBP_VP8_HEADER_SIZE = 30; 19 20 class SkWebpCodec final : public SkCodec { 21 public: 22 // Assumes IsWebp was called and returned true. 23 static SkCodec* NewFromStream(SkStream*); 24 static bool IsWebp(const void*, size_t); 25 protected: 26 Result onGetPixels(const SkImageInfo&, void*, size_t, const Options&, SkPMColor*, int*, int*) 27 override; onGetEncodedFormat()28 SkEncodedFormat onGetEncodedFormat() const override { return kWEBP_SkEncodedFormat; } 29 30 SkISize onGetScaledDimensions(float desiredScale) const override; 31 32 bool onDimensionsSupported(const SkISize&) override; 33 34 bool onGetValidSubset(SkIRect* /* desiredSubset */) const override; 35 private: 36 SkWebpCodec(const SkImageInfo&, SkStream*); 37 38 typedef SkCodec INHERITED; 39 }; 40 #endif // SkWebpCodec_DEFINED 41