#[repr(C)]pub struct Rgba {
pub r: u8,
pub g: u8,
pub b: u8,
pub a: u8,
}Expand description
One RGBA8 pixel of the graphics model (straight, not premultiplied,
alpha). In the buffer: the bytes r, g, b, a.
Fields§
§r: u8§g: u8§b: u8§a: u8Implementations§
Source§impl Rgba
impl Rgba
pub const TRANSPARENT: Self
pub const BLACK: Self
pub const WHITE: Self
pub const fn new(r: u8, g: u8, b: u8, a: u8) -> Self
Sourcepub const fn hex(rgb: u32) -> Self
pub const fn hex(rgb: u32) -> Self
0xRRGGBB, opaque (the form crate::view::Theme reports).
Examples found in repository?
examples/shapes_stage.rs (line 32)
24 fn frame(&mut self, frame: &Frame) {
25 let (w, h) = self.stage.size();
26 if w == 0 || h == 0 {
27 // No pixel geometry yet: a resize will follow.
28 return;
29 }
30 let theme = view::theme();
31 let (fg, bg, accent) = (
32 Rgba::hex(theme.fg),
33 Rgba::hex(theme.bg),
34 Rgba::hex(theme.accent),
35 );
36 let t = (frame.now_ms() % 4000) as f32 / 4000.0;
37
38 // A full repaint: nothing is carried forward from the last frame.
39 self.stage.clear(bg);
40 let panel = Area::new(8, 8, w.saturating_sub(16), h.saturating_sub(16));
41 self.stage
42 .fill_rounded_rect(panel, 12, Rgba::hex(theme.recede_bg));
43 self.stage
44 .rounded_rect(panel, 12, Rgba::hex(theme.recede_fg));
45
46 let (cx, cy) = (w as f32 / 2.0, h as f32 / 2.0);
47 let radius = (w.min(h) / 4) as f32;
48 let angle = t * core::f32::consts::TAU;
49 // `no_std` has no `f32::sin`: the SDK re-exports `libm`. The dot
50 // moves between pixels; the shapes antialias it there.
51 let dot = (
52 cx + radius * libm::cosf(angle),
53 cy + radius * libm::sinf(angle),
54 );
55 self.stage
56 .circle((cx, cy), radius, Rgba::hex(theme.recede_fg));
57 self.stage
58 .line((cx as i32, cy as i32), (dot.0 as i32, dot.1 as i32), accent);
59 self.stage.fill_circle(dot, 6.0, accent);
60
61 let bar = Area::new(24, h as i32 - 40, w.saturating_sub(48), 8);
62 self.stage
63 .bar(bar, t, accent, Rgba::hex(theme.recede_fg).with_alpha(96));
64 self.stage.label(24, 24, "shapes", fg);
65 let _ = self.stage.commit();
66
67 match frame.power() {
68 Power::Mains => frame.request_frame(),
69 Power::SavePower => frame.wake_after(1000),
70 }
71 }Sourcepub const fn with_alpha(self, a: u8) -> Self
pub const fn with_alpha(self, a: u8) -> Self
Examples found in repository?
examples/shapes_stage.rs (line 63)
24 fn frame(&mut self, frame: &Frame) {
25 let (w, h) = self.stage.size();
26 if w == 0 || h == 0 {
27 // No pixel geometry yet: a resize will follow.
28 return;
29 }
30 let theme = view::theme();
31 let (fg, bg, accent) = (
32 Rgba::hex(theme.fg),
33 Rgba::hex(theme.bg),
34 Rgba::hex(theme.accent),
35 );
36 let t = (frame.now_ms() % 4000) as f32 / 4000.0;
37
38 // A full repaint: nothing is carried forward from the last frame.
39 self.stage.clear(bg);
40 let panel = Area::new(8, 8, w.saturating_sub(16), h.saturating_sub(16));
41 self.stage
42 .fill_rounded_rect(panel, 12, Rgba::hex(theme.recede_bg));
43 self.stage
44 .rounded_rect(panel, 12, Rgba::hex(theme.recede_fg));
45
46 let (cx, cy) = (w as f32 / 2.0, h as f32 / 2.0);
47 let radius = (w.min(h) / 4) as f32;
48 let angle = t * core::f32::consts::TAU;
49 // `no_std` has no `f32::sin`: the SDK re-exports `libm`. The dot
50 // moves between pixels; the shapes antialias it there.
51 let dot = (
52 cx + radius * libm::cosf(angle),
53 cy + radius * libm::sinf(angle),
54 );
55 self.stage
56 .circle((cx, cy), radius, Rgba::hex(theme.recede_fg));
57 self.stage
58 .line((cx as i32, cy as i32), (dot.0 as i32, dot.1 as i32), accent);
59 self.stage.fill_circle(dot, 6.0, accent);
60
61 let bar = Area::new(24, h as i32 - 40, w.saturating_sub(48), 8);
62 self.stage
63 .bar(bar, t, accent, Rgba::hex(theme.recede_fg).with_alpha(96));
64 self.stage.label(24, 24, "shapes", fg);
65 let _ = self.stage.commit();
66
67 match frame.power() {
68 Power::Mains => frame.request_frame(),
69 Power::SavePower => frame.wake_after(1000),
70 }
71 }pub const fn from_word(word: u32) -> Self
Trait Implementations§
impl Copy for Rgba
impl Eq for Rgba
impl StructuralPartialEq for Rgba
Auto Trait Implementations§
impl Freeze for Rgba
impl RefUnwindSafe for Rgba
impl Send for Rgba
impl Sync for Rgba
impl Unpin for Rgba
impl UnsafeUnpin for Rgba
impl UnwindSafe for Rgba
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more