Revision: 12114
http://sourceforge.net/p/skim-app/code/12114
Author: hofman
Date: 2021-01-26 17:36:56 +0000 (Tue, 26 Jan 2021)
Log Message:
-----------
Quicklook support for postscript files, by using CGPSConvertor to convert to PDF
Modified Paths:
--------------
trunk/QuickLook-Skim/GeneratePreviewForURL.m
trunk/QuickLook-Skim/GenerateThumbnailForURL.m
trunk/QuickLook-Skim/Info.plist
Modified: trunk/QuickLook-Skim/GeneratePreviewForURL.m
===================================================================
--- trunk/QuickLook-Skim/GeneratePreviewForURL.m 2021-01-24 23:04:47 UTC
(rev 12113)
+++ trunk/QuickLook-Skim/GeneratePreviewForURL.m 2021-01-26 17:36:56 UTC
(rev 12114)
@@ -83,6 +83,25 @@
}
}
+ } else if (UTTypeEqual(CFSTR("com.adobe.postscript"), contentTypeUTI)) {
+
+ bool converted = false;
+ CGPSConverterCallbacks converterCallbacks = { 0, NULL, NULL, NULL,
NULL, NULL, NULL, NULL };
+ CGPSConverterRef converter = CGPSConverterCreate(NULL,
&converterCallbacks, NULL);
+ CGDataProviderRef provider = CGDataProviderCreateWithURL(url);
+ CFMutableDataRef data = CFDataCreateMutable(NULL, 0);
+ CGDataConsumerRef consumer = CGDataConsumerCreateWithCFData(data);
+ if (provider != NULL && consumer != NULL)
+ converted = CGPSConverterConvert(converter, provider, consumer,
NULL);
+ CGDataProviderRelease(provider);
+ CGDataConsumerRelease(consumer);
+ CFRelease(converter);
+ if (converted) {
+ QLPreviewRequestSetDataRepresentation(preview, data, kUTTypePDF,
NULL);
+ err = noErr;
+ }
+ if (data) CFRelease(data);
+
} else if (UTTypeEqual(CFSTR("net.sourceforge.skim-app.skimnotes"),
contentTypeUTI)) {
NSData *data = [[NSData alloc] initWithContentsOfURL:(NSURL *)url
options:NSUncachedRead error:NULL];
Modified: trunk/QuickLook-Skim/GenerateThumbnailForURL.m
===================================================================
--- trunk/QuickLook-Skim/GenerateThumbnailForURL.m 2021-01-24 23:04:47 UTC
(rev 12113)
+++ trunk/QuickLook-Skim/GenerateThumbnailForURL.m 2021-01-26 17:36:56 UTC
(rev 12114)
@@ -164,6 +164,48 @@
CGPDFDocumentRelease(pdfDoc);
}
+ } else if (UTTypeEqual(CFSTR("com.adobe.postscript"), contentTypeUTI)) {
+
+ bool converted = false;
+ CGPSConverterCallbacks converterCallbacks = { 0, NULL, NULL, NULL,
NULL, NULL, NULL, NULL };
+ CGPSConverterRef converter = CGPSConverterCreate(NULL,
&converterCallbacks, NULL);
+ CGDataProviderRef provider = CGDataProviderCreateWithURL(url);
+ CFMutableDataRef pdfData = CFDataCreateMutable(NULL, 0);
+ CGDataConsumerRef consumer = CGDataConsumerCreateWithCFData(pdfData);
+ if (provider != NULL && consumer != NULL)
+ converted = CGPSConverterConvert(converter, provider, consumer,
NULL);
+ CGDataProviderRelease(provider);
+ CGDataConsumerRelease(consumer);
+ CFRelease(converter);
+
+ if (converted) {
+ // sadly, we can't use the system's QL generator from inside
quicklookd, so we don't get the fancy binder on the left edge
+ provider = CGDataProviderCreateWithCFData(pdfData);
+ CGPDFDocumentRef pdfDoc =
CGPDFDocumentCreateWithProvider(provider);
+ CGPDFPageRef pdfPage = NULL;
+ if (pdfDoc && CGPDFDocumentGetNumberOfPages(pdfDoc) > 0)
+ pdfPage = CGPDFDocumentGetPage(pdfDoc, 1);
+
+ if (pdfPage) {
+ CGRect pageRect = CGPDFPageGetBoxRect(pdfPage, kCGPDFCropBox);
+ CGRect thumbRect = {{0.0, 0.0}, {CGRectGetWidth(pageRect),
CGRectGetHeight(pageRect)}};
+ CGFloat color[4] = {1.0, 1.0, 1.0, 1.0};
+ CGContextRef ctxt = QLThumbnailRequestCreateContext(thumbnail,
thumbRect.size, FALSE, NULL);
+ CGAffineTransform t = CGPDFPageGetDrawingTransform(pdfPage,
kCGPDFCropBox, thumbRect, 0, true);
+ CGContextConcatCTM(ctxt, t);
+ CGContextClipToRect(ctxt, pageRect);
+ CGContextSetFillColor(ctxt, color);
+ CGContextFillRect(ctxt, pageRect);
+ CGContextDrawPDFPage(ctxt, pdfPage);
+ QLThumbnailRequestFlushContext(thumbnail, ctxt);
+ CGContextRelease(ctxt);
+ didGenerate = true;
+ }
+ CGPDFDocumentRelease(pdfDoc);
+ CGDataProviderRelease(provider);
+ }
+ if (pdfData) CFRelease(pdfData);
+
} else if (UTTypeEqual(CFSTR("net.sourceforge.skim-app.skimnotes"),
contentTypeUTI)) {
NSData *data = [[NSData alloc] initWithContentsOfURL:(NSURL *)url
options:NSUncachedRead error:NULL];
Modified: trunk/QuickLook-Skim/Info.plist
===================================================================
--- trunk/QuickLook-Skim/Info.plist 2021-01-24 23:04:47 UTC (rev 12113)
+++ trunk/QuickLook-Skim/Info.plist 2021-01-26 17:36:56 UTC (rev 12114)
@@ -13,6 +13,7 @@
<array>
<string>net.sourceforge.skim-app.pdfd</string>
<string>net.sourceforge.skim-app.skimnotes</string>
+ <string>com.adobe.postscript</string>
</array>
</dict>
</array>
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit