pub struct ColorMap {
pub name: String,
pub stops: Vec<ColorStop>,
}Expand description
A colormap with multiple color stops and smooth interpolation
Fields§
§name: StringName of the colormap
stops: Vec<ColorStop>Ordered list of color stops
Implementations§
Source§impl ColorMap
impl ColorMap
Sourcepub fn new(name: impl Into<String>) -> Self
pub fn new(name: impl Into<String>) -> Self
Create a new colormap with a given name
Examples found in repository?
examples/basic_usage.rs (line 21)
5fn main() {
6 // Load built-in colormap
7 println!("Loading Fire colormap...");
8 let fire = scala_chromatica::io::load_builtin_colormap("Fire")
9 .expect("Failed to load Fire colormap");
10
11 // Sample colors at different positions
12 println!("\nFire gradient samples:");
13 for i in 0..=10 {
14 let position = i as f64 / 10.0;
15 let color = fire.get_color(position);
16 println!(" {:.1}: RGB({}, {}, {})", position, color.r, color.g, color.b);
17 }
18
19 // Create custom gradient
20 println!("\nCreating custom gradient...");
21 let mut custom = ColorMap::new("RedBlue");
22 custom.add_stop(ColorStop::new(0.0, Color::new(255, 0, 0)));
23 custom.add_stop(ColorStop::new(0.5, Color::new(255, 255, 255)));
24 custom.add_stop(ColorStop::new(1.0, Color::new(0, 0, 255)));
25
26 println!("\nCustom gradient samples:");
27 for i in 0..=10 {
28 let position = i as f64 / 10.0;
29 let color = custom.get_color(position);
30 println!(" {:.1}: RGB({}, {}, {})", position, color.r, color.g, color.b);
31 }
32
33 // List all available colormaps
34 println!("\nListing all available colormaps...");
35 match scala_chromatica::io::list_available_colormaps() {
36 Ok(colormaps) => {
37 println!("Found {} colormap(s):", colormaps.len());
38 for info in colormaps {
39 let type_str = if info.is_builtin {
40 "built-in"
41 } else {
42 "custom"
43 };
44 println!(" - {} ({})", info.name, type_str);
45 }
46 }
47 Err(e) => eprintln!("Error listing colormaps: {}", e),
48 }
49
50 // Demonstrate HSV color creation
51 println!("\nHSV color examples:");
52 let red = Color::from_hsv(0.0, 1.0, 1.0);
53 println!(" Red (H=0): RGB({}, {}, {})", red.r, red.g, red.b);
54
55 let green = Color::from_hsv(120.0, 1.0, 1.0);
56 println!(" Green (H=120): RGB({}, {}, {})", green.r, green.g, green.b);
57
58 let blue = Color::from_hsv(240.0, 1.0, 1.0);
59 println!(" Blue (H=240): RGB({}, {}, {})", blue.r, blue.g, blue.b);
60}Sourcepub fn with_stops(name: impl Into<String>, stops: Vec<ColorStop>) -> Self
pub fn with_stops(name: impl Into<String>, stops: Vec<ColorStop>) -> Self
Create a colormap with initial stops
Sourcepub fn add_stop(&mut self, stop: ColorStop)
pub fn add_stop(&mut self, stop: ColorStop)
Add a color stop to the gradient
Examples found in repository?
examples/basic_usage.rs (line 22)
5fn main() {
6 // Load built-in colormap
7 println!("Loading Fire colormap...");
8 let fire = scala_chromatica::io::load_builtin_colormap("Fire")
9 .expect("Failed to load Fire colormap");
10
11 // Sample colors at different positions
12 println!("\nFire gradient samples:");
13 for i in 0..=10 {
14 let position = i as f64 / 10.0;
15 let color = fire.get_color(position);
16 println!(" {:.1}: RGB({}, {}, {})", position, color.r, color.g, color.b);
17 }
18
19 // Create custom gradient
20 println!("\nCreating custom gradient...");
21 let mut custom = ColorMap::new("RedBlue");
22 custom.add_stop(ColorStop::new(0.0, Color::new(255, 0, 0)));
23 custom.add_stop(ColorStop::new(0.5, Color::new(255, 255, 255)));
24 custom.add_stop(ColorStop::new(1.0, Color::new(0, 0, 255)));
25
26 println!("\nCustom gradient samples:");
27 for i in 0..=10 {
28 let position = i as f64 / 10.0;
29 let color = custom.get_color(position);
30 println!(" {:.1}: RGB({}, {}, {})", position, color.r, color.g, color.b);
31 }
32
33 // List all available colormaps
34 println!("\nListing all available colormaps...");
35 match scala_chromatica::io::list_available_colormaps() {
36 Ok(colormaps) => {
37 println!("Found {} colormap(s):", colormaps.len());
38 for info in colormaps {
39 let type_str = if info.is_builtin {
40 "built-in"
41 } else {
42 "custom"
43 };
44 println!(" - {} ({})", info.name, type_str);
45 }
46 }
47 Err(e) => eprintln!("Error listing colormaps: {}", e),
48 }
49
50 // Demonstrate HSV color creation
51 println!("\nHSV color examples:");
52 let red = Color::from_hsv(0.0, 1.0, 1.0);
53 println!(" Red (H=0): RGB({}, {}, {})", red.r, red.g, red.b);
54
55 let green = Color::from_hsv(120.0, 1.0, 1.0);
56 println!(" Green (H=120): RGB({}, {}, {})", green.r, green.g, green.b);
57
58 let blue = Color::from_hsv(240.0, 1.0, 1.0);
59 println!(" Blue (H=240): RGB({}, {}, {})", blue.r, blue.g, blue.b);
60}Sourcepub fn remove_stop(&mut self, index: usize)
pub fn remove_stop(&mut self, index: usize)
Remove a color stop by index (minimum 2 stops required)
Sourcepub fn get_color(&self, position: f64) -> Color
pub fn get_color(&self, position: f64) -> Color
Get color at a specific position (0.0 to 1.0) by interpolating between stops
Examples found in repository?
examples/basic_usage.rs (line 15)
5fn main() {
6 // Load built-in colormap
7 println!("Loading Fire colormap...");
8 let fire = scala_chromatica::io::load_builtin_colormap("Fire")
9 .expect("Failed to load Fire colormap");
10
11 // Sample colors at different positions
12 println!("\nFire gradient samples:");
13 for i in 0..=10 {
14 let position = i as f64 / 10.0;
15 let color = fire.get_color(position);
16 println!(" {:.1}: RGB({}, {}, {})", position, color.r, color.g, color.b);
17 }
18
19 // Create custom gradient
20 println!("\nCreating custom gradient...");
21 let mut custom = ColorMap::new("RedBlue");
22 custom.add_stop(ColorStop::new(0.0, Color::new(255, 0, 0)));
23 custom.add_stop(ColorStop::new(0.5, Color::new(255, 255, 255)));
24 custom.add_stop(ColorStop::new(1.0, Color::new(0, 0, 255)));
25
26 println!("\nCustom gradient samples:");
27 for i in 0..=10 {
28 let position = i as f64 / 10.0;
29 let color = custom.get_color(position);
30 println!(" {:.1}: RGB({}, {}, {})", position, color.r, color.g, color.b);
31 }
32
33 // List all available colormaps
34 println!("\nListing all available colormaps...");
35 match scala_chromatica::io::list_available_colormaps() {
36 Ok(colormaps) => {
37 println!("Found {} colormap(s):", colormaps.len());
38 for info in colormaps {
39 let type_str = if info.is_builtin {
40 "built-in"
41 } else {
42 "custom"
43 };
44 println!(" - {} ({})", info.name, type_str);
45 }
46 }
47 Err(e) => eprintln!("Error listing colormaps: {}", e),
48 }
49
50 // Demonstrate HSV color creation
51 println!("\nHSV color examples:");
52 let red = Color::from_hsv(0.0, 1.0, 1.0);
53 println!(" Red (H=0): RGB({}, {}, {})", red.r, red.g, red.b);
54
55 let green = Color::from_hsv(120.0, 1.0, 1.0);
56 println!(" Green (H=120): RGB({}, {}, {})", green.r, green.g, green.b);
57
58 let blue = Color::from_hsv(240.0, 1.0, 1.0);
59 println!(" Blue (H=240): RGB({}, {}, {})", blue.r, blue.g, blue.b);
60}Sourcepub fn default_scheme() -> Self
pub fn default_scheme() -> Self
Default HSV-based color scheme (smooth rainbow)
Sourcepub fn fire_scheme() -> Self
pub fn fire_scheme() -> Self
Fire color scheme (black -> red -> orange -> yellow -> white)
Sourcepub fn ocean_scheme() -> Self
pub fn ocean_scheme() -> Self
Ocean color scheme (black -> deep blue -> cyan -> white)
Sourcepub fn grayscale_scheme() -> Self
pub fn grayscale_scheme() -> Self
Grayscale color scheme (black -> gray -> white)
Sourcepub fn rainbow_scheme() -> Self
pub fn rainbow_scheme() -> Self
Rainbow color scheme (full spectrum)
Trait Implementations§
Source§impl<'de> Deserialize<'de> for ColorMap
impl<'de> Deserialize<'de> for ColorMap
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for ColorMap
impl RefUnwindSafe for ColorMap
impl Send for ColorMap
impl Sync for ColorMap
impl Unpin for ColorMap
impl UnwindSafe for ColorMap
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