#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum MtefRecordType {
Line = 1,
Char = 2,
Tmpl = 3,
Pile = 4,
Matrix = 5,
Embell = 6,
Ruler = 7,
Size = 9,
Full = 10,
Sub = 11,
Sub2 = 12,
Sym = 13,
SubSym = 14,
Color = 15,
ColorDef = 16,
FontDef = 17,
Font = 18,
EqnPrefs = 19,
EncodingDef = 20,
Future = 255,
}
#[derive(Debug)]
pub struct MtefObjectList {
pub tag: MtefRecordType,
pub obj_ptr: Box<dyn MtefObject>,
pub next: Option<Box<MtefObjectList>>,
}
pub trait MtefObject: std::fmt::Debug {
fn as_any(&self) -> &dyn std::any::Any;
}
#[derive(Debug)]
pub struct MtefChar {
#[allow(dead_code)]
pub nudge_x: i16,
#[allow(dead_code)]
pub nudge_y: i16,
#[allow(dead_code)]
pub atts: u8,
pub typeface: u8,
pub character: u16,
#[allow(dead_code)]
pub bits16: u16,
pub embellishment_list: Option<Box<MtefEmbell>>,
}
impl MtefObject for MtefChar {
fn as_any(&self) -> &dyn std::any::Any { self }
}
#[derive(Debug)]
pub struct MtefEmbell {
#[allow(dead_code)]
pub nudge_x: i16,
#[allow(dead_code)]
pub nudge_y: i16,
pub embell: u8,
pub next: Option<Box<MtefEmbell>>,
}
impl MtefObject for MtefEmbell {
fn as_any(&self) -> &dyn std::any::Any { self }
}
#[derive(Debug)]
pub struct MtefTemplate {
#[allow(dead_code)]
pub nudge_x: i16,
#[allow(dead_code)]
pub nudge_y: i16,
pub selector: u8,
pub variation: u16,
#[allow(dead_code)]
pub options: u8,
pub subobject_list: Option<Box<MtefObjectList>>,
}
impl MtefObject for MtefTemplate {
fn as_any(&self) -> &dyn std::any::Any { self }
}
#[derive(Debug)]
pub struct MtefLine {
#[allow(dead_code)]
pub nudge_x: i16,
#[allow(dead_code)]
pub nudge_y: i16,
#[allow(dead_code)]
pub line_spacing: u8,
#[allow(dead_code)]
pub ruler: Option<Box<MtefRuler>>,
pub object_list: Option<Box<MtefObjectList>>,
}
impl MtefObject for MtefLine {
fn as_any(&self) -> &dyn std::any::Any { self }
}
#[derive(Debug)]
pub struct MtefRuler {
#[allow(dead_code)]
pub n_stops: i16,
#[allow(dead_code)]
pub tabstop_list: Option<Box<MtefTabstop>>,
}
impl MtefObject for MtefRuler {
fn as_any(&self) -> &dyn std::any::Any { self }
}
#[derive(Debug)]
pub struct MtefTabstop {
#[allow(dead_code)]
pub r#type: i16,
#[allow(dead_code)]
pub offset: i16,
pub next: Option<Box<MtefTabstop>>,
}
impl MtefObject for MtefTabstop {
fn as_any(&self) -> &dyn std::any::Any { self }
}
#[derive(Debug)]
pub struct MtefPile {
#[allow(dead_code)]
pub nudge_x: i16,
#[allow(dead_code)]
pub nudge_y: i16,
#[allow(dead_code)]
pub halign: u8,
#[allow(dead_code)]
pub valign: u8,
#[allow(dead_code)]
pub ruler: Option<Box<MtefRuler>>,
pub line_list: Option<Box<MtefObjectList>>,
}
impl MtefObject for MtefPile {
fn as_any(&self) -> &dyn std::any::Any { self }
}
#[derive(Debug)]
pub struct MtefMatrix {
#[allow(dead_code)]
pub nudge_x: i16,
#[allow(dead_code)]
pub nudge_y: i16,
#[allow(dead_code)]
pub valign: u8,
#[allow(dead_code)]
pub h_just: u8,
#[allow(dead_code)]
pub v_just: u8,
pub rows: u8,
pub cols: u8,
#[allow(dead_code)]
pub row_parts: [u8; 16],
#[allow(dead_code)]
pub col_parts: [u8; 16],
pub element_list: Option<Box<MtefObjectList>>,
}
impl MtefObject for MtefMatrix {
fn as_any(&self) -> &dyn std::any::Any { self }
}
#[derive(Debug)]
pub struct MtefFont {
#[allow(dead_code)]
pub tface: i32,
#[allow(dead_code)]
pub style: i32,
#[allow(dead_code)]
pub zname: String,
}
impl MtefObject for MtefFont {
fn as_any(&self) -> &dyn std::any::Any { self }
}
#[derive(Debug)]
pub struct MtefSize {
#[allow(dead_code)]
pub r#type: i32,
#[allow(dead_code)]
pub lsize: i32,
#[allow(dead_code)]
pub dsize: i32,
}
impl MtefObject for MtefSize {
fn as_any(&self) -> &dyn std::any::Any { self }
}