| /* | |
| * Copyright 2011 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #ifndef SkCGUtils_DEFINED | |
| #define SkCGUtils_DEFINED | |
| #include "include/core/SkImage.h" | |
| #include "include/core/SkImageInfo.h" | |
| #include "include/core/SkPixmap.h" | |
| #include "include/core/SkSize.h" | |
| #if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) | |
| #ifdef SK_BUILD_FOR_MAC | |
| #include <ApplicationServices/ApplicationServices.h> | |
| #endif | |
| #ifdef SK_BUILD_FOR_IOS | |
| #include <CoreGraphics/CoreGraphics.h> | |
| #endif | |
| class SkBitmap; | |
| class SkColorSpace; | |
| class SkData; | |
| class SkPixmap; | |
| class SkStreamRewindable; | |
| SK_API CGContextRef SkCreateCGContext(const SkPixmap&); | |
| /** | |
| * Given a CGImage, allocate an SkBitmap and copy the image's pixels into it. If scaleToFit is not | |
| * null, use it to determine the size of the bitmap, and scale the image to fill the bitmap. | |
| * Otherwise use the image's width/height. | |
| * | |
| * On failure, return false, and leave bitmap unchanged. | |
| */ | |
| SK_API bool SkCreateBitmapFromCGImage(SkBitmap* dst, CGImageRef src); | |
| SK_API sk_sp<SkImage> SkMakeImageFromCGImage(CGImageRef); | |
| /** | |
| * Given a CGColorSpace, return the closest matching SkColorSpace. If no conversion is possible | |
| * or if the input CGColorSpace is nullptr then return nullptr. | |
| */ | |
| SK_API sk_sp<SkColorSpace> SkMakeColorSpaceFromCGColorSpace(CGColorSpaceRef); | |
| /** | |
| * Copy the pixels from src into the memory specified by info/rowBytes/dstPixels. On failure, | |
| * return false (e.g. ImageInfo incompatible with src). | |
| */ | |
| SK_API bool SkCopyPixelsFromCGImage(const SkImageInfo& info, size_t rowBytes, void* dstPixels, | |
| CGImageRef src); | |
| static inline bool SkCopyPixelsFromCGImage(const SkPixmap& dst, CGImageRef src) { | |
| return SkCopyPixelsFromCGImage(dst.info(), dst.rowBytes(), dst.writable_addr(), src); | |
| } | |
| /** | |
| * Create an imageref from the specified bitmap. The color space parameter is ignored. | |
| */ | |
| SK_API CGImageRef SkCreateCGImageRefWithColorspace(const SkBitmap& bm, | |
| CGColorSpaceRef space); | |
| /** | |
| * Create an imageref from the specified bitmap. | |
| */ | |
| SK_API CGImageRef SkCreateCGImageRef(const SkBitmap& bm); | |
| /** | |
| * Given an SkColorSpace, create a CGColorSpace. This will return sRGB if the specified | |
| * SkColorSpace is nullptr or on failure. This will not retain the specified SkColorSpace. | |
| */ | |
| SK_API CGColorSpaceRef SkCreateCGColorSpace(const SkColorSpace*); | |
| /** | |
| * Given an SkData, create a CGDataProviderRef that refers to the and retains the specified data. | |
| */ | |
| SK_API CGDataProviderRef SkCreateCGDataProvider(sk_sp<SkData>); | |
| /** | |
| * Draw the bitmap into the specified CG context. (x,y) specifies the position of the top-left | |
| * corner of the bitmap. | |
| */ | |
| void SkCGDrawBitmap(CGContextRef, const SkBitmap&, float x, float y); | |
| #endif // defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) | |
| #endif // SkCGUtils_DEFINED |