|  | /* | 
|  | * Copyright 2017 Google Inc. | 
|  | * | 
|  | * Use of this source code is governed by a BSD-style license that can be | 
|  | * found in the LICENSE file. | 
|  | */ | 
|  |  | 
|  | #ifndef SkStubHeifDecoderAPI_DEFINED | 
|  | #define SkStubHeifDecoderAPI_DEFINED | 
|  |  | 
|  | // This stub implementation of HeifDecoderAPI.h lets us compile SkHeifCodec.cpp | 
|  | // even when libheif is not available.  It, of course, does nothing and fails to decode. | 
|  |  | 
|  | #include <memory> | 
|  | #include <stddef.h> | 
|  | #include <stdint.h> | 
|  |  | 
|  | enum HeifColorFormat { | 
|  | kHeifColorFormat_RGB565, | 
|  | kHeifColorFormat_RGBA_8888, | 
|  | kHeifColorFormat_BGRA_8888, | 
|  | }; | 
|  |  | 
|  | struct HeifStream { | 
|  | virtual ~HeifStream() {} | 
|  |  | 
|  | virtual size_t read(void*, size_t) = 0; | 
|  | virtual bool   rewind()            = 0; | 
|  | virtual bool   seek(size_t)        = 0; | 
|  | virtual bool   hasLength() const   = 0; | 
|  | virtual size_t getLength() const   = 0; | 
|  | }; | 
|  |  | 
|  | struct HeifFrameInfo { | 
|  | int mRotationAngle; | 
|  | int mWidth; | 
|  | int mHeight; | 
|  | int mBytesPerPixel; | 
|  |  | 
|  | size_t                  mIccSize; | 
|  | std::unique_ptr<char[]> mIccData; | 
|  | }; | 
|  |  | 
|  | struct HeifDecoder { | 
|  | bool init(HeifStream* stream, HeifFrameInfo*) { | 
|  | delete stream; | 
|  | return false; | 
|  | } | 
|  |  | 
|  | bool decode(HeifFrameInfo*) { | 
|  | return false; | 
|  | } | 
|  |  | 
|  | bool setOutputColor(HeifColorFormat) { | 
|  | return false; | 
|  | } | 
|  |  | 
|  | bool getScanline(uint8_t*) { | 
|  | return false; | 
|  | } | 
|  |  | 
|  | int skipScanlines(int) { | 
|  | return 0; | 
|  | } | 
|  | }; | 
|  |  | 
|  | static inline HeifDecoder* createHeifDecoder() { return new HeifDecoder; } | 
|  |  | 
|  | #endif//SkStubHeifDecoderAPI_DEFINED |