Skip to main content

basic_usage/
basic_usage.rs

1//! Basic usage example showing colormap loading and color sampling
2
3use scala_chromatica::{Color, ColorMap, ColorStop};
4
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}