lightwave_3d/lwo2/sub_tags/blocks/
gradient_texture.rs1use crate::iff::SubChunk;
2use crate::lwo2::sub_tags::Name;
3use binrw::binread;
4
5#[binread]
6#[derive(Debug)]
7pub enum GradientTextureSubChunk {
8 #[br(magic(b"PNAM"))]
9 ParameterName(SubChunk<Name>),
10 #[br(magic(b"INAM"))]
11 ItemName(SubChunk<Name>),
12 #[br(magic(b"GRST"))]
13 GradientRangeStart(SubChunk<GradientRange>),
14 #[br(magic(b"GREN"))]
15 GradientRangeEnd(SubChunk<GradientRange>),
16 #[br(magic(b"GRPT"))]
17 RepeatMode(SubChunk<RepeatMode>),
18 #[br(magic(b"FKEY"))]
19 KeyValues(SubChunk<KeyValues>),
20 #[br(magic(b"IKEY"))]
21 KeyParameters(SubChunk<KeyParameters>),
22}
23
24#[binread]
26#[br(import(length: u32))]
27#[derive(Debug)]
28pub struct KeyParameters {
29 #[br(count = length / 2)]
30 pub repeat_mode: Vec<u16>,
31}
32
33#[binread]
39#[br(import(length: u32))]
40#[derive(Debug)]
41pub struct KeyValues {
42 #[br(count = length / 18)]
43 pub key_values: Vec<KeyValue>,
44}
45
46#[binread]
47#[derive(Debug)]
48pub struct KeyValue {
49 pub input: f32,
50 pub output: [f32; 4],
51}
52
53#[binread]
56#[br(import(_length: u32))]
57#[derive(Debug)]
58pub struct GradientRange {
59 pub name: f32,
60}
61
62#[binread]
64#[br(import(_length: u32))]
65#[derive(Debug)]
66pub struct RepeatMode {
67 pub repeat_mode: u16,
68}