mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
ridiculous refactor to allow enums to be dbus strings for better TS generation
This commit is contained in:
@@ -53,30 +53,33 @@ impl EffectState for Breathe {
|
||||
|
||||
let speed = 4 - <u8>::from(*speed);
|
||||
|
||||
if *colour_actual == Colour(0, 0, 0) {
|
||||
if *colour_actual == (Colour { r: 0, g: 0, b: 0 }) {
|
||||
*use_colour1 = !*use_colour1;
|
||||
}
|
||||
|
||||
let colour = if !*use_colour1 { colour2 } else { colour1 };
|
||||
|
||||
let r1_scale = colour.0 / speed / 2;
|
||||
let g1_scale = colour.1 / speed / 2;
|
||||
let b1_scale = colour.2 / speed / 2;
|
||||
let r1_scale = colour.r / speed / 2;
|
||||
let g1_scale = colour.g / speed / 2;
|
||||
let b1_scale = colour.b / speed / 2;
|
||||
|
||||
if *colour_actual == Colour(0, 0, 0) {
|
||||
if *colour_actual == (Colour { r: 0, g: 0, b: 0 }) {
|
||||
*flipped = true;
|
||||
} else if colour_actual >= colour {
|
||||
} else if colour_actual.r >= colour.r
|
||||
&& colour_actual.g >= colour.g
|
||||
&& colour_actual.b >= colour.b
|
||||
{
|
||||
*flipped = false;
|
||||
}
|
||||
|
||||
if !*flipped {
|
||||
colour_actual.0 = colour_actual.0.saturating_sub(r1_scale);
|
||||
colour_actual.1 = colour_actual.1.saturating_sub(g1_scale);
|
||||
colour_actual.2 = colour_actual.2.saturating_sub(b1_scale);
|
||||
colour_actual.r = colour_actual.r.saturating_sub(r1_scale);
|
||||
colour_actual.g = colour_actual.g.saturating_sub(g1_scale);
|
||||
colour_actual.b = colour_actual.b.saturating_sub(b1_scale);
|
||||
} else {
|
||||
colour_actual.0 = colour_actual.0.saturating_add(r1_scale);
|
||||
colour_actual.1 = colour_actual.1.saturating_add(g1_scale);
|
||||
colour_actual.2 = colour_actual.2.saturating_add(b1_scale);
|
||||
colour_actual.r = colour_actual.r.saturating_add(r1_scale);
|
||||
colour_actual.g = colour_actual.g.saturating_add(g1_scale);
|
||||
colour_actual.b = colour_actual.b.saturating_add(b1_scale);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,17 +51,17 @@ impl EffectState for DoomFlicker {
|
||||
}
|
||||
|
||||
// TODO: make a "percentage" method on Colour.
|
||||
let max_light = Colour(
|
||||
(start_colour.0 as f32 / 100.0 * *max_percentage as f32) as u8,
|
||||
(start_colour.1 as f32 / 100.0 * *max_percentage as f32) as u8,
|
||||
(start_colour.2 as f32 / 100.0 * *max_percentage as f32) as u8,
|
||||
);
|
||||
let max_light = Colour {
|
||||
r: (start_colour.r as f32 / 100.0 * *max_percentage as f32) as u8,
|
||||
g: (start_colour.g as f32 / 100.0 * *max_percentage as f32) as u8,
|
||||
b: (start_colour.b as f32 / 100.0 * *max_percentage as f32) as u8,
|
||||
};
|
||||
// min light is a percentage of the set colour
|
||||
let min_light = Colour(
|
||||
(start_colour.0 as f32 / 100.0 * *min_percentage as f32) as u8,
|
||||
(start_colour.1 as f32 / 100.0 * *min_percentage as f32) as u8,
|
||||
(start_colour.2 as f32 / 100.0 * *min_percentage as f32) as u8,
|
||||
);
|
||||
let min_light = Colour {
|
||||
r: (start_colour.r as f32 / 100.0 * *min_percentage as f32) as u8,
|
||||
g: (start_colour.g as f32 / 100.0 * *min_percentage as f32) as u8,
|
||||
b: (start_colour.b as f32 / 100.0 * *min_percentage as f32) as u8,
|
||||
};
|
||||
|
||||
// Convert the 255 to percentage
|
||||
let amount = (p_random() & 7) as f32 * 8.0;
|
||||
@@ -76,9 +76,9 @@ impl EffectState for DoomFlicker {
|
||||
*colour = (max - max_amount) as u8;
|
||||
}
|
||||
};
|
||||
set_colour(&mut colour.0, max_light.0 as f32, min_light.0 as f32);
|
||||
set_colour(&mut colour.1, max_light.1 as f32, min_light.1 as f32);
|
||||
set_colour(&mut colour.2, max_light.2 as f32, min_light.2 as f32);
|
||||
set_colour(&mut colour.r, max_light.r as f32, min_light.r as f32);
|
||||
set_colour(&mut colour.g, max_light.g as f32, min_light.g as f32);
|
||||
set_colour(&mut colour.b, max_light.b as f32, min_light.b as f32);
|
||||
|
||||
self.count = 4;
|
||||
}
|
||||
@@ -133,17 +133,17 @@ impl EffectState for DoomLightFlash {
|
||||
}
|
||||
|
||||
// TODO: make a "percentage" method on Colour.
|
||||
let max_light = Colour(
|
||||
(start_colour.0 as f32 / 100.0 * *max_percentage as f32) as u8,
|
||||
(start_colour.1 as f32 / 100.0 * *max_percentage as f32) as u8,
|
||||
(start_colour.2 as f32 / 100.0 * *max_percentage as f32) as u8,
|
||||
);
|
||||
let max_light = Colour {
|
||||
r: (start_colour.r as f32 / 100.0 * *max_percentage as f32) as u8,
|
||||
g: (start_colour.g as f32 / 100.0 * *max_percentage as f32) as u8,
|
||||
b: (start_colour.b as f32 / 100.0 * *max_percentage as f32) as u8,
|
||||
};
|
||||
// min light is a percentage of the set colour
|
||||
let min_light = Colour(
|
||||
(start_colour.0 as f32 / 100.0 * *min_percentage as f32) as u8,
|
||||
(start_colour.1 as f32 / 100.0 * *min_percentage as f32) as u8,
|
||||
(start_colour.2 as f32 / 100.0 * *min_percentage as f32) as u8,
|
||||
);
|
||||
let min_light = Colour {
|
||||
r: (start_colour.r as f32 / 100.0 * *min_percentage as f32) as u8,
|
||||
g: (start_colour.g as f32 / 100.0 * *min_percentage as f32) as u8,
|
||||
b: (start_colour.b as f32 / 100.0 * *min_percentage as f32) as u8,
|
||||
};
|
||||
|
||||
if *colour == max_light {
|
||||
*colour = min_light;
|
||||
|
||||
@@ -118,7 +118,7 @@ impl AdvancedEffects {
|
||||
|
||||
for effect in &self.effects {
|
||||
let c = effect.colour();
|
||||
usb_packets.set(effect.led(), c.0, c.1, c.2);
|
||||
usb_packets.set(effect.led(), c.r, c.g, c.b);
|
||||
}
|
||||
usb_packets.into()
|
||||
}
|
||||
@@ -209,8 +209,14 @@ mod tests {
|
||||
fn single_key_next_state_then_create() {
|
||||
let layout = KeyLayout::default_layout();
|
||||
let mut seq = AdvancedEffects::new(false);
|
||||
seq.effects
|
||||
.push(Effect::Static(Static::new(LedCode::F, Colour(255, 127, 0))));
|
||||
seq.effects.push(Effect::Static(Static::new(
|
||||
LedCode::F,
|
||||
Colour {
|
||||
r: 255,
|
||||
g: 127,
|
||||
b: 0,
|
||||
},
|
||||
)));
|
||||
|
||||
seq.next_state(&layout);
|
||||
let packets = seq.create_packets();
|
||||
@@ -227,8 +233,16 @@ mod tests {
|
||||
let mut seq = AdvancedEffects::new(false);
|
||||
seq.effects.push(Effect::Breathe(Breathe::new(
|
||||
LedCode::F,
|
||||
Colour(255, 127, 0),
|
||||
Colour(127, 0, 255),
|
||||
Colour {
|
||||
r: 255,
|
||||
g: 127,
|
||||
b: 0,
|
||||
},
|
||||
Colour {
|
||||
r: 127,
|
||||
g: 0,
|
||||
b: 255,
|
||||
},
|
||||
Speed::Med,
|
||||
)));
|
||||
|
||||
@@ -261,7 +275,11 @@ mod tests {
|
||||
let mut seq = AdvancedEffects::new(false);
|
||||
seq.effects.push(Effect::DoomFlicker(DoomFlicker::new(
|
||||
LedCode::F,
|
||||
Colour(255, 127, 80),
|
||||
Colour {
|
||||
r: 255,
|
||||
g: 127,
|
||||
b: 80,
|
||||
},
|
||||
100,
|
||||
10,
|
||||
)));
|
||||
|
||||
Reference in New Issue
Block a user