tex_packer_core/
export.rs1use crate::export_manifest::ExportManifest;
2use crate::model::Atlas;
3use serde::Serialize;
4use serde_json::{Value, json};
5
6pub fn to_json_array<K: ToString + Clone + Serialize>(atlas: &Atlas<K>) -> Value {
9 let manifest = ExportManifest::from_atlas(atlas);
10 let pages_val = manifest
11 .pages
12 .iter()
13 .map(|page| {
14 let frames_val: Vec<Value> = page
15 .frames
16 .iter()
17 .map(|frame| {
18 json!({
19 "key": frame.key,
20 "frame": frame.frame_value(),
21 "rotated": frame.rotated,
22 "trimmed": frame.trimmed,
23 "spriteSourceSize": frame.sprite_source_size_value(),
24 "sourceSize": frame.source_size_value(),
25 "pivot": frame.pivot_value()
26 })
27 })
28 .collect();
29 json!({
30 "id": page.id,
31 "width": page.width,
32 "height": page.height,
33 "frames": frames_val,
34 })
35 })
36 .collect::<Vec<_>>();
37 json!({"pages": pages_val, "meta": &manifest.meta})
38}
39
40pub fn to_json_hash<K: ToString + Clone>(atlas: &Atlas<K>) -> Value {
44 let manifest = ExportManifest::from_atlas(atlas);
45 let mut frames = serde_json::Map::new();
46 for page in &manifest.pages {
47 for frame in &page.frames {
48 frames.insert(
49 frame.key.clone(),
50 json!({
51 "frame": frame.frame_value(),
52 "rotated": frame.rotated,
53 "trimmed": frame.trimmed,
54 "spriteSourceSize": frame.sprite_source_size_value(),
55 "sourceSize": frame.source_size_value(),
56 "pivot": frame.pivot_value(),
57 "page": frame.page,
58 "pageSize": frame.page_size_value(),
59 }),
60 );
61 }
62 }
63 json!({ "frames": frames, "meta": &manifest.meta })
64}