summaryrefslogtreecommitdiff
path: root/src/lib/player.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2022-04-28 13:47:57 +0200
committerCarl Hetherington <cth@carlh.net>2022-04-28 13:47:57 +0200
commita1d11f2e9cc3678bd68b95c0e444c8245ef776b5 (patch)
tree12ce72513712ed36af1a89c3384cf8bf25ca202b /src/lib/player.cc
parent8cabf6045c7b101fda647ed65db6a9066b8a0efd (diff)
Allow ContentBitmapText to contain multiple BitmapText objects.
Diffstat (limited to 'src/lib/player.cc')
-rw-r--r--src/lib/player.cc43
1 files changed, 23 insertions, 20 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc
index 981078636..619a3583c 100644
--- a/src/lib/player.cc
+++ b/src/lib/player.cc
@@ -1104,32 +1104,35 @@ Player::bitmap_text_start (weak_ptr<Piece> weak_piece, weak_ptr<const TextConten
return;
}
- /* Apply content's subtitle offsets */
- subtitle.sub.rectangle.x += content->x_offset ();
- subtitle.sub.rectangle.y += content->y_offset ();
+ PlayerText ps;
+ for (auto& sub: subtitle.subs)
+ {
+ /* Apply content's subtitle offsets */
+ sub.rectangle.x += content->x_offset ();
+ sub.rectangle.y += content->y_offset ();
- /* Apply a corrective translation to keep the subtitle centred after the scale that is coming up */
- subtitle.sub.rectangle.x -= subtitle.sub.rectangle.width * ((content->x_scale() - 1) / 2);
- subtitle.sub.rectangle.y -= subtitle.sub.rectangle.height * ((content->y_scale() - 1) / 2);
+ /* Apply a corrective translation to keep the subtitle centred after the scale that is coming up */
+ sub.rectangle.x -= sub.rectangle.width * ((content->x_scale() - 1) / 2);
+ sub.rectangle.y -= sub.rectangle.height * ((content->y_scale() - 1) / 2);
- /* Apply content's subtitle scale */
- subtitle.sub.rectangle.width *= content->x_scale ();
- subtitle.sub.rectangle.height *= content->y_scale ();
+ /* Apply content's subtitle scale */
+ sub.rectangle.width *= content->x_scale ();
+ sub.rectangle.height *= content->y_scale ();
- PlayerText ps;
- auto image = subtitle.sub.image;
+ auto image = sub.image;
- /* We will scale the subtitle up to fit _video_container_size */
- int const width = subtitle.sub.rectangle.width * _video_container_size.width;
- int const height = subtitle.sub.rectangle.height * _video_container_size.height;
- if (width == 0 || height == 0) {
- return;
- }
+ /* We will scale the subtitle up to fit _video_container_size */
+ int const width = sub.rectangle.width * _video_container_size.width;
+ int const height = sub.rectangle.height * _video_container_size.height;
+ if (width == 0 || height == 0) {
+ return;
+ }
- dcp::Size scaled_size (width, height);
- ps.bitmap.push_back (BitmapText(image->scale(scaled_size, dcp::YUVToRGB::REC601, image->pixel_format(), Image::Alignment::PADDED, _fast), subtitle.sub.rectangle));
- DCPTime from (content_time_to_dcp (piece, subtitle.from()));
+ dcp::Size scaled_size (width, height);
+ ps.bitmap.push_back (BitmapText(image->scale(scaled_size, dcp::YUVToRGB::REC601, image->pixel_format(), Image::Alignment::PADDED, _fast), sub.rectangle));
+ }
+ DCPTime from(content_time_to_dcp(piece, subtitle.from()));
_active_texts[static_cast<int>(content->type())].add_from(weak_content, ps, from);
}