blob: 67f833261f0ad0c44a6a08f488f5d695cd418a96 [file] [log] [blame]
reed@android.com758b1292008-12-18 17:54:12 +00001#include <Carbon/Carbon.h>
reed@android.com0d55f1e2008-12-18 19:26:11 +00002#include "SkCGUtils.h"
reed@android.com758b1292008-12-18 17:54:12 +00003#include "SkCanvas.h"
4#include "SkPaint.h"
5
reed@android.com758b1292008-12-18 17:54:12 +00006extern "C" void SkiaDraw(CGContextRef cg, CGRect bounds);
7
8static void sampleDraw(SkCanvas* canvas) {
9 canvas->drawColor(0xFF0000FF);
10
11 SkPaint paint;
12 paint.setAntiAlias(true);
13
14 canvas->drawCircle(SkIntToScalar(100), SkIntToScalar(100),
15 SkIntToScalar(90), paint);
16}
17
18static CGImageRef gImage;
19
20void SkiaDraw(CGContextRef cg, CGRect bounds) {
21 if (NULL == gImage) {
22 SkBitmap bitmap;
23 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 640, 480);
24 bitmap.allocPixels();
25
26 SkCanvas canvas(bitmap);
27 sampleDraw(&canvas);
28
29 gImage = SkCreateCGImageRef(bitmap);
30 }
31
reed@android.com2b26cac2008-12-22 02:33:11 +000032 float components[] = { 1, 1, 1, 1 };
33
34 CGColorSpaceRef colorspace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
35 CGColorRef color = CGColorCreate(colorspace, components);
36
reed@android.com758b1292008-12-18 17:54:12 +000037 CGContextSetFillColorWithColor(cg, color);
38 CGColorRelease(color);
reed@android.com2b26cac2008-12-22 02:33:11 +000039 CGColorSpaceRelease(colorspace);
40
reed@android.com758b1292008-12-18 17:54:12 +000041 CGContextFillRect(cg, bounds);
42
43 CGRect r = CGRectMake(0, 0, 640, 480);
44
45 CGContextSaveGState(cg);
46 CGContextTranslateCTM(cg, 0, r.size.height);
47 CGContextScaleCTM(cg, 1, -1);
48
49 CGContextDrawImage(cg, r, gImage);
50
51 CGContextRestoreGState(cg);
52}
53
54