swf_types/
movie.rs

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