Revision: 26285
          http://sourceforge.net/p/bibdesk/svn/26285
Author:   hofman
Date:     2021-06-23 14:18:04 +0000 (Wed, 23 Jun 2021)
Log Message:
-----------
Use pdf images for bookmark toolbar, they can be upsized.

Modified Paths:
--------------
    trunk/bibdesk/NSImage_BDSKExtensions.m

Modified: trunk/bibdesk/NSImage_BDSKExtensions.m
===================================================================
--- trunk/bibdesk/NSImage_BDSKExtensions.m      2021-06-23 14:07:25 UTC (rev 
26284)
+++ trunk/bibdesk/NSImage_BDSKExtensions.m      2021-06-23 14:18:04 UTC (rev 
26285)
@@ -115,6 +115,25 @@
     }
 }
 
+- (id)initPDFWithSize:(NSSize)size drawingHandler:(void 
(^)(void))drawingHandler {
+    CFMutableDataRef pdfData = CFDataCreateMutable(NULL, 0);
+    CGDataConsumerRef consumer = CGDataConsumerCreateWithCFData(pdfData);
+    CGRect rect = CGRectMake(0.0, 0.0, size.width, size.height);
+    CGContextRef context = CGPDFContextCreate(consumer, &rect, NULL);
+    CGDataConsumerRelease(consumer);
+    CGPDFContextBeginPage(context, NULL);
+    [NSGraphicsContext saveGraphicsState];
+    [NSGraphicsContext setCurrentContext:[NSGraphicsContext 
graphicsContextWithCGContext:context flipped:NO]];
+    if (drawingHandler) drawingHandler();
+    [NSGraphicsContext restoreGraphicsState];
+    CGPDFContextEndPage(context);
+    CGPDFContextClose(context);
+    CGContextRelease(context);
+    self = [self initWithData:(NSData *)pdfData];
+    CFRelease(pdfData);
+    return self;
+}
+
 + (void)makeBookmarkImages {
     static NSImage *separatorImage = nil;
     static NSImage *addBookmarkToolbarImage = nil;
@@ -132,147 +151,132 @@
         [separatorImage unlockFocus];
         [separatorImage setName:BDSKImageNameSeparator];
         
-        addBookmarkToolbarImage = [[NSImage alloc] 
initWithSize:NSMakeSize(19.0, 17.0)];
-        [addBookmarkToolbarImage lockFocus];
-        [NSGraphicsContext saveGraphicsState];
-        [[NSColor clearColor] setFill];
-        NSRectFill(NSMakeRect(0.0, 0.0, 19.0, 17.0));
-        NSBezierPath *path = [NSBezierPath bezierPath];
-        [path moveToPoint:NSMakePoint(15.25, 15.5)];
-        [path lineToPoint:NSMakePoint(15.25, 8.0)];
-        [path moveToPoint:NSMakePoint(11.5, 11.75)];
-        [path lineToPoint:NSMakePoint(19.0, 11.75)];
-        [path setLineWidth:1.5];
-        [path stroke];
-        path = [NSBezierPath bezierPath];
-        [path moveToPoint:NSMakePoint(0.0, 17.0)];
-        [path lineToPoint:NSMakePoint(13.5, 17.0)];
-        [path lineToPoint:NSMakePoint(13.5, 13.5)];
-        [path lineToPoint:NSMakePoint(10.5, 13.5)];
-        [path lineToPoint:NSMakePoint(10.5, 10.0)];
-        [path lineToPoint:NSMakePoint(13.5, 10.0)];
-        [path lineToPoint:NSMakePoint(13.5, 7.0)];
-        [path lineToPoint:NSMakePoint(19.0, 7.0)];
-        [path lineToPoint:NSMakePoint(19.0, 0.0)];
-        [path lineToPoint:NSMakePoint(0.0, 0.0)];
-        [path closePath];
-        [path addClip];
-        path = [NSBezierPath bezierPathWithOvalInRect:NSMakeRect(2.5, 1.5, 
14.0, 14.0)];
-        [path appendBezierPathWithOvalInRect:NSMakeRect(6.5, 1.5, 6.0, 14.0)];
-        [path moveToPoint:NSMakePoint(1.5, 8.5)];
-        [path lineToPoint:NSMakePoint(15.5, 8.5)];
-        [path moveToPoint:NSMakePoint(4.5, 13.5)];
-        [path curveToPoint:NSMakePoint(9.5, 12.0) 
controlPoint1:NSMakePoint(7.5, 12.0) controlPoint2:NSMakePoint(6.5, 12.0)];
-        [path curveToPoint:NSMakePoint(14.5, 13.5) 
controlPoint1:NSMakePoint(12.5, 12.0) controlPoint2:NSMakePoint(11.5, 12.0)];
-        [path moveToPoint:NSMakePoint(4.5, 3.5)];
-        [path curveToPoint:NSMakePoint(9.5, 5.0) 
controlPoint1:NSMakePoint(7.5, 5.0) controlPoint2:NSMakePoint(6.5, 5.0)];
-        [path curveToPoint:NSMakePoint(14.5, 3.5) 
controlPoint1:NSMakePoint(12.5, 5.0) controlPoint2:NSMakePoint(11.5, 5.0)];
-        [path stroke];
-        [NSGraphicsContext restoreGraphicsState];
-        [addBookmarkToolbarImage unlockFocus];
+        addBookmarkToolbarImage = [[NSImage alloc] 
initPDFWithSize:NSMakeSize(19.0, 17.0) drawingHandler:^{
+            [[NSColor clearColor] setFill];
+            NSRectFill(NSMakeRect(0.0, 0.0, 19.0, 17.0));
+            NSBezierPath *path = [NSBezierPath bezierPath];
+            [path moveToPoint:NSMakePoint(15.25, 15.5)];
+            [path lineToPoint:NSMakePoint(15.25, 8.0)];
+            [path moveToPoint:NSMakePoint(11.5, 11.75)];
+            [path lineToPoint:NSMakePoint(19.0, 11.75)];
+            [path setLineWidth:1.5];
+            [path stroke];
+            path = [NSBezierPath bezierPath];
+            [path moveToPoint:NSMakePoint(0.0, 17.0)];
+            [path lineToPoint:NSMakePoint(13.5, 17.0)];
+            [path lineToPoint:NSMakePoint(13.5, 13.5)];
+            [path lineToPoint:NSMakePoint(10.5, 13.5)];
+            [path lineToPoint:NSMakePoint(10.5, 10.0)];
+            [path lineToPoint:NSMakePoint(13.5, 10.0)];
+            [path lineToPoint:NSMakePoint(13.5, 7.0)];
+            [path lineToPoint:NSMakePoint(19.0, 7.0)];
+            [path lineToPoint:NSMakePoint(19.0, 0.0)];
+            [path lineToPoint:NSMakePoint(0.0, 0.0)];
+            [path closePath];
+            [path addClip];
+            path = [NSBezierPath bezierPathWithOvalInRect:NSMakeRect(2.5, 1.5, 
14.0, 14.0)];
+            [path appendBezierPathWithOvalInRect:NSMakeRect(6.5, 1.5, 6.0, 
14.0)];
+            [path moveToPoint:NSMakePoint(1.5, 8.5)];
+            [path lineToPoint:NSMakePoint(15.5, 8.5)];
+            [path moveToPoint:NSMakePoint(4.5, 13.5)];
+            [path curveToPoint:NSMakePoint(9.5, 12.0) 
controlPoint1:NSMakePoint(7.5, 12.0) controlPoint2:NSMakePoint(6.5, 12.0)];
+            [path curveToPoint:NSMakePoint(14.5, 13.5) 
controlPoint1:NSMakePoint(12.5, 12.0) controlPoint2:NSMakePoint(11.5, 12.0)];
+            [path moveToPoint:NSMakePoint(4.5, 3.5)];
+            [path curveToPoint:NSMakePoint(9.5, 5.0) 
controlPoint1:NSMakePoint(7.5, 5.0) controlPoint2:NSMakePoint(6.5, 5.0)];
+            [path curveToPoint:NSMakePoint(14.5, 3.5) 
controlPoint1:NSMakePoint(12.5, 5.0) controlPoint2:NSMakePoint(11.5, 5.0)];
+            [path stroke];
+        }];
         [addBookmarkToolbarImage setTemplate:YES];
         [addBookmarkToolbarImage setName:BDSKImageNameToolbarAddBookmark];
         
-        addFolderToolbarImage = [[NSImage alloc] initWithSize:NSMakeSize(19.0, 
17.0)];
-        [addFolderToolbarImage lockFocus];
-        [NSGraphicsContext saveGraphicsState];
-        [[NSColor clearColor] setFill];
-        NSRectFill(NSMakeRect(0.0, 0.0, 19.0, 17.0));
-        path = [NSBezierPath bezierPath];
-        [path moveToPoint:NSMakePoint(10.5, 12.0)];
-        [path appendBezierPathWithArcFromPoint:NSMakePoint(6.8, 12.0) 
toPoint:NSMakePoint(5.7, 13.1) radius:1.2];
-        [path appendBezierPathWithArcFromPoint:NSMakePoint(5.7, 13.1) 
toPoint:NSMakePoint(2.0, 13.1) radius:1.2];
-        [path appendBezierPathWithArcFromPoint:NSMakePoint(2.0, 13.1) 
toPoint:NSMakePoint(2.0, 11) radius:1.2];
-        [path appendBezierPathWithArcFromPoint:NSMakePoint(2.0, 2.5) 
toPoint:NSMakePoint(15.3, 2.5) radius:1.2];
-        [path appendBezierPathWithArcFromPoint:NSMakePoint(15.4, 2.5) 
toPoint:NSMakePoint(15.4, 12.0) radius:1.2];
-        [path lineToPoint:NSMakePoint(15.4, 7.0)];
-        [path stroke];
-        path = [NSBezierPath bezierPath];
-        [path moveToPoint:NSMakePoint(2.0, 9.6)];
-        [path lineToPoint:NSMakePoint(13.5, 9.6)];
-        [path stroke];
-        path = [NSBezierPath bezierPath];
-        [path moveToPoint:NSMakePoint(15.25, 15.5)];
-        [path lineToPoint:NSMakePoint(15.25, 8.0)];
-        [path moveToPoint:NSMakePoint(11.5, 11.75)];
-        [path lineToPoint:NSMakePoint(19.0, 11.75)];
-        [path setLineWidth:1.5];
-        [path stroke];
-        [NSGraphicsContext restoreGraphicsState];
-        [addFolderToolbarImage unlockFocus];
+        addFolderToolbarImage = [[NSImage alloc] 
initPDFWithSize:NSMakeSize(19.0, 17.0) drawingHandler:^{
+            [[NSColor clearColor] setFill];
+            NSRectFill(NSMakeRect(0.0, 0.0, 19.0, 17.0));
+            NSBezierPath *path = [NSBezierPath bezierPath];
+            [path moveToPoint:NSMakePoint(10.5, 12.0)];
+            [path appendBezierPathWithArcFromPoint:NSMakePoint(6.8, 12.0) 
toPoint:NSMakePoint(5.7, 13.1) radius:1.2];
+            [path appendBezierPathWithArcFromPoint:NSMakePoint(5.7, 13.1) 
toPoint:NSMakePoint(2.0, 13.1) radius:1.2];
+            [path appendBezierPathWithArcFromPoint:NSMakePoint(2.0, 13.1) 
toPoint:NSMakePoint(2.0, 11) radius:1.2];
+            [path appendBezierPathWithArcFromPoint:NSMakePoint(2.0, 2.5) 
toPoint:NSMakePoint(15.3, 2.5) radius:1.2];
+            [path appendBezierPathWithArcFromPoint:NSMakePoint(15.4, 2.5) 
toPoint:NSMakePoint(15.4, 12.0) radius:1.2];
+            [path lineToPoint:NSMakePoint(15.4, 7.0)];
+            [path stroke];
+            path = [NSBezierPath bezierPath];
+            [path moveToPoint:NSMakePoint(2.0, 9.6)];
+            [path lineToPoint:NSMakePoint(13.5, 9.6)];
+            [path stroke];
+            path = [NSBezierPath bezierPath];
+            [path moveToPoint:NSMakePoint(15.25, 15.5)];
+            [path lineToPoint:NSMakePoint(15.25, 8.0)];
+            [path moveToPoint:NSMakePoint(11.5, 11.75)];
+            [path lineToPoint:NSMakePoint(19.0, 11.75)];
+            [path setLineWidth:1.5];
+            [path stroke];
+        }];
         [addFolderToolbarImage setTemplate:YES];
         [addFolderToolbarImage setName:BDSKImageNameToolbarAddFolder];
         
-        addSeparatorToolbarImage = [[NSImage alloc] 
initWithSize:NSMakeSize(19.0, 17.0)];
-        [addSeparatorToolbarImage lockFocus];
-        [NSGraphicsContext saveGraphicsState];
-        [[NSColor clearColor] setFill];
-        NSRectFill(NSMakeRect(0.0, 0.0, 19.0, 17.0));
-        path = [NSBezierPath bezierPath];
-        [path moveToPoint:NSMakePoint(1.0, 6.5)];
-        [path lineToPoint:NSMakePoint(18.0, 6.5)];
-        [path setLineWidth:2.0];
-        [path stroke];
-        path = [NSBezierPath bezierPath];
-        [path moveToPoint:NSMakePoint(15.25, 15.5)];
-        [path lineToPoint:NSMakePoint(15.25, 8.0)];
-        [path moveToPoint:NSMakePoint(11.5, 11.75)];
-        [path lineToPoint:NSMakePoint(19.0, 11.75)];
-        [path setLineWidth:1.5];
-        [path stroke];
-        [NSGraphicsContext restoreGraphicsState];
-        [addSeparatorToolbarImage unlockFocus];
+        addSeparatorToolbarImage = [[NSImage alloc] 
initPDFWithSize:NSMakeSize(19.0, 17.0) drawingHandler:^{
+            [[NSColor clearColor] setFill];
+            NSRectFill(NSMakeRect(0.0, 0.0, 19.0, 17.0));
+            NSBezierPath *path = [NSBezierPath bezierPath];
+            [path moveToPoint:NSMakePoint(1.0, 6.5)];
+            [path lineToPoint:NSMakePoint(18.0, 6.5)];
+            [path setLineWidth:2.0];
+            [path stroke];
+            path = [NSBezierPath bezierPath];
+            [path moveToPoint:NSMakePoint(15.25, 15.5)];
+            [path lineToPoint:NSMakePoint(15.25, 8.0)];
+            [path moveToPoint:NSMakePoint(11.5, 11.75)];
+            [path lineToPoint:NSMakePoint(19.0, 11.75)];
+            [path setLineWidth:1.5];
+            [path stroke];
+        }];
         [addSeparatorToolbarImage setTemplate:YES];
         [addSeparatorToolbarImage setName:BDSKImageNameToolbarAddSeparator];
         
-        deleteToolbarImage = [[NSImage alloc] initWithSize:NSMakeSize(19.0, 
17.0)];
-        [deleteToolbarImage lockFocus];
-        [NSGraphicsContext saveGraphicsState];
-        [[NSColor clearColor] setFill];
-        NSRectFill(NSMakeRect(0.0, 0.0, 19.0, 17.0));
-        path = [NSBezierPath bezierPath];
-        [path moveToPoint:NSMakePoint(4.75, 12.25)];
-        [path appendBezierPathWithArcFromPoint:NSMakePoint(5.25, 1.5) 
toPoint:NSMakePoint(13.0, 1.5) radius:1.5];
-        [path appendBezierPathWithArcFromPoint:NSMakePoint(13.0, 1.5) 
toPoint:NSMakePoint(13.5, 12.25) radius:1.5];
-        [path lineToPoint:NSMakePoint(13.5, 12.25)];
-        [path moveToPoint:NSMakePoint(3.5, 12.25)];
-        [path lineToPoint:NSMakePoint(14.75, 12.25)];
-        [path moveToPoint:NSMakePoint(11.5, 12.25)];
-        [path appendBezierPathWithArcFromPoint:NSMakePoint(11.5, 14.75) 
toPoint:NSMakePoint(6.75, 14.75) radius:1.0];
-        [path appendBezierPathWithArcFromPoint:NSMakePoint(6.75, 14.75) 
toPoint:NSMakePoint(7.0, 12.0) radius:1];
-        [path lineToPoint:NSMakePoint(7.0, 12.0)];
-        [path setLineCapStyle:NSRoundLineCapStyle];
-        [path stroke];
-        path = [NSBezierPath bezierPath];
-        [path moveToPoint:NSMakePoint(9.125, 3.5)];
-        [path lineToPoint:NSMakePoint(9.125, 10.0)];
-        [path moveToPoint:NSMakePoint(7.25, 3.5)];
-        [path lineToPoint:NSMakePoint(7.0, 10.0)];
-        [path moveToPoint:NSMakePoint(11.0, 3.5)];
-        [path lineToPoint:NSMakePoint(11.25, 10.0)];
-        [path setLineWidth:0.8];
-        [path setLineCapStyle:NSRoundLineCapStyle];
-        [path stroke];
-        [NSGraphicsContext restoreGraphicsState];
-        [deleteToolbarImage unlockFocus];
+        deleteToolbarImage = [[NSImage alloc] initPDFWithSize:NSMakeSize(19.0, 
17.0) drawingHandler:^{
+            [[NSColor clearColor] setFill];
+            NSRectFill(NSMakeRect(0.0, 0.0, 19.0, 17.0));
+            NSBezierPath *path = [NSBezierPath bezierPath];
+            [path moveToPoint:NSMakePoint(4.75, 12.25)];
+            [path appendBezierPathWithArcFromPoint:NSMakePoint(5.25, 1.5) 
toPoint:NSMakePoint(13.0, 1.5) radius:1.5];
+            [path appendBezierPathWithArcFromPoint:NSMakePoint(13.0, 1.5) 
toPoint:NSMakePoint(13.5, 12.25) radius:1.5];
+            [path lineToPoint:NSMakePoint(13.5, 12.25)];
+            [path moveToPoint:NSMakePoint(3.5, 12.25)];
+            [path lineToPoint:NSMakePoint(14.75, 12.25)];
+            [path moveToPoint:NSMakePoint(11.5, 12.25)];
+            [path appendBezierPathWithArcFromPoint:NSMakePoint(11.5, 14.75) 
toPoint:NSMakePoint(6.75, 14.75) radius:1.0];
+            [path appendBezierPathWithArcFromPoint:NSMakePoint(6.75, 14.75) 
toPoint:NSMakePoint(7.0, 12.0) radius:1];
+            [path lineToPoint:NSMakePoint(7.0, 12.0)];
+            [path setLineCapStyle:NSRoundLineCapStyle];
+            [path stroke];
+            path = [NSBezierPath bezierPath];
+            [path moveToPoint:NSMakePoint(9.125, 3.5)];
+            [path lineToPoint:NSMakePoint(9.125, 10.0)];
+            [path moveToPoint:NSMakePoint(7.25, 3.5)];
+            [path lineToPoint:NSMakePoint(7.0, 10.0)];
+            [path moveToPoint:NSMakePoint(11.0, 3.5)];
+            [path lineToPoint:NSMakePoint(11.25, 10.0)];
+            [path setLineWidth:0.8];
+            [path setLineCapStyle:NSRoundLineCapStyle];
+            [path stroke];
+        }];
         [deleteToolbarImage setTemplate:YES];
         [deleteToolbarImage setName:BDSKImageNameToolbarDelete];
         
-        editToolbarImage = [[NSImage alloc] initWithSize:NSMakeSize(19.0, 
17.0)];
-        [editToolbarImage lockFocus];
-        [NSGraphicsContext saveGraphicsState];
-        [[NSColor clearColor] setFill];
-        NSRectFill(NSMakeRect(0.0, 0.0, 17.0, 17.0));
-        [[NSColor colorWithGenericGamma22White:0.0 alpha:0.8] setFill];
-        NSFont *font = [NSFont fontWithName:@"Hoefler Text Black Italic" 
size:11.0] ?: [NSFont boldSystemFontOfSize:12.0];
-        NSGlyph glyph = [font glyphWithName:@"i"];
-        path = [NSBezierPath bezierPathWithOvalInRect:NSMakeRect(2.5, 1.5, 
14.0, 14.0)];
-        [[NSColor blackColor] setFill];
-        [path moveToPoint:NSMakePoint(9.5 - NSMidX([font 
boundingRectForGlyph:glyph]), 4.5)];
-        [path appendBezierPathWithGlyph:glyph inFont:font];
-        [path fill];
-        [NSGraphicsContext restoreGraphicsState];
-        [editToolbarImage unlockFocus];
+        editToolbarImage = [[NSImage alloc] initPDFWithSize:NSMakeSize(19.0, 
17.0) drawingHandler:^{
+            [[NSColor clearColor] setFill];
+            NSRectFill(NSMakeRect(0.0, 0.0, 17.0, 17.0));
+            [[NSColor colorWithGenericGamma22White:0.0 alpha:0.8] setFill];
+            NSFont *font = [NSFont fontWithName:@"Hoefler Text Black Italic" 
size:11.0] ?: [NSFont boldSystemFontOfSize:12.0];
+            NSGlyph glyph = [font glyphWithName:@"i"];
+            NSBezierPath *path = [NSBezierPath 
bezierPathWithOvalInRect:NSMakeRect(2.5, 1.5, 14.0, 14.0)];
+            [[NSColor blackColor] setFill];
+            [path moveToPoint:NSMakePoint(9.5 - NSMidX([font 
boundingRectForGlyph:glyph]), 4.5)];
+            [path appendBezierPathWithGlyph:glyph inFont:font];
+            [path fill];
+        }];
         [editToolbarImage setTemplate:YES];
         [editToolbarImage setName:BDSKImageNameToolbarEdit];
     }

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



_______________________________________________
Bibdesk-commit mailing list
Bibdesk-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to