1 2 /* 3 * Copyright 2011 Google Inc. 4 * 5 * Use of this source code is governed by a BSD-style license that can be 6 * found in the LICENSE file. 7 */ 8 #ifndef SkCGUtils_DEFINED 9 #define SkCGUtils_DEFINED 10 11 #include "SkTypes.h" 12 13 #ifdef SK_BUILD_FOR_MAC 14 #include <ApplicationServices/ApplicationServices.h> 15 #endif 16 17 #ifdef SK_BUILD_FOR_IOS 18 #include <CoreGraphics/CoreGraphics.h> 19 #endif 20 21 class SkBitmap; 22 class SkData; 23 class SkStream; 24 25 /** 26 * Create an imageref from the specified bitmap using the specified colorspace. 27 * If space is NULL, then CGColorSpaceCreateDeviceRGB() is used. 28 */ 29 SK_API CGImageRef SkCreateCGImageRefWithColorspace(const SkBitmap& bm, 30 CGColorSpaceRef space); 31 32 /** 33 * Create an imageref from the specified bitmap using the colorspace returned 34 * by CGColorSpaceCreateDeviceRGB() 35 */ 36 static inline CGImageRef SkCreateCGImageRef(const SkBitmap& bm) { 37 return SkCreateCGImageRefWithColorspace(bm, NULL); 38 } 39 40 /** 41 * Draw the bitmap into the specified CG context. The bitmap will be converted 42 * to a CGImage using the generic RGB colorspace. (x,y) specifies the position 43 * of the top-left corner of the bitmap. The bitmap is converted using the 44 * colorspace returned by CGColorSpaceCreateDeviceRGB() 45 */ 46 void SkCGDrawBitmap(CGContextRef, const SkBitmap&, float x, float y); 47 48 bool SkPDFDocumentToBitmap(SkStream* stream, SkBitmap* output); 49 50 /** 51 * Return a provider that wraps the specified stream. It will become an 52 * owner of the stream, so the caller must still manage its ownership. 53 * 54 * To hand-off ownership of the stream to the provider, the caller must do 55 * something like the following: 56 * 57 * SkStream* stream = new ...; 58 * CGDataProviderRef provider = SkStreamToDataProvider(stream); 59 * stream->unref(); 60 * 61 * Now when the provider is finally deleted, it will delete the stream. 62 */ 63 CGDataProviderRef SkCreateDataProviderFromStream(SkStream*); 64 65 CGDataProviderRef SkCreateDataProviderFromData(SkData*); 66 67 #endif 68