Revision: 15210
          http://sourceforge.net/p/skim-app/code/15210
Author:   hofman
Date:     2025-05-14 16:30:26 +0000 (Wed, 14 May 2025)
Log Message:
-----------
Draw placeholder thumbnail for snapshot from configuration, generate 
placeholder whenever tthumbnail of snapshot is nil when updating.

Modified Paths:
--------------
    trunk/SKMainWindowController.m
    trunk/SKSnapshotConfiguration.h
    trunk/SKSnapshotConfiguration.m
    trunk/SKSnapshotWindowController.h
    trunk/SKSnapshotWindowController.m

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2025-05-14 15:58:06 UTC (rev 15209)
+++ trunk/SKMainWindowController.m      2025-05-14 16:30:26 UTC (rev 15210)
@@ -2361,8 +2361,6 @@
     if (openType == SKSnapshotOpenPreview)
         return;
     
-    NSImage *image = [controller 
placeholderThumbnailWithSize:snapshotCacheSize scale:[[self window] 
backingScaleFactor]];
-    [controller setThumbnail:image];
     [self snapshotNeedsUpdate:controller lowPriority:openType == 
SKSnapshotOpenFromSetup];
     
     if (openType == SKSnapshotOpenFromSetup) {
@@ -3073,6 +3071,9 @@
     NSDate *date = [NSDate date];
     dispatch_queue_t queue;
     
+    if ([controller thumbnail] == nil)
+        [controller setThumbnail:[configuration 
placeholderThumbnailWithSize:snapshotCacheSize scale:backingScale]];
+    
     if ([rightSideController.snapshotTableView window] == nil || [self 
leftSidePaneIsOpen] == NO)
         queue = [[self class] backgroundThumbnailQueue];
     else if (lowPriority)

Modified: trunk/SKSnapshotConfiguration.h
===================================================================
--- trunk/SKSnapshotConfiguration.h     2025-05-14 15:58:06 UTC (rev 15209)
+++ trunk/SKSnapshotConfiguration.h     2025-05-14 16:30:26 UTC (rev 15210)
@@ -52,6 +52,7 @@
 - (instancetype)initWithPDFView:(PDFView *)pdfView;
 
 - (NSImage *)thumbnailWithSize:(CGFloat)aSize scale:(CGFloat)scale;
+- (NSImage *)placeholderThumbnailWithSize:(CGFloat)aSize scale:(CGFloat)scale;
 - (NSBitmapImageRep *)bitmapImageRepWithSize:(CGFloat)aSize 
scale:(CGFloat)scale;
 
 @end

Modified: trunk/SKSnapshotConfiguration.m
===================================================================
--- trunk/SKSnapshotConfiguration.m     2025-05-14 15:58:06 UTC (rev 15209)
+++ trunk/SKSnapshotConfiguration.m     2025-05-14 16:30:26 UTC (rev 15210)
@@ -65,7 +65,7 @@
     return self;
 }
 
