Support CLUT alignment
This commit is contained in:
parent
176ac89e6b
commit
678ae762b6
|
@ -17,6 +17,7 @@ pub enum ColorType{
|
|||
Full16,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)]
|
||||
pub enum ClutAlignment {
|
||||
None,
|
||||
Linear,
|
||||
|
@ -26,7 +27,10 @@ pub enum ClutAlignment {
|
|||
#[derive(Args)]
|
||||
pub struct Arguments {
|
||||
#[clap(arg_enum, value_parser)]
|
||||
color_depth: ColorType
|
||||
color_depth: ColorType,
|
||||
|
||||
#[clap(arg_enum, value_parser, default_value_t=ClutAlignment::None)]
|
||||
clut_align: ClutAlignment
|
||||
}
|
||||
|
||||
fn encode<T: PSXImageConverter>(image: T, clut_align: ClutAlignment, mut output: Output) -> Result<(), Error> {
|
||||
|
@ -84,7 +88,7 @@ fn convert_full16(input: Input, output: Output) -> Result<(), Error> {
|
|||
}
|
||||
}
|
||||
|
||||
fn convert_palette_based(input: Input, output: Output, color_type: ColorType) -> Result<(), Error> {
|
||||
fn convert_palette_based(input: Input, output: Output, color_type: ColorType, clut_align: ClutAlignment) -> Result<(), Error> {
|
||||
match png::Decoder::new(input).read_info() {
|
||||
Ok(reader) => {
|
||||
let output_type = {
|
||||
|
@ -94,7 +98,7 @@ fn convert_palette_based(input: Input, output: Output, color_type: ColorType) ->
|
|||
_ => return Err(Error::from_str("ColorType not supported"))
|
||||
}
|
||||
};
|
||||
encode(IndexedImage::new(reader, output_type)?, ClutAlignment::None, output)
|
||||
encode(IndexedImage::new(reader, output_type)?, clut_align, output)
|
||||
},
|
||||
Err(error) => Err(Error::from_error(error))
|
||||
}
|
||||
|
@ -103,6 +107,6 @@ fn convert_palette_based(input: Input, output: Output, color_type: ColorType) ->
|
|||
pub fn convert(args: Arguments, input: Input, output: Output) -> Result<(), Error> {
|
||||
match args.color_depth {
|
||||
ColorType::Full16 => convert_full16(input, output),
|
||||
_ => convert_palette_based(input, output, args.color_depth),
|
||||
_ => convert_palette_based(input, output, args.color_depth, args.clut_align),
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue