Revision: 12658
          http://sourceforge.net/p/skim-app/code/12658
Author:   hofman
Date:     2021-12-28 16:43:52 +0000 (Tue, 28 Dec 2021)
Log Message:
-----------
Temporary tool mode for snapshot

Modified Paths:
--------------
    trunk/NSImage_SKExtensions.h
    trunk/NSImage_SKExtensions.m
    trunk/SKMainToolbarController.m
    trunk/SKPDFView.h
    trunk/SKPDFView.m

Modified: trunk/NSImage_SKExtensions.h
===================================================================
--- trunk/NSImage_SKExtensions.h        2021-12-28 14:58:25 UTC (rev 12657)
+++ trunk/NSImage_SKExtensions.h        2021-12-28 16:43:52 UTC (rev 12658)
@@ -109,6 +109,7 @@
 extern NSString *SKImageNameToolbarMoveTool;
 extern NSString *SKImageNameToolbarMagnifyTool;
 extern NSString *SKImageNameToolbarSelectTool;
+extern NSString *SKImageNameToolbarSnapshotTool;
 extern NSString *SKImageNameToolbarShare;
 extern NSString *SKImageNameToolbarPlay;
 extern NSString *SKImageNameToolbarPause;

Modified: trunk/NSImage_SKExtensions.m
===================================================================
--- trunk/NSImage_SKExtensions.m        2021-12-28 14:58:25 UTC (rev 12657)
+++ trunk/NSImage_SKExtensions.m        2021-12-28 16:43:52 UTC (rev 12658)
@@ -113,6 +113,7 @@
 NSString *SKImageNameToolbarMoveTool = @"ToolbarMoveTool";
 NSString *SKImageNameToolbarMagnifyTool = @"ToolbarMagnifyTool";
 NSString *SKImageNameToolbarSelectTool = @"ToolbarSelectTool";
+NSString *SKImageNameToolbarSnapshotTool = @"ToolbarSnapshotTool";
 NSString *SKImageNameToolbarShare = @"ToolbarShare";
 NSString *SKImageNameToolbarPlay = @"ToolbarPlay";
 NSString *SKImageNameToolbarPause = @"ToolbarPause";
@@ -866,6 +867,21 @@
         [path stroke];
     );
     
