/
stats.go
97 lines (89 loc) · 1.79 KB
/
stats.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package types
// The PDF root object fields.
const (
RootVersion = iota
RootExtensions
RootPageLabels
RootNames
RootDests
RootViewerPrefs
RootPageLayout
RootPageMode
RootOutlines
RootThreads
RootOpenAction
RootAA
RootURI
RootAcroForm
RootMetadata
RootStructTreeRoot
RootMarkInfo
RootLang
RootSpiderInfo
RootOutputIntents
RootPieceInfo
RootOCProperties
RootPerms
RootLegal
RootRequirements
RootCollection
RootNeedsRendering
)
// The PDF page object fields.
const (
PageLastModified = iota
PageResources
PageMediaBox
PageCropBox
PageBleedBox
PageTrimBox
PageArtBox
PageBoxColorInfo
PageContents
PageRotate
PageGroup
PageThumb
PageB
PageDur
PageTrans
PageAnnots
PageAA
PageMetadata
PagePieceInfo
PageStructParents
PageID
PagePZ
PageSeparationInfo
PageTabs
PageTemplateInstantiated
PagePresSteps
PageUserUnit
PageVP
)
// PDFStats is a container for stats.
type PDFStats struct {
// Used root attributes
rootAttrs IntSet
// Used page attributes
pageAttrs IntSet
}
// NewPDFStats returns a new PDFStats object.
func NewPDFStats() PDFStats {
return PDFStats{rootAttrs: IntSet{}, pageAttrs: IntSet{}}
}
// AddRootAttr adds the occurrence of a field with given name to the rootAttrs set.
func (stats PDFStats) AddRootAttr(name int) {
stats.rootAttrs[name] = true
}
// UsesRootAttr returns true if a field with given name is contained in the rootAttrs set.
func (stats PDFStats) UsesRootAttr(name int) bool {
return stats.rootAttrs[name]
}
// AddPageAttr adds the occurrence of a field with given name to the pageAttrs set.
func (stats PDFStats) AddPageAttr(name int) {
stats.pageAttrs[name] = true
}
// UsesPageAttr returns true if a field with given name is contained in the pageAttrs set.
func (stats PDFStats) UsesPageAttr(name int) bool {
return stats.pageAttrs[name]
}