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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
// Documents Flump's JSON format and adds some type-safety to parsing
pub struct Format {
// A checksum of the original FLA library used to generate this file, used by the exporter tool
// to detect modifications
pub md5: String,
// The frame rate
pub frame_rate: f32,
// All the movies and atlases in the library
pub movies: Vec<MovieFormat>,
pub texture_groups: Vec<TextureGroupFormat>,
}
pub struct TextureGroupFormat {
// The additional scale factor (not supported, use different base scales instead)
pub scale_factor: f32,
// The atlases in this scale group
pub atlases: Vec<AtlasFormat>,
}
#[derive(Default, Clone, Debug)]
pub struct MovieFormat {
// The symbol name of this movie
// TODO -> Why not call it symbol? Movies share the same namespace as textures
pub id: Option<String>,
pub layers: Vec<LayerFormat>,
}
#[derive(Default, Clone, Debug)]
pub struct LayerFormat {
// The name of the layer
pub name: String,
// Optional: Whether this is a flipbook-style animation. Defaults to false
pub flipbook: Option<bool>,
pub keyframes: Vec<KeyframeFormat>,
}
#[derive(Default, Clone, Debug)]
pub struct KeyframeFormat {
// The number of frames until the next keyframe
pub duration: usize,
// Optional: The name of the symbol that should be shown at this keyframe
pub ref_: Option<String>,
// Optional: Transform [x, y] properties. Defaults to [0, 0]
pub loc: Option<Vec<f32>>,
// Optional: Transform [scaleX, scaleY] properties. Defaults to [1, 1]
pub scale: Option<Vec<f32>>,
// Optional: Transform [skewX, skewY] in radians. Defaults to 0
pub skew: Option<Vec<f32>>,
// Optional: The anchor point [x, y]. Defaults to [0, 0]
pub pivot: Option<Vec<f32>>,
// Optional: Symbol alpha. Defaults to 1.0
pub alpha: Option<f32>,
// Optional: The frame label that was added to this keyframe
pub label: Option<String>,
// Optional: Whether this keyframe should be displayed. Defaults to true
pub visible: Option<bool>,
// Optional: Whether this keyframe is tweened into the next. Defaults to true
pub tweened: Option<bool>,
// Optional: Easing factor to tween this keyframe's properties, from -1.0 to 1.0. Defaults to 0
pub ease: Option<f32>,
}
#[derive(Default, Clone, Debug)]
pub struct AtlasFormat {
// The path to the atlas
pub file: String,
// The textures packed in this atlas
pub textures: Vec<TextureFormat>,
}
#[derive(Default, Clone, Debug)]
pub struct TextureFormat {
// The symbol name of this texture
pub symbol: Option<String>,
// The bitmap's anchor point, relative to the top left of its rect
pub origin: Option<Vec<f32>>,
// The rectangle bounding the texture in its atlas
pub rect: Vec<i32>,
}