rpkg_rs/resource/
resource_info.rs1use super::resource_package::*;
2use crate::resource::runtime_resource_id::RuntimeResourceID;
3use std::fmt;
4
5#[derive(Clone)]
6pub struct ResourceInfo {
7 pub(crate) entry: PackageOffsetInfo,
8 pub(crate) header: ResourceHeader,
9}
10
11impl ResourceInfo {
12 pub fn size(&self) -> u32 {
13 self.header.data_size
14 }
15
16 pub fn rrid(&self) -> &RuntimeResourceID {
17 &self.entry.runtime_resource_id
18 }
19
20 pub fn data_type(&self) -> String {
21 String::from_utf8_lossy(&self.header.resource_type)
22 .into_owned()
23 .chars()
24 .rev()
25 .collect()
26 }
27 pub fn references(&self) -> &Vec<(RuntimeResourceID, ResourceReferenceFlags)> {
28 &self.header.references
29 }
30 pub fn system_memory_requirement(&self) -> u32 {
31 self.header.system_memory_requirement
32 }
33
34 pub fn video_memory_requirement(&self) -> u32 {
35 self.header.video_memory_requirement
36 }
37
38 pub fn is_compressed(&self) -> bool {
42 self.entry.compressed_size().is_some()
43 }
44
45 pub fn is_scrambled(&self) -> bool {
46 self.entry.is_scrambled()
47 }
48
49 pub fn compressed_size(&self) -> Option<u32> {
51 self.entry.compressed_size()
52 }
53
54 pub fn data_offset(&self) -> u64 {
55 self.entry.data_offset
56 }
57
58 pub fn states_chunk_size(&self) -> usize {
59 0
60 }
61
62 pub fn reference_chunk_size(&self) -> usize {
63 match &self.header.references.len() {
64 0 => 0x0,
65 n => 0x4 + (n * 0x9),
66 }
67 }
68}
69
70impl fmt::Display for ResourceInfo {
71 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
72 write!(
73 f,
74 "entry: {},\n\
75 header: {}\n",
76 self.entry, self.header
77 )
78 }
79}