+    MAKE_IMAGE(SKImageNameToolbarSnapshotTool, YES, 27.0, 19.0,
+        [[NSColor blackColor] set];
+        NSBezierPath *path = [NSBezierPath bezierPathWithRect:NSMakeRect(6.0, 
4.0, 15.0, 10.0)];
+        [path appendBezierPathWithOvalInRect:NSMakeRect(10.5, 10.0, 6.0, 6.0)];
+        [path fill];
+        [NSGraphicsContext saveGraphicsState];
+        [[NSGraphicsContext currentContext] 
setCompositingOperation:NSCompositeClear];
+        [[NSBezierPath bezierPathWithOvalInRect:NSMakeRect(9.8, 5.8, 7.4, 
7.4)] stroke];
+        path = [NSBezierPath bezierPath];
+        [path appendBezierPathWithArcWithCenter:NSMakePoint(13.5, 9.5) 
radius:1.8 startAngle:45.0 endAngle:225.0];
+        [path closePath];
+        [path fill];
+        [NSGraphicsContext restoreGraphicsState];
+    );
+    
     MAKE_IMAGE(SKImageNameToolbarShare, YES, 27.0, 19.0,
         [[NSColor blackColor] set];
         NSBezierPath *path = [NSBezierPath bezierPath];

Modified: trunk/SKMainToolbarController.m
===================================================================
--- trunk/SKMainToolbarController.m     2021-12-28 14:58:25 UTC (rev 12657)
+++ trunk/SKMainToolbarController.m     2021-12-28 16:43:52 UTC (rev 12658)
@@ -1352,6 +1352,7 @@
     NSString *name = nil;
     switch ([mainController.pdfView temporaryToolMode]) {
         case SKZoomToolMode :      name = SKImageNameToolbarZoomToSelection;  
break;
+        case SKSnapshotToolMode :  name = SKImageNameToolbarSnapshotTool;     
break;
         case SKHighlightToolMode : name = SKImageNameToolbarAddHighlightNote; 
break;
         case SKUnderlineToolMode : name = SKImageNameToolbarAddUnderlineNote; 
break;
         case SKStrikeOutToolMode : name = SKImageNameToolbarAddStrikeOutNote; 
break;

Modified: trunk/SKPDFView.h
===================================================================
--- trunk/SKPDFView.h   2021-12-28 14:58:25 UTC (rev 12657)
+++ trunk/SKPDFView.h   2021-12-28 16:43:52 UTC (rev 12658)
@@ -87,6 +87,7 @@
 typedef NS_ENUM(NSInteger, SKTemporaryToolMode) {
     SKNoToolMode,
     SKZoomToolMode,
+    SKSnapshotToolMode,
     SKHighlightToolMode = SKHighlightNote,
     SKUnderlineToolMode = SKUnderlineNote,
     SKStrikeOutToolMode = SKStrikeOutNote
@@ -99,7 +100,8 @@
     SKResizeDiagonal45Area = 1 << 19,
     SKResizeDiagonal135Area = 1 << 20,
     SKReadingBarArea = 1 << 21,
-    SKSpecialToolArea = 1 << 22
+    SKSpecialToolArea = 1 << 22,
+    SKTemporaryToolArea = 1 << 23
 };
 
 enum {

Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m   2021-12-28 14:58:25 UTC (rev 12657)
+++ trunk/SKPDFView.m   2021-12-28 16:43:52 UTC (rev 12658)
@@ -1768,6 +1768,12 @@
         [self setTemporaryToolMode:SKNoToolMode];
         if (wantsLoupe)
             [self updateMagnifyWithEvent:nil];
+    } else if (temporaryToolMode == SKSnapshotToolMode && (modifiers & 
NSCommandKeyMask) == 0) {
+        BOOL wantsLoupe = [self hideLoupeWindow];
+        [self doSelectSnapshotWithEvent:theEvent];
+        [self setTemporaryToolMode:SKNoToolMode];
+        if (wantsLoupe)
+            [self updateMagnifyWithEvent:nil];
     } else if (temporaryToolMode != SKNoToolMode && (modifiers & 
NSCommandKeyMask) == 0) {
         [self setActiveAnnotation:nil];
         [super mouseDown:theEvent];
@@ -2981,8 +2987,14 @@
         autoFits = YES;
        }
     if (NSIsEmptyRect(rect)) {
+        
+        if ([sender representedObject] == nil) {
+            [self setTemporaryToolMode:SKSnapshotToolMode];
+            return;
+        }
+        
         // the represented object should be the location for the menu event
-        point = [sender representedObject] ? [[sender representedObject] 
pointValue] : [self convertPoint:[[self window] 
mouseLocationOutsideOfEventStream] fromView:nil];
+        point = [[sender representedObject] pointValue];
         page = [self pageForPoint:point nearest:NO];
         if (page == nil) {
             // Get the center
@@ -5238,6 +5250,16 @@
     return [NSCursor arrowCursor];
 }
 
+- (NSCursor *)cursorForTemporaryToolMode {
+    switch (temporaryToolMode) {
+        case SKNoToolMode:       return [NSCursor arrowCursor];
+        case SKZoomToolMode:     return [NSCursor zoomInCursor];
+        case SKSnapshotToolMode: return [NSCursor cameraCursor];
+        default:                 return [self 
cursorForNoteType:(SKNoteType)temporaryToolMode];
+    }
+    return [NSCursor arrowCursor];
+}
+
 - (PDFAreaOfInterest)areaOfInterestForMouse:(NSEvent *)theEvent {
     PDFAreaOfInterest area = [super areaOfInterestForMouse:theEvent];
     NSPoint p = [theEvent locationInWindow];
@@ -5251,7 +5273,7 @@
     } else if ((modifiers == NSCommandKeyMask || modifiers == 
(NSCommandKeyMask | NSShiftKeyMask) || modifiers == (NSCommandKeyMask | 
NSAlternateKeyMask))) {
         area = (area & kPDFPageArea) | SKSpecialToolArea;
     } else if ((modifiers & NSCommandKeyMask) == 0 && temporaryToolMode != 
SKNoToolMode) {
-        area = (area & kPDFPageArea) | SKSpecialToolArea;
+        area = (area & kPDFPageArea) | SKTemporaryToolArea;
     } else {
 
         SKRectEdges resizeHandle = SKNoEdgeMask;
@@ -5308,7 +5330,9 @@
     else if (interactionMode == SKPresentationMode)
         [pdfvFlags.cursorHidden ? [NSCursor emptyCursor] : 
pdfvFlags.useArrowCursorInPresentation ? [NSCursor arrowCursor] : [NSCursor 
laserPointerCursorWithColor:laserPointerColor] set];
     else if ((area & SKSpecialToolArea))
-        [(temporaryToolMode == SKNoToolMode ? [NSCursor arrowCursor] : 
temporaryToolMode == SKZoomToolMode ? [NSCursor zoomInCursor] : [self 
cursorForNoteType:(SKNoteType)temporaryToolMode]) set];
+        [[NSCursor arrowCursor] set];
+    else if ((area & SKTemporaryToolArea))
+        [[self cursorForTemporaryToolMode] set];
     else if ((area & SKDragArea))
         [[NSCursor openHandCursor] set];
     else if ((area & SKResizeUpDownArea))

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