{
public:
/** BitmapTexts, with their rectangles transformed as specified by their content */
- std::list<BitmapText> bitmap;
- std::list<StringText> string;
+ std::vector<BitmapText> bitmap;
+ std::vector<StringText> string;
};
using std::cerr;
using std::cout;
-using std::list;
using std::make_pair;
using std::make_shared;
using std::max;
using std::pair;
using std::shared_ptr;
using std::string;
+using std::vector;
using boost::optional;
using namespace dcpomatic;
string
-marked_up (list<StringText> subtitles, int target_height, float fade_factor, string font_name)
+marked_up(vector<StringText> subtitles, int target_height, float fade_factor, string font_name)
{
auto constexpr pixels_to_1024ths_point = 72 * 1024 / 96;
* at the same time and with the same fade in/out.
*/
static Layout
-setup_layout(list<StringText> subtitles, dcp::Size target, DCPTime time, int frame_rate)
+setup_layout(vector<StringText> subtitles, dcp::Size target, DCPTime time, int frame_rate)
{
DCPOMATIC_ASSERT(!subtitles.empty());
auto const& first = subtitles.front();
* at the same time and with the same fade in/out.
*/
static PositionImage
-render_line (list<StringText> subtitles, dcp::Size target, DCPTime time, int frame_rate)
+render_line(vector<StringText> subtitles, dcp::Size target, DCPTime time, int frame_rate)
{
/* XXX: this method can only handle italic / bold changes mid-line,
nothing else yet.
* @param target Size of the container that this subtitle will end up in.
* @param frame_rate DCP frame rate.
*/
-list<PositionImage>
-render_text (list<StringText> subtitles, dcp::Size target, DCPTime time, int frame_rate)
+vector<PositionImage>
+render_text(vector<StringText> subtitles, dcp::Size target, DCPTime time, int frame_rate)
{
- list<StringText> pending;
- list<PositionImage> images;
+ vector<StringText> pending;
+ vector<PositionImage> images;
for (auto const& i: subtitles) {
if (!pending.empty() && (i.v_align() != pending.back().v_align() || fabs(i.v_position() - pending.back().v_position()) > 1e-4)) {
}
-list<dcpomatic::Rect<int>>
-bounding_box(list<StringText> subtitles, dcp::Size target, optional<dcp::SubtitleStandard> override_standard)
+vector<dcpomatic::Rect<int>>
+bounding_box(vector<StringText> subtitles, dcp::Size target, optional<dcp::SubtitleStandard> override_standard)
{
- list<StringText> pending;
- list<dcpomatic::Rect<int>> rects;
+ vector<StringText> pending;
+ vector<dcpomatic::Rect<int>> rects;
auto use_pending = [&pending, &rects, target, override_standard]() {
auto const& subtitle = pending.front();
}
-std::string marked_up (std::list<StringText> subtitles, int target_height, float fade_factor, std::string font_name);
-std::list<PositionImage> render_text (std::list<StringText>, dcp::Size, dcpomatic::DCPTime, int);
-std::list<dcpomatic::Rect<int>> bounding_box(std::list<StringText> subtitles, dcp::Size target, boost::optional<dcp::SubtitleStandard> override_standard = boost::none);
+std::string marked_up(std::vector<StringText> subtitles, int target_height, float fade_factor, std::string font_name);
+std::vector<PositionImage> render_text(std::vector<StringText>, dcp::Size, dcpomatic::DCPTime, int);
+std::vector<dcpomatic::Rect<int>> bounding_box(std::vector<StringText> subtitles, dcp::Size target, boost::optional<dcp::SubtitleStandard> override_standard = boost::none);
class FontMetrics
#if defined(DCPOMATIC_WINDOWS) || defined(DCPOMATIC_OSX)
/* Render something to fontconfig to create its cache */
- list<StringText> subs;
+ vector<StringText> subs;
dcp::SubtitleString ss(
optional<string>(), false, false, false, dcp::Colour(), 42, 1, dcp::Time(), dcp::Time(), 0, dcp::HAlign::CENTER, 0, dcp::VAlign::CENTER, 0, dcp::Direction::LTR,
"Hello dolly", dcp::Effect::NONE, dcp::Colour(), dcp::Time(), dcp::Time(), 0
_lines[j] = "";
}
- to_show.sort (ClosedCaptionSorter());
+ std::sort(to_show.begin(), to_show.end(), ClosedCaptionSorter());
auto j = to_show.begin();
int k = 0;
static void
-add (std::list<StringText>& s, std::string text, bool italic, bool bold, bool underline)
+add(std::vector<StringText>& s, std::string text, bool italic, bool bold, bool underline)
{
s.push_back (
StringText (
BOOST_AUTO_TEST_CASE (marked_up_test1)
{
- std::list<StringText> s;
+ std::vector<StringText> s;
add (s, "Hello", false, false, false);
BOOST_CHECK_EQUAL(marked_up(s, 1024, 1, ""), "<span size=\"41705\" alpha=\"65535\" color=\"#FFFFFF\">Hello</span>");
}
BOOST_AUTO_TEST_CASE (marked_up_test2)
{
- std::list<StringText> s;
+ std::vector<StringText> s;
add (s, "Hello", false, true, false);
BOOST_CHECK_EQUAL(marked_up(s, 1024, 1, ""), "<span weight=\"bold\" size=\"41705\" alpha=\"65535\" color=\"#FFFFFF\">Hello</span>");
}
BOOST_AUTO_TEST_CASE (marked_up_test3)
{
- std::list<StringText> s;
+ std::vector<StringText> s;
add (s, "Hello", true, true, false);
BOOST_CHECK_EQUAL(marked_up(s, 1024, 1, ""), "<span style=\"italic\" weight=\"bold\" size=\"41705\" alpha=\"65535\" color=\"#FFFFFF\">Hello</span>");
}
BOOST_AUTO_TEST_CASE (marked_up_test4)
{
- std::list<StringText> s;
+ std::vector<StringText> s;
add (s, "Hello", true, true, true);
BOOST_CHECK_EQUAL(marked_up(s, 1024, 1, ""), "<span style=\"italic\" weight=\"bold\" underline=\"single\" size=\"41705\" alpha=\"65535\" color=\"#FFFFFF\">Hello</span>");
}
BOOST_AUTO_TEST_CASE (marked_up_test5)
{
- std::list<StringText> s;
+ std::vector<StringText> s;
add (s, "Hello", false, true, false);
add (s, " world.", false, false, false);
BOOST_CHECK_EQUAL (marked_up(s, 1024, 1, ""), "<span weight=\"bold\" size=\"41705\" alpha=\"65535\" color=\"#FFFFFF\">Hello</span><span size=\"41705\" alpha=\"65535\" color=\"#FFFFFF\"> world.</span>");
BOOST_AUTO_TEST_CASE (marked_up_test6)
{
- std::list<StringText> s;
+ std::vector<StringText> s;
add (s, "Hello", true, false, false);
add (s, " world ", false, false, false);
add (s, "we are bold.", false, true, false);