diff options
| -rw-r--r-- | vtcol.rs | 18 | 
1 files changed, 14 insertions, 4 deletions
@@ -402,12 +402,22 @@ impl Palette {          while  let Ok(line) = reader.read_line() {              let len = line.len();              if len < 8_us { panic!("invalid line in string: {}", line); }; -            if let Some(idx) = line.find_str("#") { -                let idx = idx + 1_us; -                if idx > len - 6_us { /* no room left for color definition after '#' char */ +            if let Some(off) = line.find_str("#") { +                if off != 0_us { +                    /* Palette index specified, number prepended */ +                    let str_idx = line.slice_chars(0, off); +                    let parse_res : Option<usize> +                        = std::str::FromStr::from_str(str_idx); +                    match parse_res { +                        Some(new_idx) => pal_idx = new_idx * 3_us, +                        None => () +                    } +                } +                let off = off + 1_us; +                if off > len - 6_us { /* no room left for color definition after '#' char */                      panic!("invalid color definition: {}", line);                  } -                let col = line.slice_chars(idx, idx + RAW_COLEXPR_SIZE); +                let col = line.slice_chars(off, off + RAW_COLEXPR_SIZE);                  let (r, g, b) = rgb_of_hex_triplet(col);                  pal[pal_idx + 0_us] = r;  | 
