mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
remove last freestanding random color fn
This commit is contained in:
parent
eb1e3179a4
commit
cb8dfb4bd7
2 changed files with 18 additions and 19 deletions
|
|
@ -24,16 +24,24 @@ impl From<Color> for ItemColor {
|
||||||
fn from (rgb: Color) -> Self { Self { rgb, okhsl: rgb_to_okhsl(rgb) } }
|
fn from (rgb: Color) -> Self { Self { rgb, okhsl: rgb_to_okhsl(rgb) } }
|
||||||
}
|
}
|
||||||
impl ItemColor {
|
impl ItemColor {
|
||||||
pub fn random () -> Self { random_okhsl().into() }
|
pub fn random () -> Self {
|
||||||
|
let mut rng = thread_rng();
|
||||||
|
let lo = Okhsl::new(-180.0, 0.01, 0.2);
|
||||||
|
let hi = Okhsl::new( 180.0, 0.9, 0.5);
|
||||||
|
UniformOkhsl::new(lo, hi).sample(&mut rng).into()
|
||||||
|
}
|
||||||
pub fn random_dark () -> Self {
|
pub fn random_dark () -> Self {
|
||||||
let mut rng = thread_rng();
|
let mut rng = thread_rng();
|
||||||
let lo = Okhsl::new(-180.0, 0.01, 0.05);
|
let lo = Okhsl::new(-180.0, 0.01, 0.05);
|
||||||
let hi = Okhsl::new( 180.0, 0.5, 0.2);
|
let hi = Okhsl::new( 180.0, 0.5, 0.2);
|
||||||
UniformOkhsl::new(lo, hi).sample(&mut rng).into()
|
UniformOkhsl::new(lo, hi).sample(&mut rng).into()
|
||||||
}
|
}
|
||||||
pub fn random_near (other: Self, distance: f32) -> Self {
|
pub fn random_near (base: Self, distance: f32) -> Self {
|
||||||
if distance > 1.0 { panic!("ItemColor::random_near takes distance between 0.0 and 1.0"); }
|
base.mix(Self::random(), distance)
|
||||||
other.okhsl.mix(random_okhsl(), distance).into()
|
}
|
||||||
|
pub fn mix (&self, other: Self, distance: f32) -> Self {
|
||||||
|
if distance > 1.0 { panic!("color mixing takes distance between 0.0 and 1.0"); }
|
||||||
|
self.okhsl.mix(other.okhsl, distance).into()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl From<ItemColor> for ItemColorTriplet {
|
impl From<ItemColor> for ItemColorTriplet {
|
||||||
|
|
@ -47,19 +55,10 @@ impl From<ItemColor> for ItemColorTriplet {
|
||||||
Self { base, light: light.into(), dark: dark.into() }
|
Self { base, light: light.into(), dark: dark.into() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn random_okhsl () -> Okhsl<f32> {
|
|
||||||
let mut rng = thread_rng();
|
|
||||||
let lo = Okhsl::new(-180.0, 0.01, 0.2);
|
|
||||||
let hi = Okhsl::new( 180.0, 0.9, 0.5);
|
|
||||||
UniformOkhsl::new(lo, hi).sample(&mut rng)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn okhsl_to_rgb (color: Okhsl<f32>) -> Color {
|
pub fn okhsl_to_rgb (color: Okhsl<f32>) -> Color {
|
||||||
let Srgb { red, green, blue, .. }: Srgb<f32> = Srgb::from_color_unclamped(color);
|
let Srgb { red, green, blue, .. }: Srgb<f32> = Srgb::from_color_unclamped(color);
|
||||||
Color::Rgb((red * 255.0) as u8, (green * 255.0) as u8, (blue * 255.0) as u8,)
|
Color::Rgb((red * 255.0) as u8, (green * 255.0) as u8, (blue * 255.0) as u8,)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn rgb_to_okhsl (color: Color) -> Okhsl<f32> {
|
pub fn rgb_to_okhsl (color: Color) -> Okhsl<f32> {
|
||||||
if let Color::Rgb(r, g, b) = color {
|
if let Color::Rgb(r, g, b) = color {
|
||||||
Okhsl::from_color(Srgb::new(
|
Okhsl::from_color(Srgb::new(
|
||||||
|
|
|
||||||
|
|
@ -28,20 +28,20 @@ impl ArrangerCli {
|
||||||
if let Some(name) = self.name.as_ref() {
|
if let Some(name) = self.name.as_ref() {
|
||||||
*arrangement.name.write().unwrap() = name.clone();
|
*arrangement.name.write().unwrap() = name.clone();
|
||||||
}
|
}
|
||||||
let track_color_1 = random_okhsl();
|
let track_color_1 = ItemColor::random();
|
||||||
let track_color_2 = random_okhsl();
|
let track_color_2 = ItemColor::random();
|
||||||
for i in 0..self.tracks {
|
for i in 0..self.tracks {
|
||||||
let _track = arrangement.track_add(
|
let _track = arrangement.track_add(
|
||||||
None,
|
None,
|
||||||
Some(track_color_1.mix(track_color_2, i as f32 / self.tracks as f32).into())
|
Some(track_color_1.mix(track_color_2, i as f32 / self.tracks as f32))
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
let scene_color_1 = random_okhsl();
|
let scene_color_1 = ItemColor::random();
|
||||||
let scene_color_2 = random_okhsl();
|
let scene_color_2 = ItemColor::random();
|
||||||
for i in 0..self.scenes {
|
for i in 0..self.scenes {
|
||||||
let _scene = arrangement.scene_add(
|
let _scene = arrangement.scene_add(
|
||||||
None,
|
None,
|
||||||
Some(scene_color_1.mix(scene_color_2, i as f32 / self.scenes as f32).into())
|
Some(scene_color_1.mix(scene_color_2, i as f32 / self.scenes as f32))
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
let arranger = Arc::new(RwLock::new(Arranger::new(
|
let arranger = Arc::new(RwLock::new(Arranger::new(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue