Index: gm/gammatext.cpp |
diff --git a/gm/gammatext.cpp b/gm/gammatext.cpp |
index 99642f6e3e13cd4a16eb6820dbfb1b28f0e173c4..7ee55db2fb61677882fe6f7b073ed44eec29905f 100644 |
--- a/gm/gammatext.cpp |
+++ b/gm/gammatext.cpp |
@@ -38,14 +38,14 @@ static bool setFont(SkPaint* paint, const char name[]) { |
#import <ApplicationServices/ApplicationServices.h> |
#define BITMAP_INFO_RGB (kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Host) |
-static CGContextRef makeCG(const SkBitmap& bm) { |
- if (SkBitmap::kARGB_8888_Config != bm.config() || |
- NULL == bm.getPixels()) { |
+static CGContextRef makeCG(const SkImageInfo& info, const void* addr, |
+ size_t rowBytes) { |
+ if (kPMColor_SkColorType != info.colorType() || NULL == addr) { |
return NULL; |
} |
CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB(); |
- CGContextRef cg = CGBitmapContextCreate(bm.getPixels(), bm.width(), bm.height(), |
- 8, bm.rowBytes(), space, BITMAP_INFO_RGB); |
+ CGContextRef cg = CGBitmapContextCreate((void*)addr, info.width(), info.height(), |
+ 8, rowBytes, space, BITMAP_INFO_RGB); |
CFRelease(space); |
CGContextSetAllowsFontSubpixelQuantization(cg, false); |
@@ -143,7 +143,15 @@ protected: |
virtual void onDraw(SkCanvas* canvas) { |
#ifdef SK_BUILD_FOR_MAC |
- CGContextRef cg = makeCG(canvas->getDevice()->accessBitmap(false)); |
+ CGContextRef cg = 0; |
+ { |
+ SkImageInfo info; |
+ size_t rowBytes; |
+ const void* addr = canvas->peekPixels(&info, &rowBytes); |
+ if (addr) { |
+ cg = makeCG(info, addr, rowBytes); |
+ } |
+ } |
#endif |
drawGrad(canvas); |