blob: 137d359f9cf936fb155ffaea203d19897778e10d (
plain)
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
104
105
106
107
108
109
|
#include <iostream>
#include "cpl.h"
using namespace std;
using namespace libdcp;
CPL::CPL (string file)
: XMLFile (file, "CompositionPlaylist")
{
id = string_node ("Id");
annotation_text = optional_string_node ("AnnotationText");
issue_date = string_node ("IssueDate");
creator = string_node ("Creator");
content_title_text = string_node ("ContentTitleText");
content_kind = kind_node ("ContentKind");
content_version = optional_sub_node<ContentVersion> ("ContentVersion");
ignore_node ("RatingList");
reels = sub_nodes<Reel> ("ReelList", "Reel");
ignore_node ("Issuer");
ignore_node ("Signer");
ignore_node ("Signature");
done ();
}
ContentVersion::ContentVersion (xmlpp::Node const * node)
: XMLNode (node)
{
id = string_node ("Id");
label_text = string_node ("LabelText");
done ();
}
Reel::Reel (xmlpp::Node const * node)
: XMLNode (node)
{
id = string_node ("Id");
asset_list = sub_node<CPLAssetList> ("AssetList");
done ();
}
CPLAssetList::CPLAssetList (xmlpp::Node const * node)
: XMLNode (node)
{
main_picture = sub_node<MainPicture> ("MainPicture");
main_sound = optional_sub_node<MainSound> ("MainSound");
main_subtitle = optional_sub_node<MainSubtitle> ("MainSubtitle");
done ();
}
MainPicture::MainPicture (xmlpp::Node const * node)
: XMLNode (node)
{
id = string_node ("Id");
annotation_text = optional_string_node ("AnnotationText");
edit_rate = fraction_node ("EditRate");
intrinsic_duration = int64_node ("IntrinsicDuration");
entry_point = int64_node ("EntryPoint");
duration = int64_node ("Duration");
frame_rate = fraction_node ("FrameRate");
try {
screen_aspect_ratio = fraction_node ("ScreenAspectRatio");
} catch (XMLError& e) {
/* Maybe it's not a fraction */
}
try {
float f = float_node ("ScreenAspectRatio");
screen_aspect_ratio = Fraction (f * 1000, 1000);
} catch (bad_cast& e) {
}
ignore_node ("Hash");
done ();
}
MainSound::MainSound (xmlpp::Node const * node)
: XMLNode (node)
{
id = string_node ("Id");
annotation_text = optional_string_node ("AnnotationText");
edit_rate = fraction_node ("EditRate");
intrinsic_duration = int64_node ("IntrinsicDuration");
entry_point = int64_node ("EntryPoint");
duration = int64_node ("Duration");
ignore_node ("Hash");
done ();
}
MainSubtitle::MainSubtitle (xmlpp::Node const * node)
: XMLNode (node)
{
id = string_node ("Id");
annotation_text = optional_string_node ("AnnotationText");
edit_rate = fraction_node ("EditRate");
intrinsic_duration = int64_node ("IntrinsicDuration");
entry_point = int64_node ("EntryPoint");
duration = int64_node ("Duration");
ignore_node ("Hash");
done ();
}
|