resource-fork-types 0.1.0

Support for reading common resource fork types in rust
Documentation
use binrw::BinRead;
use resource_fork::Resource;

use crate::common::{null_terminated_list, roman_char};

#[derive(Resource, BinRead, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[resource(code = "MENU")]
#[br(big)]
pub struct Menu {
    menu_id: u16,
    width: u16,
    height: u16,
    proc_id: u16,
    padding: u16,
    enabled_items: u32,
    #[br(map(macintosh_utils::string))]
    title: String,
    #[br(map(null_terminated_list))]
    items: Vec<MenuItem>,
}

#[derive(BinRead, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[br(big)]
pub struct MenuItem {
    #[br(map(macintosh_utils::string))]
    label: String,
    icon: u8,
    #[br(map(roman_char))]
    key_equivalent: Option<char>,
    #[br(map(roman_char))]
    mark_character: Option<char>,
    style: u8,
}