swf_tree/
movie.rs

1use ::serde::{Deserialize, Serialize};
2
3use crate::basic_types::Rect;
4use crate::fixed::Ufixed8P8;
5use crate::Tag;
6
7#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
8#[serde(rename_all = "kebab-case")]
9pub enum CompressionMethod {
10  None,
11  Deflate,
12  Lzma,
13}
14
15#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
16#[serde(rename_all = "snake_case")]
17pub struct Header {
18  /// SWF version
19  pub swf_version: u8,
20  // Frame size in twips
21  pub frame_size: Rect,
22  pub frame_rate: Ufixed8P8,
23  pub frame_count: u16,
24}
25
26#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
27#[serde(rename_all = "snake_case")]
28pub struct Movie {
29  pub header: Header,
30  pub tags: Vec<Tag>,
31}
32
33/// The signature is the part of the header that is not compressed
34#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
35#[serde(rename_all = "snake_case")]
36pub struct SwfSignature {
37  /// The compression method used for the body of this SWF file
38  pub compression_method: CompressionMethod,
39  /// SWF version
40  pub swf_version: u8,
41  // Uncompressed SWF File length (including the header)
42  pub uncompressed_file_length: usize,
43}