blob: 4f66a826bf37a3c6b23b1ae9a6cbc0ee436a6024 [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);
reed@android.com76aa34b2008-12-23 01:27:39 +000016
17 const char text[] = "fry42";
18 const size_t len = strlen(text);
19
20 paint.setColor(SK_ColorWHITE);
21 paint.setTextSize(SkIntToScalar(50));
22 canvas->drawText(text, len, SkIntToScalar(100), SkIntToScalar(50), paint);
23 paint.setTextAlign(SkPaint::kCenter_Align);
24 canvas->drawText(text, len, SkIntToScalar(100), SkIntToScalar(100), paint);
25 paint.setTextAlign(SkPaint::kRight_Align);
26 canvas->drawText(text, len, SkIntToScalar(100), SkIntToScalar(150), paint);
reed@android.com758b1292008-12-18 17:54:12 +000027}
28
29static CGImageRef gImage;
30
31void SkiaDraw(CGContextRef cg, CGRect bounds) {
32 if (NULL == gImage) {
33 SkBitmap bitmap;
34 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 640, 480);
35 bitmap.allocPixels();
36
37 SkCanvas canvas(bitmap);
38 sampleDraw(&canvas);
39
40 gImage = SkCreateCGImageRef(bitmap);
41 }
42
reed@android.com2b26cac2008-12-22 02:33:11 +000043 float components[] = { 1, 1, 1, 1 };
44
45 CGColorSpaceRef colorspace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
46 CGColorRef color = CGColorCreate(colorspace, components);
47
reed@android.com758b1292008-12-18 17:54:12 +000048 CGContextSetFillColorWithColor(cg, color);
49 CGColorRelease(color);
reed@android.com2b26cac2008-12-22 02:33:11 +000050 CGColorSpaceRelease(colorspace);
51
reed@android.com758b1292008-12-18 17:54:12 +000052 CGContextFillRect(cg, bounds);
53
54 CGRect r = CGRectMake(0, 0, 640, 480);
55
56 CGContextSaveGState(cg);
57 CGContextTranslateCTM(cg, 0, r.size.height);
58 CGContextScaleCTM(cg, 1, -1);
59
60 CGContextDrawImage(cg, r, gImage);
61
62 CGContextRestoreGState(cg);
63}
64
65