diff options
Diffstat (limited to 'platform/ios/common.m')
-rw-r--r-- | platform/ios/common.m | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/platform/ios/common.m b/platform/ios/common.m index 55c1f24c..1ef17c03 100644 --- a/platform/ios/common.m +++ b/platform/ios/common.m @@ -41,3 +41,32 @@ fz_rect search_result_bbox(fz_document *doc, int i) return hit_bbox[i]; } +static void releasePixmap(void *info, const void *data, size_t size) +{ + if (queue) + dispatch_async(queue, ^{ + fz_drop_pixmap(ctx, info); + }); + else + { + fz_drop_pixmap(ctx, info); + } +} + +CGDataProviderRef wrapPixmap(fz_pixmap *pix) +{ + unsigned char *samples = fz_pixmap_samples(ctx, pix); + int w = fz_pixmap_width(ctx, pix); + int h = fz_pixmap_height(ctx, pix); + return CGDataProviderCreateWithData(pix, samples, w * 4 * h, releasePixmap); +} + +CGImageRef newCGImageWithPixmap(fz_pixmap *pix, CGDataProviderRef cgdata) +{ + int w = fz_pixmap_width(ctx, pix); + int h = fz_pixmap_height(ctx, pix); + CGColorSpaceRef cgcolor = CGColorSpaceCreateDeviceRGB(); + CGImageRef cgimage = CGImageCreate(w, h, 8, 32, 4 * w, cgcolor, kCGBitmapByteOrderDefault, cgdata, NULL, NO, kCGRenderingIntentDefault); + CGColorSpaceRelease(cgcolor); + return cgimage; +} |