From: glenlow Date: Sat, 2 Feb 2008 08:30:51 +0000 (+0000) Subject: quartz plugin goes through gvdevice_write X-Git-Tag: LAST_LIBGRAPH~32^2~4783 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=df4883cec4684662227b7ee74af68b30e26e0754;p=graphviz quartz plugin goes through gvdevice_write --- diff --git a/plugin/quartz/gvrender_quartz.c b/plugin/quartz/gvrender_quartz.c index 7d0d368b8..039ed8c29 100644 --- a/plugin/quartz/gvrender_quartz.c +++ b/plugin/quartz/gvrender_quartz.c @@ -62,35 +62,17 @@ static CFStringRef format_uti [] = { CFSTR("com.truevision.tga-image") }; -static size_t file_data_consumer_put_bytes (void *info, const void *buffer, size_t count) -{ - return fwrite(buffer, 1, count, (FILE*)info); -} +extern size_t gvdevice_write(GVJ_t *job, const unsigned char *s, unsigned int len); -static void file_data_consumer_release_info (void *info) +static size_t device_data_consumer_put_bytes (void *info, const void *buffer, size_t count) { - fflush((FILE*)info); + return gvdevice_write((GVJ_t *)info, (const unsigned char*)buffer, count); } -static CGDataConsumerRef create_data_consumer(char *filename) -{ - static CGDataConsumerCallbacks file_data_consumer_callbacks = { - file_data_consumer_put_bytes, - file_data_consumer_release_info - }; - - CGDataConsumerRef data_consumer; - if (filename) { - /* create a data consumer directly from the file URL */ - CFURLRef file_url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (const UInt8 *)filename, strlen(filename), false); - data_consumer = CGDataConsumerCreateWithURL(file_url); - CFRelease(file_url); - } - else - /* create a data consumer that uses callbacks on a FILE* */ - data_consumer = CGDataConsumerCreate(stdout, &file_data_consumer_callbacks); - return data_consumer; -} +static CGDataConsumerCallbacks device_data_consumer_callbacks = { + device_data_consumer_put_bytes, + NULL +}; static void quartzgen_begin_job(GVJ_t *job) { @@ -112,7 +94,7 @@ static void quartzgen_end_job(GVJ_t *job) default: /* bitmap formats */ { /* create an image destination */ - CGDataConsumerRef data_consumer = create_data_consumer(job->output_filename); + CGDataConsumerRef data_consumer = CGDataConsumerCreate(job, &device_data_consumer_callbacks); CGImageDestinationRef image_destination = CGImageDestinationCreateWithDataConsumer(data_consumer, format_uti[job->device.id], 1, NULL); /* add the bitmap image to the destination and save it */ @@ -163,7 +145,7 @@ static void quartzgen_begin_page(GVJ_t *job) ); /* create a PDF for drawing into */ - CGDataConsumerRef data_consumer = create_data_consumer(job->output_filename); + CGDataConsumerRef data_consumer = CGDataConsumerCreate(job, &device_data_consumer_callbacks); job->context = CGPDFContextCreate(data_consumer, &bounds, auxiliaryInfo); /* clean up */