pgs_parse/
pgs_segment_type.rs

1use std::fmt::Display;
2
3/// Represents the type of a segment in a Presentation Graphic Stream (PGS).
4#[derive(Debug, PartialEq, Clone, Copy)]
5pub enum PgsSegmentType {
6    /// Palette Definition Segment 
7    PDS = 0x14,
8    /// Object Definition Segment 
9	ODS = 0x15,
10    /// Presentation Composition Segment 
11	PCS = 0x16,
12    /// Window Definition Segment 
13	WDS = 0x17,
14    /// End of Display Set Segment 
15	END = 0x80,
16    /// Error in Segment
17	ERR = 0x00  
18}
19
20impl Display for PgsSegmentType {
21	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
22		match self {
23            PgsSegmentType::PDS => write!(f, "Palette Definition Segment"),
24            PgsSegmentType::ODS => write!(f, "Object Definition Segment"),
25            PgsSegmentType::PCS => write!(f, "Presentation Composition Segment"),
26            PgsSegmentType::WDS => write!(f, "Window Definition Segment"),
27            PgsSegmentType::END => write!(f, "End of Display Set Segment"),
28            PgsSegmentType::ERR => write!(f, "Error in Segment"),
29        }
30	}
31}
32
33impl From<u8> for PgsSegmentType {
34    /// Converts a `u8` value to a `PgsSegmentType`.
35    ///
36    /// # Parameters
37    /// - `value`: The `u8` value representing the segment type.
38    ///
39    /// # Returns
40    /// The corresponding `PgsSegmentType`. Returns `PgsSegmentType::ERR` for unknown values.
41	fn from(value: u8) -> Self {
42		match value {
43			0x14 => PgsSegmentType::PDS,
44			0x15 => PgsSegmentType::ODS,
45			0x16 => PgsSegmentType::PCS,
46			0x17 => PgsSegmentType::WDS,
47			0x80 => PgsSegmentType::END,
48			_ => PgsSegmentType::ERR
49        }
50	}
51}