mirror of
https://github.com/electron/electron.git
synced 2026-01-09 15:38:08 -05:00
feat: add SF Symbol support to NativeImage::CreateFromNamedImage (#48772)
* feat: add SF Symbol support to NativeImage::CreateFromNamedImage Co-authored-by: TheCommieAxolotl <87679354+TheCommieAxolotl@users.noreply.github.com> * use obj-c name in NSImage constructor Co-authored-by: TheCommieAxolotl <87679354+TheCommieAxolotl@users.noreply.github.com> * add test for named symbol image Co-authored-by: TheCommieAxolotl <87679354+TheCommieAxolotl@users.noreply.github.com> * apply suggested simplification Co-authored-by: TheCommieAxolotl <87679354+TheCommieAxolotl@users.noreply.github.com> * fix: support NX cocoa prefix Co-authored-by: TheCommieAxolotl <87679354+TheCommieAxolotl@users.noreply.github.com> --------- Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: TheCommieAxolotl <87679354+TheCommieAxolotl@users.noreply.github.com>
This commit is contained in:
@@ -202,8 +202,7 @@ Creates a new `NativeImage` instance from `dataUrl`, a base 64 encoded [Data URL
|
||||
Returns `NativeImage`
|
||||
|
||||
Creates a new `NativeImage` instance from the `NSImage` that maps to the
|
||||
given image name. See Apple's [`NSImageName`](https://developer.apple.com/documentation/appkit/nsimagename#2901388)
|
||||
documentation for a list of possible values.
|
||||
given image name. See Apple's [`NSImageName`](https://developer.apple.com/documentation/appkit/nsimagename#2901388) documentation and [SF Symbols](https://developer.apple.com/sf-symbols/) for a list of possible values.
|
||||
|
||||
The `hslShift` is applied to the image with the following rules:
|
||||
|
||||
|
||||
@@ -120,9 +120,18 @@ gin_helper::Handle<NativeImage> NativeImage::CreateFromNamedImage(
|
||||
name.erase(pos, to_remove.length());
|
||||
}
|
||||
|
||||
NSImage* image = [NSImage imageNamed:base::SysUTF8ToNSString(name)];
|
||||
NSImage* image = nil;
|
||||
NSString* ns_name = base::SysUTF8ToNSString(name);
|
||||
|
||||
if (!image.valid) {
|
||||
// Treat non-Cocoa-prefixed names as SF Symbols first.
|
||||
if (!base::StartsWith(name, "NS") && !base::StartsWith(name, "NX")) {
|
||||
image = [NSImage imageWithSystemSymbolName:ns_name
|
||||
accessibilityDescription:nil];
|
||||
} else {
|
||||
image = [NSImage imageNamed:ns_name];
|
||||
}
|
||||
|
||||
if (!image || !image.valid) {
|
||||
return CreateEmpty(args->isolate());
|
||||
}
|
||||
|
||||
|
||||
@@ -348,6 +348,11 @@ describe('nativeImage module', () => {
|
||||
expect(image.isEmpty()).to.be.false();
|
||||
});
|
||||
|
||||
ifit(process.platform === 'darwin')('returns a valid named symbol on darwin', function () {
|
||||
const image = nativeImage.createFromNamedImage('atom');
|
||||
expect(image.isEmpty()).to.be.false();
|
||||
});
|
||||
|
||||
ifit(process.platform === 'darwin')('returns allows an HSL shift for a valid image on darwin', function () {
|
||||
const image = nativeImage.createFromNamedImage('NSActionTemplate', [0.5, 0.2, 0.8]);
|
||||
expect(image.isEmpty()).to.be.false();
|
||||
|
||||
Reference in New Issue
Block a user