-- (NSBitmapImageRep *)bitmapImageRepWithSize:(CGFloat)aSize 
scale:(CGFloat)scale {
+- (NSBitmapImageRep *)bitmapImageRepWithSize:(CGFloat)aSize 
scale:(CGFloat)scale placeholder:(BOOL)placeholder {
     NSAffineTransform *transform = [NSAffineTransform transform];
     NSSize thumbnailSize = size;
     CGFloat shadowBlurRadius = 0.0;
@@ -94,19 +94,22 @@
         if (shadowBlurRadius > 0.0)
             [NSShadow setShadowWithWhite:0.0 alpha:0.3 
blurRadius:shadowBlurRadius yOffset:shadowOffset];
         NSRectFill((NSRect){NSZeroPoint, size});
-        [[NSGraphicsContext currentContext] 
setImageInterpolation:NSImageInterpolationDefault];
-        [NSGraphicsContext restoreGraphicsState];
-        [[NSBezierPath bezierPathWithRect:(NSRect){NSZeroPoint, size}] 
addClip];
         
-        CGContextRef context = [[NSGraphicsContext currentContext] CGContext];
-        CGContextSetInterpolationQuality(context, interpolationQuality + 1);
-        for (PDFDestination *dest in pages) {
-            NSPoint point = [dest point];
-            CGContextSaveGState(context);
-            CGContextTranslateCTM(context, point.x, point.y);
-            CGContextScaleCTM(context, scaleFactor, scaleFactor);
-            [[dest page] drawWithBox:displayBox toContext:context];
-            CGContextRestoreGState(context);
+        if (placeholder == NO) {
+            [[NSGraphicsContext currentContext] 
setImageInterpolation:NSImageInterpolationDefault];
+            [NSGraphicsContext restoreGraphicsState];
+            [[NSBezierPath bezierPathWithRect:(NSRect){NSZeroPoint, size}] 
addClip];
+            
+            CGContextRef context = [[NSGraphicsContext currentContext] 
CGContext];
+            CGContextSetInterpolationQuality(context, interpolationQuality + 
1);
+            for (PDFDestination *dest in pages) {
+                NSPoint point = [dest point];
+                CGContextSaveGState(context);
+                CGContextTranslateCTM(context, point.x, point.y);
+                CGContextScaleCTM(context, scaleFactor, scaleFactor);
+                [[dest page] drawWithBox:displayBox toContext:context];
+                CGContextRestoreGState(context);
+            }
         }
         
     }];
@@ -114,6 +117,10 @@
     return imageRep;
 }
 
+- (NSBitmapImageRep *)bitmapImageRepWithSize:(CGFloat)aSize 
scale:(CGFloat)scale {
+    return [self bitmapImageRepWithSize:aSize scale:scale placeholder:NO];
+}
+
 - (NSImage *)thumbnailWithSize:(CGFloat)aSize scale:(CGFloat)scale {
     NSBitmapImageRep *imageRep = [self bitmapImageRepWithSize:aSize 
scale:scale];
     NSImage *image = [[NSImage alloc] initWithSize:[imageRep size]];
@@ -121,4 +128,11 @@
     return image;
 }
 
+- (NSImage *)placeholderThumbnailWithSize:(CGFloat)aSize scale:(CGFloat)scale {
+    NSBitmapImageRep *imageRep = [self bitmapImageRepWithSize:aSize 
scale:scale placeholder:YES];
+    NSImage *image = [[NSImage alloc] initWithSize:[imageRep size]];
+    [image addRepresentation:imageRep];
+    return image;
+}
+
 @end

Modified: trunk/SKSnapshotWindowController.h
===================================================================
--- trunk/SKSnapshotWindowController.h  2025-05-14 15:58:06 UTC (rev 15209)
+++ trunk/SKSnapshotWindowController.h  2025-05-14 16:30:26 UTC (rev 15210)
@@ -87,8 +87,6 @@
 
 - (void)updatePageLabel;
 
-- (NSImage *)placeholderThumbnailWithSize:(CGFloat)size scale:(CGFloat)scale;
-
 - (NSAttributedString *)thumbnailAttachmentWithSize:(CGFloat)size;
 
 - (void)miniaturize;

Modified: trunk/SKSnapshotWindowController.m
===================================================================
--- trunk/SKSnapshotWindowController.m  2025-05-14 15:58:06 UTC (rev 15209)
+++ trunk/SKSnapshotWindowController.m  2025-05-14 16:30:26 UTC (rev 15210)
@@ -484,14 +484,6 @@
 
 #pragma mark Thumbnails
 
-- (NSImage *)placeholderThumbnailWithSize:(CGFloat)size scale:(CGFloat)scale {
-    PDFPage *page = [[PDFPage alloc] init];
-    NSRect bounds = [pdfView visibleContentRect];
-    bounds.origin = NSZeroPoint;
-    [page setBounds:bounds forBox:kPDFDisplayBoxMediaBox];
-    return [page thumbnailWithSize:size scale:scale 
forBox:kPDFDisplayBoxMediaBox hasShadow:YES highlights:nil];
-}
-
 - (NSAttributedString *)thumbnailAttachmentWithSize:(CGFloat)size {
     SKSnapshotConfiguration *configuration = [self currentConfiguration];
     NSBitmapImageRep *imageRep1 = [configuration bitmapImageRepWithSize:size 
scale:1.0];

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
Skim-app-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to