using std::pair;
using std::shared_ptr;
using std::string;
+using boost::optional;
using namespace dcpomatic;
}
-static string
-setup_font(shared_ptr<const dcpomatic::Font> font)
-{
- auto font_file = default_font_file ();
-
- if (font && font->file()) {
- font_file = *font->file();
- }
-
- return FontConfig::instance()->make_font_available(font_file);
-}
-
-
static float
calculate_fade_factor (StringText const& first, DCPTime time, int frame_rate)
{
DCPOMATIC_ASSERT(!subtitles.empty());
auto const& first = subtitles.front();
- auto const font_name = setup_font(first.font);
+ auto const font_name = FontConfig::instance()->make_font_available(first.font);
auto const fade_factor = calculate_fade_factor(first, time, frame_rate);
auto const markup = marked_up(subtitles, target.height, fade_factor, font_name);
auto layout = create_layout(font_name, markup);
list<dcpomatic::Rect<int>>
-bounding_box(list<StringText> subtitles, dcp::Size target)
+bounding_box(list<StringText> subtitles, dcp::Size target, optional<dcp::SubtitleStandard> override_standard)
{
list<StringText> pending;
list<dcpomatic::Rect<int>> rects;
- auto use_pending = [&pending, &rects, target]() {
+ auto use_pending = [&pending, &rects, target, override_standard]() {
auto const& subtitle = pending.front();
+ auto standard = override_standard.get_value_or(subtitle.valign_standard);
/* We can provide dummy values for time and frame rate here as they are only used to calculate fades */
auto layout = setup_layout(pending, target, DCPTime(), 24);
int const x = x_position(subtitle.h_align(), subtitle.h_position(), target.width, layout.size.width);
- int const y = y_position(subtitle.valign_standard, subtitle.v_align(), subtitle.v_position(), target.height, layout.position.y, layout.size.height);
+ int const y = y_position(standard, subtitle.v_align(), subtitle.v_position(), target.height, layout.position.y, layout.size.height);
rects.push_back({Position<int>(x, y), layout.size.width, layout.size.height});
};
return iter;
}
- auto const font_name = setup_font(subtitle.font);
+ auto const font_name = FontConfig::instance()->make_font_available(subtitle.font);
auto copy = subtitle;
copy.set_text("Qypjg");
auto layout = create_layout(font_name, marked_up({copy}, _target_height, 1, font_name));