paint.net palette support
This commit is contained in:
parent
2eda76729a
commit
e881aeeaf7
|
@ -33,6 +33,7 @@ impl Palette {
|
|||
match path.extension().unwrap().to_str().unwrap() {
|
||||
"pal" => Self::from_jasc(path),
|
||||
"gpl" => Self::from_gpl(path),
|
||||
"txt" => Self::from_txt(path),
|
||||
"toml" => Self::from(
|
||||
path.file_stem().as_ref().unwrap().to_str().unwrap(),
|
||||
&read_to_string(&path).unwrap()
|
||||
|
@ -102,6 +103,34 @@ impl Palette {
|
|||
// todo re-insert original comments
|
||||
format!("GIMP Palette\r\n{}\r\n", colours.join("\r\n"))
|
||||
}
|
||||
|
||||
/// Paint.net .txt format
|
||||
pub fn from_txt(path: PathBuf) -> Self {
|
||||
let name = path.file_stem().unwrap().to_str().unwrap().into();
|
||||
let mut colours = Vec::new();
|
||||
|
||||
for line in read_to_string(&path).unwrap().lines() {
|
||||
// header and comments begin with ;
|
||||
if !line.starts_with(";") {
|
||||
// colour starts with FF
|
||||
colours.push(Colour::from(&line[2..]));
|
||||
}
|
||||
}
|
||||
|
||||
Self { name, colours }
|
||||
}
|
||||
|
||||
pub fn to_txt(&self) -> String {
|
||||
let colours: Vec<String> = self.colours.iter().map(|colour|
|
||||
colour.to_string().replace('#', "FF")
|
||||
).collect();
|
||||
|
||||
format!(
|
||||
";paint.net Palette File\r\n;Colors: {}\r\n{}\r\n",
|
||||
self.colours.len(),
|
||||
colours.join("\r\n")
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/// for toml purposes
|
||||
|
@ -179,6 +208,22 @@ mod test {
|
|||
assert_eq!(output, expected);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn palette_from_txt() {
|
||||
let path = PathBuf::from("src/test-resources/basic/palettes/soup11.txt");
|
||||
let output = Palette::from_txt(path);
|
||||
let expected = crate::mock::palette::soup11();
|
||||
assert_eq!(output, expected);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn palette_to_txt() {
|
||||
let output = crate::mock::palette::soup11().to_txt();
|
||||
let expected = include_str!("test-resources/basic/palettes/soup11.txt");
|
||||
|
||||
assert_eq!(output, expected);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn palette_from_toml() {
|
||||
let output = Palette::from(
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
;paint.net Palette File
|
||||
;Downloaded from Lospec.com/palette-list
|
||||
;Palette Name: soup11
|
||||
;Description: reds and blues, heavy hue shifting
|
||||
;Colors: 11
|
||||
FF4f1e45
|
||||
FF963057
|
||||
FFd74459
|
||||
FFeb7060
|
||||
FFffb383
|
||||
FFffffff
|
||||
FF7fe3bb
|
||||
FF5cbbc4
|
||||
FF457ea3
|
||||
FF384276
|
||||
FF322451
|
Loading…
Reference in New Issue