-
Notifications
You must be signed in to change notification settings - Fork 0
/
official_levels.go
103 lines (87 loc) · 2.95 KB
/
official_levels.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
98
99
100
101
102
103
package iiifimageapi
const (
ComplianceLevel0Name ComplianceLevelName = "level0"
ComplianceLevel0ProfileDocument string = "http://iiif.io/api/image/3/level0.json"
ComplianceLevel1Name ComplianceLevelName = "level1"
ComplianceLevel1ProfileDocument string = "http://iiif.io/api/image/3/level1.json"
ComplianceLevel2Name ComplianceLevelName = "level2"
ComplianceLevel2ProfileDocument string = "http://iiif.io/api/image/3/level2.json"
)
type officialComplianceLevelSpec struct {
name ComplianceLevelName
profileDocument string
baseFeatures FeatureNameList
baseQualities []string
baseFormats []string
}
func (cl officialComplianceLevelSpec) Name() ComplianceLevelName {
return cl.name
}
func (cl officialComplianceLevelSpec) ProfileDocument() string {
return cl.profileDocument
}
func (cl officialComplianceLevelSpec) BaseFeatures() FeatureNameList {
return cl.baseFeatures
}
func (cl officialComplianceLevelSpec) BaseQualities() []string {
return cl.baseQualities
}
func (cl officialComplianceLevelSpec) BaseFormats() []string {
return cl.baseFormats
}
var (
complianceLevel0Spec = &officialComplianceLevelSpec{
name: ComplianceLevel0Name,
profileDocument: ComplianceLevel0ProfileDocument,
baseQualities: []string{"default"},
baseFormats: []string{"jpg"},
}
complianceLevel1Spec = &officialComplianceLevelSpec{
name: ComplianceLevel1Name,
profileDocument: ComplianceLevel1ProfileDocument,
baseFeatures: FeatureNameList{
FeatureNameRegionByPx,
FeatureNameRegionSquare,
FeatureNameSizeByW,
FeatureNameSizeByH,
FeatureNameSizeByWh,
FeatureNameBaseUriRedirect,
FeatureNameCors,
FeatureNameJsonldMediaType,
},
baseQualities: []string{"default"},
baseFormats: []string{"jpg"},
}
complianceLevel2Spec = &officialComplianceLevelSpec{
name: ComplianceLevel2Name,
profileDocument: ComplianceLevel2ProfileDocument,
baseFeatures: FeatureNameList{
FeatureNameRegionByPx,
FeatureNameRegionByPct,
FeatureNameRegionSquare,
FeatureNameSizeByW,
FeatureNameSizeByH,
FeatureNameSizeByPct,
FeatureNameSizeByConfinedWh,
FeatureNameSizeByWh,
FeatureNameRotationBy90s,
FeatureNameBaseUriRedirect,
FeatureNameCors,
FeatureNameJsonldMediaType,
},
baseQualities: []string{"default", "color", "gray"},
baseFormats: []string{"jpg", "png"},
}
)
type officialComplianceLevels map[ComplianceLevelName]ComplianceLevelSpec
func (cl officialComplianceLevels) GetByName(name ComplianceLevelName) (ComplianceLevelSpec, bool) {
cls, ok := cl[name]
return cls, ok
}
// OfficialComplianceLevels is the official levels defined by the spec. [DefaultComplianceLevels] should typically
// be used instead.
var OfficialComplianceLevels = officialComplianceLevels{
ComplianceLevel0Name: complianceLevel0Spec,
ComplianceLevel1Name: complianceLevel1Spec,
ComplianceLevel2Name: complianceLevel2Spec,
}