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