summaryrefslogtreecommitdiff
path: root/platform/ios/common.m
diff options
context:
space:
mode:
Diffstat (limited to 'platform/ios/common.m')
-rw-r--r--platform/ios/common.m29
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;
+}