blob: cd2a35ebd03ae4f739a769db483085900475984e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
use clap::Parser;
use dhwt_codec::io::{outfile, write_videobuf, Value};
use std::io::{stdin, Read};
#[derive(Parser)]
#[clap(about)]
struct ImportArgs {
#[arg(short)]
x: usize,
#[arg(short)]
y: usize,
#[arg(short)]
z: usize,
#[arg(short, long, default_value = "3")]
channels: usize,
outfile: String,
}
fn main() {
let args = ImportArgs::parse();
let mut rawbuf = (0..(args.x * args.y * args.z * args.channels))
.map(|_| 0u8)
.collect::<Vec<_>>();
stdin().read_exact(&mut rawbuf).unwrap();
let mut o = outfile(&args.outfile);
for c in 0..args.channels {
let mut cols = vec![];
for x in 0..args.x {
let mut col = vec![];
for y in 0..args.y {
let mut span = vec![];
for z in 0..args.z {
span.push(
rawbuf[c
+ (x * args.channels)
+ (y * args.channels * args.x)
+ (z * args.channels * args.x * args.y)] as Value,
);
}
col.push(span);
}
cols.push(col)
}
write_videobuf(&mut o, cols)
}
}
|