pdf_ast/types/
reference.rs1use serde::{Deserialize, Serialize};
2use std::fmt;
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
5pub struct PdfReference {
6 pub object_number: u32,
7 pub generation_number: u16,
8}
9
10impl PdfReference {
11 pub fn new(object_number: u32, generation_number: u16) -> Self {
12 PdfReference {
13 object_number,
14 generation_number,
15 }
16 }
17
18 pub fn id(&self) -> ObjectId {
19 ObjectId {
20 number: self.object_number,
21 generation: self.generation_number,
22 }
23 }
24
25 pub fn number(&self) -> u32 {
26 self.object_number
27 }
28
29 pub fn generation(&self) -> u16 {
30 self.generation_number
31 }
32
33 pub fn object_id(&self) -> ObjectId {
34 self.id()
35 }
36}
37
38impl fmt::Display for PdfReference {
39 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
40 write!(f, "{} {} R", self.object_number, self.generation_number)
41 }
42}
43
44#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
45pub struct ObjectId {
46 pub number: u32,
47 pub generation: u16,
48}
49
50impl ObjectId {
51 pub fn new(number: u32, generation: u16) -> Self {
52 ObjectId { number, generation }
53 }
54
55 pub fn to_reference(&self) -> PdfReference {
56 PdfReference::new(self.number, self.generation)
57 }
58}
59
60impl fmt::Display for ObjectId {
61 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
62 write!(f, "{} {} obj", self.number, self.generation)
63 }
64}
65
66impl From<(u32, u16)> for ObjectId {
67 fn from((number, generation): (u32, u16)) -> Self {
68 ObjectId::new(number, generation)
69 }
70}
71
72impl From<ObjectId> for PdfReference {
73 fn from(id: ObjectId) -> Self {
74 id.to_reference()
75 }
76}
77
78impl From<PdfReference> for ObjectId {
79 fn from(reference: PdfReference) -> Self {
80 reference.id()
81 }
82}
83
84impl From<&PdfReference> for ObjectId {
85 fn from(reference: &PdfReference) -> Self {
86 reference.id()
87 }
88}
89
90impl From<&ObjectId> for PdfReference {
91 fn from(id: &ObjectId) -> Self {
92 id.to_reference()
93 }
94}