• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 SkStream;
23 
24 /**
25  *  Create an imageref from the specified bitmap using the specified colorspace.
26  *  If space is NULL, then CGColorSpaceCreateDeviceRGB() is used.
27  */
28 SK_API CGImageRef SkCreateCGImageRefWithColorspace(const SkBitmap& bm,
29                                                    CGColorSpaceRef space);
30 
31 /**
32  *  Create an imageref from the specified bitmap using the colorspace returned
33  *  by CGColorSpaceCreateDeviceRGB()
34  */
SkCreateCGImageRef(const SkBitmap & bm)35 static inline CGImageRef SkCreateCGImageRef(const SkBitmap& bm) {
36     return SkCreateCGImageRefWithColorspace(bm, NULL);
37 }
38 
39 /**
40  *  Draw the bitmap into the specified CG context. The bitmap will be converted
41  *  to a CGImage using the generic RGB colorspace. (x,y) specifies the position
42  *  of the top-left corner of the bitmap. The bitmap is converted using the
43  *  colorspace returned by CGColorSpaceCreateDeviceRGB()
44  */
45 void SkCGDrawBitmap(CGContextRef, const SkBitmap&, float x, float y);
46 
47 bool SkPDFDocumentToBitmap(SkStream* stream, SkBitmap* output);
48 
49 /**
50  *  Return a provider that wraps the specified stream. It will become an
51  *  owner of the stream, so the caller must still manage its ownership.
52  *
53  *  To hand-off ownership of the stream to the provider, the caller must do
54  *  something like the following:
55  *
56  *  SkStream* stream = new ...;
57  *  CGDataProviderRef provider = SkStreamToDataProvider(stream);
58  *  stream->unref();
59  *
60  *  Now when the provider is finally deleted, it will delete the stream.
61  */
62 CGDataProviderRef SkCreateDataProviderFromStream(SkStream*);
63 
64 #endif
65