Shaka Player Embedded
vtt_cue_public.cc
Go to the documentation of this file.
1 // Copyright 2018 Google LLC
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // https://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #include <cmath>
16 
17 #include "shaka/media/vtt_cue.h"
18 
19 namespace shaka {
20 namespace media {
21 
22 VTTCue::VTTCue(double start_time, double end_time, const std::string& text)
23  : text_(text),
24  start_time_(start_time),
25  end_time_(end_time),
26  line_(NAN),
27  position_(NAN),
28  size_(100),
29  vertical_(DirectionSetting::Horizontal),
30  line_align_(LineAlignSetting::Start),
31  position_align_(PositionAlignSetting::Auto),
32  align_(AlignSetting::Center),
33  snap_to_lines_(true),
34  pause_on_exit_(false) {}
35 
37  : id_(cue.id_),
38  text_(cue.text_),
39  start_time_(cue.start_time_),
40  end_time_(cue.end_time_),
41  line_(cue.line_),
42  position_(cue.position_),
43  size_(cue.size_),
44  vertical_(cue.vertical_),
45  line_align_(cue.line_align_),
46  position_align_(cue.position_align_),
47  align_(cue.align_),
48  snap_to_lines_(cue.snap_to_lines_),
49  pause_on_exit_(cue.pause_on_exit_) {}
50 
52  : id_(std::move(cue.id_)),
53  text_(std::move(cue.text_)),
54  start_time_(cue.start_time_),
55  end_time_(cue.end_time_),
56  line_(cue.line_),
57  position_(cue.position_),
58  size_(cue.size_),
59  vertical_(cue.vertical_),
60  line_align_(cue.line_align_),
61  position_align_(cue.position_align_),
62  align_(cue.align_),
63  snap_to_lines_(cue.snap_to_lines_),
64  pause_on_exit_(cue.pause_on_exit_) {}
65 
66 VTTCue::~VTTCue() {}
67 
69  *this = VTTCue(cue); // Use move-assignment and copy-constructor.
70  return *this;
71 }
72 
74  id_ = std::move(cue.id_);
75  text_ = std::move(cue.text_);
76  start_time_ = cue.start_time_;
77  end_time_ = cue.end_time_;
78  line_ = cue.line_;
79  position_ = cue.position_;
80  size_ = cue.size_;
81  vertical_ = cue.vertical_;
82  line_align_ = cue.line_align_;
83  position_align_ = cue.position_align_;
84  align_ = cue.align_;
85  pause_on_exit_ = cue.pause_on_exit_;
86  snap_to_lines_ = cue.snap_to_lines_;
87  return *this;
88 }
89 
90 std::string VTTCue::id() const {
91  std::unique_lock<std::mutex> lock(mutex_);
92  return id_;
93 }
94 
95 void VTTCue::SetId(const std::string& id) {
96  std::unique_lock<std::mutex> lock(mutex_);
97  id_ = id;
98 }
99 
100 double VTTCue::start_time() const {
101  std::unique_lock<std::mutex> lock(mutex_);
102  return start_time_;
103 }
104 
105 void VTTCue::SetStartTime(double time) {
106  std::unique_lock<std::mutex> lock(mutex_);
107  start_time_ = time;
108 }
109 
110 double VTTCue::end_time() const {
111  std::unique_lock<std::mutex> lock(mutex_);
112  return end_time_;
113 }
114 
115 void VTTCue::SetEndTime(double time) {
116  std::unique_lock<std::mutex> lock(mutex_);
117  end_time_ = time;
118 }
119 
120 bool VTTCue::pause_on_exit() const {
121  std::unique_lock<std::mutex> lock(mutex_);
122  return pause_on_exit_;
123 }
124 
125 void VTTCue::SetPauseOnExit(bool pause) {
126  std::unique_lock<std::mutex> lock(mutex_);
127  pause_on_exit_ = pause;
128 }
129 
131  std::unique_lock<std::mutex> lock(mutex_);
132  return vertical_;
133 }
134 
136  std::unique_lock<std::mutex> lock(mutex_);
137  vertical_ = setting;
138 }
139 
140 bool VTTCue::snap_to_lines() const {
141  std::unique_lock<std::mutex> lock(mutex_);
142  return snap_to_lines_;
143 }
144 
145 void VTTCue::SetSnapToLines(bool snap) {
146  std::unique_lock<std::mutex> lock(mutex_);
147  snap_to_lines_ = snap;
148 }
149 
151  std::unique_lock<std::mutex> lock(mutex_);
152  return line_align_;
153 }
154 
156  std::unique_lock<std::mutex> lock(mutex_);
157  line_align_ = align;
158 }
159 
160 double VTTCue::line() const {
161  std::unique_lock<std::mutex> lock(mutex_);
162  return line_;
163 }
164 
165 void VTTCue::SetLine(double line) {
166  std::unique_lock<std::mutex> lock(mutex_);
167  line_ = line;
168 }
169 
170 double VTTCue::position() const {
171  std::unique_lock<std::mutex> lock(mutex_);
172  return position_;
173 }
174 
176  std::unique_lock<std::mutex> lock(mutex_);
177  position_ = position;
178 }
179 
181  std::unique_lock<std::mutex> lock(mutex_);
182  return position_align_;
183 }
184 
186  std::unique_lock<std::mutex> lock(mutex_);
187  position_align_ = align;
188 }
189 
190 double VTTCue::size() const {
191  std::unique_lock<std::mutex> lock(mutex_);
192  return size_;
193 }
194 
195 void VTTCue::SetSize(double size) {
196  std::unique_lock<std::mutex> lock(mutex_);
197  size_ = size;
198 }
199 
201  std::unique_lock<std::mutex> lock(mutex_);
202  return align_;
203 }
204 
206  std::unique_lock<std::mutex> lock(mutex_);
207  align_ = align;
208 }
209 
210 std::string VTTCue::text() const {
211  std::unique_lock<std::mutex> lock(mutex_);
212  return text_;
213 }
214 
215 void VTTCue::SetText(const std::string& text) {
216  std::unique_lock<std::mutex> lock(mutex_);
217  text_ = text;
218 }
219 
220 } // namespace media
221 } // namespace shaka
void SetLineAlign(LineAlignSetting align)
void SetPositionAlign(PositionAlignSetting align)
std::string id() const
void SetEndTime(double time)
void SetPauseOnExit(bool pause)
std::string text() const
DirectionSetting
Definition: vtt_cue.h:31
void SetSize(double size)
void SetPosition(double position)
LineAlignSetting
Definition: vtt_cue.h:58
void SetText(const std::string &text)
PositionAlignSetting position_align() const
void SetAlign(AlignSetting align)
double position() const
void SetId(const std::string &id)
double end_time() const
AlignSetting align() const
void SetVertical(DirectionSetting setting)
VTTCue(double start_time, double end_time, const std::string &text)
VTTCue & operator=(const VTTCue &cue)
void SetStartTime(double time)
bool pause_on_exit() const
void SetLine(double line)
LineAlignSetting line_align() const
void SetSnapToLines(bool snap)
double start_time() const
PositionAlignSetting
Definition: vtt_cue.h:82
bool snap_to_lines() const
DirectionSetting vertical() const