|
@@ -1,10 +1,6 @@
|
|
|
-use binrw::{binread, BinRead, BinWrite, FilePtr64};
|
|
|
+use binrw::{BinRead, BinWrite, FilePtr64};
|
|
|
|
|
|
-use crate::{
|
|
|
- array_of::ArrayOf,
|
|
|
- basic_field::{Color, Double, Field, Rgba, WString, U32},
|
|
|
- field_of::FieldOf,
|
|
|
-};
|
|
|
+use crate::{pen::PenHeader, types::Rgba};
|
|
|
|
|
|
#[derive(BinRead, Debug)]
|
|
|
pub struct Header {
|
|
@@ -13,7 +9,7 @@ pub struct Header {
|
|
|
pub thumbnail_offset: FilePtr64<Thumbnail>,
|
|
|
pub pens_offset: FilePtr64<PenHeader>,
|
|
|
_unknown_offset: FilePtr64<()>,
|
|
|
- pub layers_offset: FilePtr64<Layers>,
|
|
|
+ pub layers_offset: FilePtr64<LayerHeader>,
|
|
|
_unknown_2: [u8; 0x1A8],
|
|
|
}
|
|
|
|
|
@@ -30,81 +26,12 @@ pub struct Thumbnail {
|
|
|
pub pixels: Vec<Rgba>,
|
|
|
}
|
|
|
|
|
|
-#[derive(BinRead, Debug)]
|
|
|
-pub struct PenHeader {
|
|
|
- pub pen_count: u32,
|
|
|
- #[br(args {
|
|
|
- inner: binrw::args! {
|
|
|
- pen_count
|
|
|
- }
|
|
|
- })]
|
|
|
- pub start_offset: FilePtr64<Pens>,
|
|
|
-}
|
|
|
-
|
|
|
-#[derive(BinRead, BinWrite, Debug)]
|
|
|
-#[br(import {pen_count: u32})]
|
|
|
-pub struct Pens {
|
|
|
- // #[br(count = pen_count)]
|
|
|
- // pens: Vec<ArrayOf<Field>>,
|
|
|
- #[br(count = pen_count)]
|
|
|
- pub pens: Vec<Pen>,
|
|
|
-}
|
|
|
-
|
|
|
#[derive(BinRead, BinWrite, Debug)]
|
|
|
-pub struct Pen {
|
|
|
- #[br(assert(field_count == 236))]
|
|
|
- pub field_count: u32,
|
|
|
- pub color: Color,
|
|
|
- pub name: WString,
|
|
|
- pub disabled: U32,
|
|
|
- pub use_default: U32,
|
|
|
- pub loop_count: U32,
|
|
|
- pub speed: Double,
|
|
|
- pub power: Double,
|
|
|
- pub frequency: U32,
|
|
|
- _unknown_1: Field,
|
|
|
- pub start_tc: U32,
|
|
|
- pub end_tc: U32,
|
|
|
- pub polygon_tc: U32,
|
|
|
- pub jump_speed: Double,
|
|
|
- _unknown_2: [Field; 10],
|
|
|
- pub laser_off_tc: U32,
|
|
|
- pub wave: U32,
|
|
|
- _unknown_3: Field,
|
|
|
- pub wobble_enable: U32,
|
|
|
- pub wobble_diameter: Double,
|
|
|
- pub wobble_distance: Double,
|
|
|
- _unknown_4: [Field; 8],
|
|
|
- pub min_jump_tc: U32,
|
|
|
- pub max_jump_tc: U32,
|
|
|
- pub jump_limit: Double,
|
|
|
- _unknown_5: [Field; 2],
|
|
|
- pub frequency_2: Double,
|
|
|
- _unknown_6: [Field; 152],
|
|
|
- pub wobble_type: U32,
|
|
|
- pub continue_mode: U32,
|
|
|
- _unknown_7: [Field; 12],
|
|
|
- pub wobble_diameter_2: Double,
|
|
|
- _unknown_8: [Field; 26],
|
|
|
+pub struct LayerHeader {
|
|
|
+ pub layer_count: u32,
|
|
|
+ #[br(count = layer_count)]
|
|
|
+ pub layers: Vec<Layer>,
|
|
|
}
|
|
|
|
|
|
#[derive(BinRead, BinWrite, Debug)]
|
|
|
-pub struct Layers {}
|
|
|
-
|
|
|
-// #[binread]
|
|
|
-// #[derive(Debug)]
|
|
|
-// pub struct File {
|
|
|
-// header: Header,
|
|
|
-
|
|
|
-// #[br(count = 40000)] // 200x200?
|
|
|
-// thumbnail: Vec<u32>,
|
|
|
-// _padding: u32,
|
|
|
-
|
|
|
-// // #[br(temp)]
|
|
|
-// // #[bw(try_calc(u32::try_from(pens.len())))]
|
|
|
-// pen_count: u32, // Number of pens
|
|
|
-// pen_offset: u64, // Offset from start of file of pens (should immediately follow this)
|
|
|
-
|
|
|
-// // #[br(count = pen_count)]
|
|
|
-// // pens: Vec<ArrayOf<Field>>,
|
|
|
-// }
|
|
|
+pub struct Layer {}
|