Skip to content

Commit 472dff8

Browse files
committed
added support for image icons
1 parent e693bc6 commit 472dff8

File tree

9 files changed

+17
-1093
lines changed

9 files changed

+17
-1093
lines changed

Cargo.lock

Lines changed: 0 additions & 1069 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,3 @@ repository = "https://github.com/RustAudio/system-media"
1010
readme = "README.md"
1111
keywords = ["rust", "swift", "macos", "audio", "video"]
1212
categories = ["external-ffi-bindings", "multimedia::audio", "multimedia::video"]
13-
14-
[dependencies]
15-
image = "0.25.6"

examples/basic.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ fn main() {
88
println!("Keeping process alive... Press Ctrl+C to exit");
99
let mut session = MediaSession::new();
1010

11-
// let manifest_dir = env!("CARGO_MANIFEST_DIR");
12-
// let path = format!("{}/examples/bug.png", manifest_dir);
11+
let manifest_dir = env!("CARGO_MANIFEST_DIR");
12+
let path = format!("{}/examples/bug.png", manifest_dir);
1313

1414
session.set_playback_rate(1.0);
1515
session.set_playback_duration(300.0);
1616
session.set_elapsed_duration(100.0);
1717

1818
session.set_title("Help ME!");
1919

20-
// session.set_image(&path);
20+
session.set_image(&path);
2121

2222
session.start();
2323
}

src/lib.rs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ mod null;
55

66
use std::sync::{Arc, Mutex};
77
use std::error::Error;
8-
use image::ImageReader;
98

109
pub trait MediaBackend {
1110
fn set_title(&self, title: &str);
@@ -39,13 +38,6 @@ pub struct Metadata {
3938
playback_rate: f64,
4039
}
4140

42-
fn decode_image(path: &str) -> Result<Vec<u8>, Box<dyn Error>> {
43-
let img = ImageReader::open(path)?
44-
.decode()?
45-
.to_rgb8();
46-
Ok(img.into_raw())
47-
}
48-
4941
pub struct MediaSession {
5042
backend: Box<dyn MediaBackend>,
5143
metadata: Arc<Mutex<Metadata>>,

src/linux/mod.rs

Whitespace-only changes.

src/linux/mpris.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

src/macos/nowplaying.swift

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -75,17 +75,19 @@ func resize(image: NSImage, to newSize: NSSize) -> NSImage {
7575
public func setMetadataImage(bytes: UnsafePointer<UInt8>, length: Int) {
7676
DispatchQueue.main.async {
7777
let data = Data(bytes: bytes, count: length)
78-
guard let image = NSImage(data: data) else {
79-
print("Failed to convert data to NSImage")
80-
return
78+
guard let image = NSImage(data: data) else { return }
79+
80+
let artwork = MPMediaItemArtwork(boundsSize: image.size) { size in
81+
let newImage = NSImage(size: size)
82+
newImage.lockFocus()
83+
image.draw(in: NSRect(origin: .zero, size: size))
84+
newImage.unlockFocus()
85+
return newImage
8186
}
82-
let scaledImg = resize(image: image, to: NSSize(width: 512, height: 512))
83-
let artwork = MPMediaItemArtwork(boundsSize: image.size) { _ in
84-
return scaledImg
85-
}
86-
var nowPlayingInfo = MPNowPlayingInfoCenter.default().nowPlayingInfo ?? [String: Any]()
87-
nowPlayingInfo[MPMediaItemPropertyArtwork] = artwork
88-
MPNowPlayingInfoCenter.default().nowPlayingInfo = nowPlayingInfo
87+
88+
var info = MPNowPlayingInfoCenter.default().nowPlayingInfo ?? [:]
89+
info[MPMediaItemPropertyArtwork] = artwork
90+
MPNowPlayingInfoCenter.default().nowPlayingInfo = info
8991
}
9092
}
9193

src/windows/mod.rs

Whitespace-only changes.

src/windows/smtc.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// This file will contain bindings to the SMTC API. This has not yet been implemented.

0 commit comments

Comments
 (0)