From 3507fd8e27dbd5d286bae999f4c591d8912428c0 Mon Sep 17 00:00:00 2001 From: relikd Date: Mon, 8 Dec 2025 18:35:13 +0100 Subject: [PATCH] feat: appearance settings article icon --- baRSS/Constants.h | 2 ++ baRSS/Helper/DrawImage.m | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/baRSS/Constants.h b/baRSS/Constants.h index 49663f7..5a058ce 100644 --- a/baRSS/Constants.h +++ b/baRSS/Constants.h @@ -30,6 +30,8 @@ static NSImageName const RSSImageSettingsGlobalMenu = @"RSSImageSettingsGloba static NSImageName const RSSImageSettingsGroup = @"RSSImageSettingsGroup"; /// Settings, feed icon (RSS, no border, no gradient, black) static NSImageName const RSSImageSettingsFeed = @"RSSImageSettingsFeed"; +/// Settings, article icon (RSS surrounded by text lines) +static NSImageName const RSSImageSettingsArticle = @"RSSImageSettingsArticle"; /// Menu bar, bar icon (RSS, with border, no gradient, orange) static NSImageName const RSSImageMenuBarIconActive = @"RSSImageMenuBarIconActive"; /// Menu bar, bar icon (RSS, with border, no gradient, paused, orange) diff --git a/baRSS/Helper/DrawImage.m b/baRSS/Helper/DrawImage.m index 650717a..6936336 100644 --- a/baRSS/Helper/DrawImage.m +++ b/baRSS/Helper/DrawImage.m @@ -240,6 +240,27 @@ static void Appearance_Feed(CGRect r) { CGContextFillPath(c); } +/// Draw icon representing `Article` (RSS inside text document) +static void Appearance_Article(CGRect r) { + const CGFloat size = ShorterSide(r.size); + CGContextRef c = NSGraphicsContext.currentContext.CGContext; + CGContextSetFillColorWithColor(c, [NSColor controlTextColor].CGColor); + FlipCoordinateSystem(c, r.size.height); + // text lines + svgAddRect(c, size/16, CGRectMake(0, 14, 16, 1), 0); + svgAddRect(c, size/16, CGRectMake(0, 10, 16, 1), 0); + svgAddRect(c, size/16, CGRectMake(9, 6, 7, 1), 0); + svgAddRect(c, size/16, CGRectMake(9, 2, 7, 1), 0); + // picture + //svgAddRect(c, size/16, CGRectMake(1, 1, 7, 7), 0); + // RSS icon + CGContextTranslateCTM(c, size/16 * 1, size/16 * 1); + CGContextScaleCTM(c, 7.0/16, 7.0/16); + FlipCoordinateSystem(c, r.size.height); + AddRSSIconPath(c, ShorterSide(r.size), YES); + CGContextEOFillPath(c); +} + /// Draw RSS icon (flat without gradient) static void DrawRSSIcon(CGRect r, CGColorRef color, BOOL background, BOOL connection) { CGContextRef c = NSGraphicsContext.currentContext.CGContext; @@ -327,6 +348,7 @@ void RegisterImageViewNames(void) { Register(16, RSSImageSettingsGlobalMenu, NSLocalizedString(@"Global settings", nil), ^(NSRect r) { Appearance_MainMenu(r); return YES; }); Register(16, RSSImageSettingsGroup, NSLocalizedString(@"Group settings", nil), ^(NSRect r) { Appearance_Group(r); return YES; }); Register(16, RSSImageSettingsFeed, NSLocalizedString(@"Feed settings", nil), ^(NSRect r) { Appearance_Feed(r); return YES; }); + Register(16, RSSImageSettingsArticle, NSLocalizedString(@"Article settings", nil), ^(NSRect r) { Appearance_Article(r); return YES; }); // Menu bar icon Register(16, RSSImageMenuBarIconActive, NSLocalizedString(@"RSS menu bar icon", nil), ^(NSRect r) { DrawRSSIcon(r, [NSColor menuBarIconColor].CGColor, YES, YES); return YES; }); Register(16, RSSImageMenuBarIconPaused, NSLocalizedString(@"RSS menu bar icon, paused", nil), ^(NSRect r) { DrawRSSIcon(r, [NSColor menuBarIconColor].CGColor, YES, NO); return YES; });