auto raw_name = name ();
+ auto to_upper = [](string s) {
+ transform(s.begin(), s.end(), s.begin(), ::toupper);
+ return s;
+ };
+
/* Split the raw name up into words */
vector<string> words;
split (words, raw_name, is_any_of (" _-"));
int const t = elapsed_sub_time ();
int const r = remaining_time ();
+ auto day_of_week_to_string = [](boost::gregorian::greg_weekday d) -> std::string {
+ switch (d.as_enum()) {
+ case boost::date_time::Sunday:
+ return _("Sunday");
+ case boost::date_time::Monday:
+ return _("Monday");
+ case boost::date_time::Tuesday:
+ return _("Tuesday");
+ case boost::date_time::Wednesday:
+ return _("Wednesday");
+ case boost::date_time::Thursday:
+ return _("Thursday");
+ case boost::date_time::Friday:
+ return _("Friday");
+ case boost::date_time::Saturday:
+ return _("Saturday");
+ }
+
+ return d.as_long_string();
+ };
+
string s;
if (!finished () && p) {
int pc = lrintf (p.get() * 100);
#include "job_manager.h"
#include "json_server.h"
#include "transcode_job.h"
-#include "util.h"
#include <dcp/raw_convert.h>
#include <boost/asio.hpp>
#include <boost/bind/bind.hpp>
}
+map<string, string>
+split_get_request(string url)
+{
+ enum {
+ AWAITING_QUESTION_MARK,
+ KEY,
+ VALUE
+ } state = AWAITING_QUESTION_MARK;
+
+ map<string, string> r;
+ string k;
+ string v;
+ for (size_t i = 0; i < url.length(); ++i) {
+ switch (state) {
+ case AWAITING_QUESTION_MARK:
+ if (url[i] == '?') {
+ state = KEY;
+ }
+ break;
+ case KEY:
+ if (url[i] == '=') {
+ v.clear();
+ state = VALUE;
+ } else {
+ k += url[i];
+ }
+ break;
+ case VALUE:
+ if (url[i] == '&') {
+ r.insert(make_pair(k, v));
+ k.clear ();
+ state = KEY;
+ } else {
+ v += url[i];
+ }
+ break;
+ }
+ }
+
+ if (state == VALUE) {
+ r.insert (make_pair (k, v));
+ }
+
+ return r;
+}
+
+
void
JSONServer::request (string url, shared_ptr<tcp::socket> socket)
{
}
+static
+Eyes
+increment_eyes (Eyes e)
+{
+ if (e == Eyes::LEFT) {
+ return Eyes::RIGHT;
+ }
+
+ return Eyes::LEFT;
+}
+
+
void
Player::video (weak_ptr<Piece> weak_piece, ContentVideo video)
{
return dcp::Size (full_frame.width, lrintf (full_frame.width / ratio));
}
-map<string, string>
-split_get_request (string url)
-{
- enum {
- AWAITING_QUESTION_MARK,
- KEY,
- VALUE
- } state = AWAITING_QUESTION_MARK;
-
- map<string, string> r;
- string k;
- string v;
- for (size_t i = 0; i < url.length(); ++i) {
- switch (state) {
- case AWAITING_QUESTION_MARK:
- if (url[i] == '?') {
- state = KEY;
- }
- break;
- case KEY:
- if (url[i] == '=') {
- v.clear ();
- state = VALUE;
- } else {
- k += url[i];
- }
- break;
- case VALUE:
- if (url[i] == '&') {
- r.insert (make_pair (k, v));
- k.clear ();
- state = KEY;
- } else {
- v += url[i];
- }
- break;
- }
- }
-
- if (state == VALUE) {
- r.insert (make_pair (k, v));
- }
-
- return r;
-}
-
-
static
string
asset_filename (shared_ptr<dcp::Asset> asset, string type, int reel_index, int reel_count, optional<string> summary, string extension)
}
-float
-relaxed_string_to_float (string s)
-{
- try {
- boost::algorithm::replace_all (s, ",", ".");
- return lexical_cast<float> (s);
- } catch (bad_lexical_cast &) {
- boost::algorithm::replace_all (s, ".", ",");
- return lexical_cast<float> (s);
- }
-}
-
string
careful_string_filter (string s)
{
return N;
}
-string
-day_of_week_to_string (boost::gregorian::greg_weekday d)
-{
- switch (d.as_enum()) {
- case boost::date_time::Sunday:
- return _("Sunday");
- case boost::date_time::Monday:
- return _("Monday");
- case boost::date_time::Tuesday:
- return _("Tuesday");
- case boost::date_time::Wednesday:
- return _("Wednesday");
- case boost::date_time::Thursday:
- return _("Thursday");
- case boost::date_time::Friday:
- return _("Friday");
- case boost::date_time::Saturday:
- return _("Saturday");
- }
-
- return d.as_long_string ();
-}
/** @param size Size of picture that the subtitle will be overlaid onto */
void
decoder->emit_bitmap (period, image, rect);
}
-bool
-show_jobs_on_console (bool progress)
-{
- bool first = true;
- bool error = false;
- while (true) {
-
- dcpomatic_sleep_seconds (5);
-
- auto jobs = JobManager::instance()->get();
-
- if (!first && progress) {
- for (size_t i = 0; i < jobs.size(); ++i) {
- cout << "\033[1A\033[2K";
- }
- cout.flush ();
- }
-
- first = false;
-
- for (auto i: jobs) {
- if (progress) {
- cout << i->name();
- if (!i->sub_name().empty()) {
- cout << "; " << i->sub_name();
- }
- cout << ": ";
-
- if (i->progress ()) {
- cout << i->status() << " \n";
- } else {
- cout << ": Running \n";
- }
- }
-
- if (!progress && i->finished_in_error()) {
- /* We won't see this error if we haven't been showing progress,
- so show it now.
- */
- cout << i->status() << "\n";
- }
-
- if (i->finished_in_error()) {
- error = true;
- }
- }
-
- if (!JobManager::instance()->work_to_do()) {
- break;
- }
- }
-
- return error;
-}
/** XXX: could use mmap? */
void
}
-string
-to_upper (string s)
-{
- transform (s.begin(), s.end(), s.begin(), ::toupper);
- return s;
-}
-
-
/* Set to 1 to print the IDs of some of our threads to stdout on creation */
#define DCPOMATIC_DEBUG_THREADS 0
extern std::string program_name;
extern bool is_batch_converter;
-struct AVSubtitle;
class AudioBuffers;
class TextDecoder;
extern std::string tidy_for_filename (std::string);
extern dcp::Size fit_ratio_within (float ratio, dcp::Size);
extern void set_backtrace_file (boost::filesystem::path);
-extern std::map<std::string, std::string> split_get_request (std::string url);
extern std::string video_asset_filename (std::shared_ptr<dcp::PictureAsset> asset, int reel_index, int reel_count, boost::optional<std::string> content_summary);
extern std::string audio_asset_filename (std::shared_ptr<dcp::SoundAsset> asset, int reel_index, int reel_count, boost::optional<std::string> content_summary);
extern std::string subtitle_asset_filename (std::shared_ptr<dcp::SubtitleAsset> asset, int reel_index, int reel_count, boost::optional<std::string> content_summary, std::string extension);
extern std::string atmos_asset_filename (std::shared_ptr<dcp::AtmosAsset> asset, int reel_index, int reel_count, boost::optional<std::string> content_summary);
-extern float relaxed_string_to_float (std::string);
extern std::string careful_string_filter (std::string);
extern std::pair<int, int> audio_channel_types (std::list<int> mapped, int channels);
extern std::shared_ptr<AudioBuffers> remap (std::shared_ptr<const AudioBuffers> input, int output_channels, AudioMapping map);
-extern Eyes increment_eyes (Eyes e);
extern size_t utf8_strlen (std::string s);
-extern std::string day_of_week_to_string (boost::gregorian::greg_weekday d);
extern void emit_subtitle_image (dcpomatic::ContentTimePeriod period, dcp::SubtitleImage sub, dcp::Size size, std::shared_ptr<TextDecoder> decoder);
-extern bool show_jobs_on_console (bool progress);
extern void copy_in_bits (boost::filesystem::path from, boost::filesystem::path to, std::function<void (float)>);
extern dcp::Size scale_for_display (dcp::Size s, dcp::Size display_container, dcp::Size film_container, PixelQuanta quanta);
extern dcp::DecryptedKDM decrypt_kdm_with_helpful_error (dcp::EncryptedKDM kdm);
extern boost::filesystem::path default_font_file ();
-extern std::string to_upper (std::string s);
extern void start_of_thread (std::string name);
extern void capture_asdcp_logs ();
extern std::string error_details(boost::system::error_code ec);
}
+bool
+show_jobs_on_console (bool progress)
+{
+ bool first = true;
+ bool error = false;
+ while (true) {
+
+ dcpomatic_sleep_seconds (5);
+
+ auto jobs = JobManager::instance()->get();
+
+ if (!first && progress) {
+ for (size_t i = 0; i < jobs.size(); ++i) {
+ cout << "\033[1A\033[2K";
+ }
+ cout.flush ();
+ }
+
+ first = false;
+
+ for (auto i: jobs) {
+ if (progress) {
+ cout << i->name();
+ if (!i->sub_name().empty()) {
+ cout << "; " << i->sub_name();
+ }
+ cout << ": ";
+
+ if (i->progress ()) {
+ cout << i->status() << " \n";
+ } else {
+ cout << ": Running \n";
+ }
+ }
+
+ if (!progress && i->finished_in_error()) {
+ /* We won't see this error if we haven't been showing progress,
+ so show it now.
+ */
+ cout << i->status() << "\n";
+ }
+
+ if (i->finished_in_error()) {
+ error = true;
+ }
+ }
+
+ if (!JobManager::instance()->work_to_do()) {
+ break;
+ }
+ }
+
+ return error;
+}
+
+
int
main (int argc, char* argv[])
{
#include "gain_calculator_dialog.h"
#include "wx_util.h"
-#include "lib/util.h"
#include "lib/cinema_sound_processor.h"
+
using boost::optional;
+
GainCalculatorDialog::GainCalculatorDialog (wxWindow* parent)
: TableDialog (parent, _("Gain Calculator"), 2, 1, true)
{
GainCalculatorDialog::db_change () const
{
if (_wanted->GetValue().IsEmpty() || _actual->GetValue().IsEmpty()) {
- return optional<float>();
+ return {};
}
+ auto relaxed_string_to_float = [](std::string s) {
+ try {
+ boost::algorithm::replace_all(s, ",", ".");
+ return boost::lexical_cast<float>(s);
+ } catch (boost::bad_lexical_cast &) {
+ boost::algorithm::replace_all(s, ".", ",");
+ return boost::lexical_cast<float>(s);
+ }
+ };
+
return CinemaSoundProcessor::from_index(
_processor->GetSelection())->db_for_fader_change(
relaxed_string_to_float(wx_to_std(_wanted->GetValue())),