Revision: 16315
          http://sourceforge.net/p/skim-app/code/16315
Author:   hofman
Date:     2026-05-25 17:16:11 +0000 (Mon, 25 May 2026)
Log Message:
-----------
correct thumbnail size for rotated pages. Add some binder to pdfd thumbnails.

Modified Paths:
--------------
    trunk/QuickLook-Skim/GenerateThumbnailForURL.m
    trunk/SkimQuickLookThumbnails/SKThumbnailProvider.m

Modified: trunk/QuickLook-Skim/GenerateThumbnailForURL.m
===================================================================
--- trunk/QuickLook-Skim/GenerateThumbnailForURL.m      2026-05-25 14:38:28 UTC 
(rev 16314)
+++ trunk/QuickLook-Skim/GenerateThumbnailForURL.m      2026-05-25 17:16:11 UTC 
(rev 16315)
@@ -126,6 +126,8 @@
                 if (pdfPage) {
                     CGRect pageRect = CGPDFPageGetBoxRect(pdfPage, 
kCGPDFCropBox);
                     CGRect thumbRect = {{0.0, 0.0}, {CGRectGetWidth(pageRect), 
CGRectGetHeight(pageRect)}};
+                    if ((CGPDFPageGetRotationAngle(pdfPage) % 180))
+                        thumbRect.size = CGSizeMake(CGRectGetHeight(pageRect), 
CGRectGetWidth(pageRect));
                     CGContextRef ctxt = 
QLThumbnailRequestCreateContext(thumbnail, thumbRect.size, FALSE, NULL);
                     CGAffineTransform t = 
CGPDFPageGetDrawingTransform(pdfPage, kCGPDFCropBox, thumbRect, 0, true);
                     CGContextConcatCTM(ctxt, t);
@@ -163,6 +165,8 @@
                     if (pdfPage) {
                         CGRect pageRect = CGPDFPageGetBoxRect(pdfPage, 
kCGPDFCropBox);
                         CGRect thumbRect = {{0.0, 0.0}, 
{CGRectGetWidth(pageRect), CGRectGetHeight(pageRect)}};
+                        if ((CGPDFPageGetRotationAngle(pdfPage) % 180))
+                            thumbRect.size = 
CGSizeMake(CGRectGetHeight(pageRect), CGRectGetWidth(pageRect));
                         CGContextRef ctxt = 
QLThumbnailRequestCreateContext(thumbnail, thumbRect.size, FALSE, NULL);
                         CGAffineTransform t = 
CGPDFPageGetDrawingTransform(pdfPage, kCGPDFCropBox, thumbRect, 0, true);
                         CGContextConcatCTM(ctxt, t);

Modified: trunk/SkimQuickLookThumbnails/SKThumbnailProvider.m
===================================================================
--- trunk/SkimQuickLookThumbnails/SKThumbnailProvider.m 2026-05-25 14:38:28 UTC 
(rev 16314)
+++ trunk/SkimQuickLookThumbnails/SKThumbnailProvider.m 2026-05-25 17:16:11 UTC 
(rev 16315)
@@ -126,10 +126,12 @@
             if (pdfPage) {
                 CGRect pageRect = CGPDFPageGetBoxRect(pdfPage, kCGPDFCropBox);
                 CGSize size = [request maximumSize];
-                if (pageRect.size.height <= size.height)
-                    size = pageRect.size;
-                else
+                if (pageRect.size.height > pageRect.size.width)
                     size.width = round(size.height * pageRect.size.width / 
pageRect.size.height);
+                else if (pageRect.size.height < pageRect.size.width)
+                    size.height = round(size.width * pageRect.size.height / 
pageRect.size.width);
+                if ((CGPDFPageGetRotationAngle(pdfPage) % 180))
+                    size = CGSizeMake(size.height, size.width);
                 
                 handler([QLThumbnailReply replyWithContextSize:size 
drawingBlock:^BOOL(CGContextRef context) {
             
@@ -139,6 +141,12 @@
                     CGContextClipToRect(context, pageRect);
                     CGContextDrawPDFPage(context, pdfPage);
                     
+                    CGRect binderRect, ignored;
+                    CGRectDivide(thumbRect, &binderRect, &ignored, 14, 
CGRectMinXEdge);
+                    binderRect = CGRectApplyAffineTransform(binderRect, 
CGAffineTransformInvert(t));
+                    CGContextSetGrayFillColor(context, 0, 0.7);
+                    CGContextFillRect(context, binderRect);
+                    
                     CGPDFDocumentRelease(pdfDoc);
                     
                     // Return YES if the thumbnail was successfully drawn 
inside this block.
@@ -207,10 +215,12 @@
                     if (pdfPage) {
                         CGRect pageRect = CGPDFPageGetBoxRect(pdfPage, 
kCGPDFCropBox);
                         CGSize size = [request maximumSize];
-                        if (pageRect.size.height <= size.height)
-                            size = pageRect.size;
-                        else
+                        if (pageRect.size.height > pageRect.size.width)
                             size.width = round(size.height * 
pageRect.size.width / pageRect.size.height);
+                        else if (pageRect.size.height < pageRect.size.width)
+                            size.height = round(size.width * 
pageRect.size.height / pageRect.size.width);
+                        if ((CGPDFPageGetRotationAngle(pdfPage) % 180))
+                            size = CGSizeMake(size.height, size.width);
                         
                         handler([QLThumbnailReply replyWithContextSize:size 
drawingBlock:^BOOL(CGContextRef context) {
                             
@@ -220,6 +230,12 @@
                             CGContextClipToRect(context, pageRect);
                             CGContextDrawPDFPage(context, pdfPage);
                             
+                            CGRect binderRect, ignored;
+                            CGRectDivide(thumbRect, &binderRect, &ignored, 14, 
CGRectMinXEdge);
+                            binderRect = 
CGRectApplyAffineTransform(binderRect, CGAffineTransformInvert(t));
+                            CGContextSetGrayFillColor(context, 0, 0.7);
+                            CGContextFillRect(context, binderRect);
+                            
                             CGPDFDocumentRelease(pdfDoc);
                             
                             // Return YES if the thumbnail was successfully 
drawn inside this block.

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

Reply via email to