//----------------------------------------------------------------------------- CGContextRef CGBitmap::createCGContext () { CGContextRef context = 0; if (bits == 0) { allocBits (); if (imageSource) getCGImage (); if (image) { context = createCGContext (); if (context) { CGContextScaleCTM (context, 1, -1); CGContextDrawImage (context, CGRectMake (0, -size.y, size.x, size.y), image); CGContextScaleCTM (context, 1, -1); return context; } } } if (bits) { CGBitmapInfo bitmapInfo = kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Big; context = CGBitmapContextCreate (bits, size.x, size.y, 8, getBytesPerRow (), GetCGColorSpace (), bitmapInfo); CGContextTranslateCTM (context, 0, (CGFloat)size.y); CGContextScaleCTM (context, 1, -1); } return context; }
//----------------------------------------------------------------------------- CGLayerRef CGBitmap::createCGLayer (CGContextRef context) { if (layer && !dirty) return layer; CGImageRef image = getCGImage (); layer = image ? CGLayerCreateWithContext (context, CGSizeMake (size.x, size.y), 0) : 0; if (layer) { CGContextRef layerContext = CGLayerGetContext (layer); CGContextDrawImage (layerContext, CGRectMake (0, 0, size.x, size.y), image); } return layer; }
//----------------------------------------------------------------------------- CGLayerRef CGBitmap::createCGLayer (CGContextRef context) { if (layer && !dirty) return layer; CGImageRef image = getCGImage (); layer = image ? CGLayerCreateWithContext (context, CGSizeFromCPoint (size), 0) : 0; if (layer) { CGContextRef layerContext = CGLayerGetContext (layer); CGContextDrawImage (layerContext, CGRectMake (0, 0, static_cast<CGFloat> (size.x), static_cast<CGFloat> (size.y)), image); } return layer; }