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 #include "SkTypes.h" 9 #if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) 10 11 #include "SkCGUtils.h" 12 #include "SkData.h" 13 #include "SkEncodedOrigin.h" 14 #include "SkImageGenerator.h" 15 #include "SkTemplates.h" 16 17 class SkImageGeneratorCG : public SkImageGenerator { 18 public: 19 #ifdef SK_LEGACY_NEW_FROM_ENCODED_CG 20 /* 21 * Refs the data if an image generator can be returned. Otherwise does 22 * not affect the data. 23 */ 24 static SkImageGenerator* NewFromEncodedCG(SkData* data); 25 #endif 26 27 static std::unique_ptr<SkImageGenerator> MakeFromEncodedCG(sk_sp<SkData>); 28 29 protected: 30 SkData* onRefEncodedData() override; 31 32 bool onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, const Options&) 33 override; 34 35 private: 36 /* 37 * Takes ownership of the imageSrc 38 */ 39 SkImageGeneratorCG(const SkImageInfo& info, const void* imageSrc, sk_sp<SkData> data, 40 SkEncodedOrigin origin); 41 42 SkAutoTCallVProc<const void, CFRelease> fImageSrc; 43 sk_sp<SkData> fData; 44 const SkEncodedOrigin fOrigin; 45 46 typedef SkImageGenerator INHERITED; 47 }; 48 49 #endif //defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) 50