*/
-#include "reel_writer.h"
-#include "film.h"
+
+#include "audio_buffers.h"
+#include "compose.hpp"
+#include "config.h"
#include "cross.h"
-#include "job.h"
-#include "log.h"
#include "dcpomatic_log.h"
#include "digester.h"
+#include "film.h"
#include "font_data.h"
-#include "compose.hpp"
-#include "config.h"
-#include "audio_buffers.h"
#include "image.h"
+#include "job.h"
+#include "log.h"
+#include "reel_writer.h"
#include <dcp/atmos_asset.h>
#include <dcp/atmos_asset_writer.h>
#include <dcp/certificate_chain.h>
#include "i18n.h"
-using std::list;
-using std::string;
-using std::cout;
+
+using std::dynamic_pointer_cast;
using std::exception;
+using std::list;
+using std::make_shared;
using std::map;
using std::set;
-using std::vector;
using std::shared_ptr;
-using std::make_shared;
+using std::string;
+using std::vector;
+using std::weak_ptr;
using boost::optional;
-using std::dynamic_pointer_cast;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
#endif
-using std::weak_ptr;
using dcp::ArrayData;
using dcp::Data;
using dcp::raw_convert;
using namespace dcpomatic;
+
int const ReelWriter::_info_size = 48;
+
static dcp::MXFMetadata
mxf_metadata ()
{
return meta;
}
+
/** @param job Related job, or 0.
* @param text_only true to enable a special mode where the writer will expect only subtitles and closed captions to be written
* (no picture nor sound) and not give errors in that case. This is used by the hints system to check the potential sizes of
_default_font = dcp::ArrayData(default_font_file());
}
+
/** @param frame reel-relative frame */
void
ReelWriter::write_frame_info (Frame frame, Eyes eyes, dcp::FrameInfo info) const
checked_fwrite (info.hash.c_str(), info.hash.size(), handle->get(), handle->file());
}
+
dcp::FrameInfo
ReelWriter::read_frame_info (shared_ptr<InfoFileHandle> info, Frame frame, Eyes eyes) const
{
return frame_info;
}
+
long
ReelWriter::frame_info_position (Frame frame, Eyes eyes) const
{
DCPOMATIC_ASSERT (false);
}
+
Frame
ReelWriter::check_existing_picture_asset (boost::filesystem::path asset)
{
return first_nonexistant_frame;
}
+
void
ReelWriter::write (shared_ptr<const Data> encoded, Frame frame, Eyes eyes)
{
_picture_asset_writer->fake_write (size);
}
+
void
ReelWriter::repeat_write (Frame frame, Eyes eyes)
{
write_frame_info (frame, eyes, fin);
}
+
void
ReelWriter::finish (boost::filesystem::path output_dcp)
{
*/
}
+
Frame
ReelWriter::start () const
{
}
}
+
bool
ReelWriter::existing_picture_frame_ok (FILE* asset_file, shared_ptr<InfoFileHandle> info_file, Frame frame) const
{
*/
-#include "wx/wx_util.h"
-#include "wx/wx_signal_manager.h"
+#include "wx/about_dialog.h"
#include "wx/content_view.h"
#include "wx/dcpomatic_button.h"
-#include "wx/about_dialog.h"
#include "wx/playlist_editor_config_dialog.h"
+#include "wx/wx_signal_manager.h"
+#include "wx/wx_util.h"
#include "lib/config.h"
#include "lib/cross.h"
#include "lib/dcp_content.h"
#include "lib/spl.h"
#include "lib/spl_entry.h"
#include "lib/util.h"
-#include <wx/wx.h>
-#include <wx/listctrl.h>
#include <wx/imaglist.h>
-#include <wx/spinctrl.h>
+#include <wx/listctrl.h>
#include <wx/preferences.h>
+#include <wx/spinctrl.h>
+#include <wx/wx.h>
using std::cout;
#include <wx/graphics.h>
#include <boost/bind/bind.hpp>
#include <cfloat>
-#include <iostream>
-using std::cout;
using std::list;
using std::map;
using std::max;
#include "batch_job_view.h"
#include "dcpomatic_button.h"
#include "lib/job_manager.h"
-#include <wx/sizer.h>
#include <wx/button.h>
+#include <wx/sizer.h>
using std::list;
#include "static_text.h"
#include "wx_util.h"
#include "lib/colour_conversion.h"
-#include <dcp/locale_convert.h>
#include <dcp/gamma_transfer_function.h>
#include <dcp/identity_transfer_function.h>
-#include <dcp/s_gamut3_transfer_function.h>
+#include <dcp/locale_convert.h>
#include <dcp/modified_gamma_transfer_function.h>
+#include <dcp/s_gamut3_transfer_function.h>
#include <wx/gbsizer.h>
#include <wx/numformatter.h>
#include <wx/spinctrl.h>
-#include <iostream>
-using std::cout;
using std::dynamic_pointer_cast;
using std::make_shared;
using std::string;
#include <wx/wx.h>
+class ColourConversion;
class wxGridBagSizer;
class wxSpinCtrlDouble;
-class ColourConversion;
class ColourConversionEditor : public wxPanel
*/
+#include "content_advanced_dialog.h"
#include "content_menu.h"
+#include "content_properties_dialog.h"
#include "repeat_dialog.h"
-#include "wx_util.h"
-#include "timeline_video_content_view.h"
#include "timeline_audio_content_view.h"
-#include "content_properties_dialog.h"
-#include "content_advanced_dialog.h"
-#include "lib/playlist.h"
-#include "lib/film.h"
-#include "lib/image_content.h"
+#include "timeline_video_content_view.h"
+#include "wx_util.h"
+#include "lib/audio_content.h"
+#include "lib/config.h"
#include "lib/content_factory.h"
-#include "lib/examine_content_job.h"
-#include "lib/job_manager.h"
-#include "lib/exceptions.h"
+#include "lib/copy_dcp_details_to_film.h"
#include "lib/dcp_content.h"
#include "lib/dcp_examiner.h"
+#include "lib/examine_content_job.h"
+#include "lib/exceptions.h"
#include "lib/ffmpeg_content.h"
-#include "lib/audio_content.h"
-#include "lib/config.h"
-#include "lib/copy_dcp_details_to_film.h"
+#include "lib/film.h"
+#include "lib/image_content.h"
+#include "lib/job_manager.h"
+#include "lib/playlist.h"
#include <dcp/cpl.h>
-#include <dcp/exceptions.h>
#include <dcp/decrypted_kdm.h>
+#include <dcp/exceptions.h>
#include <dcp/search.h>
-#include <wx/wx.h>
#include <wx/dirdlg.h>
-#include <iostream>
+#include <wx/wx.h>
-using std::cout;
-using std::vector;
+using std::dynamic_pointer_cast;
using std::exception;
using std::list;
+using std::make_shared;
using std::shared_ptr;
+using std::vector;
using std::weak_ptr;
-using std::dynamic_pointer_cast;
-using std::make_shared;
using boost::optional;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
*/
+
#ifndef DCPOMATIC_CONTENT_MENU_H
#define DCPOMATIC_CONTENT_MENU_H
+
#include "timeline_content_view.h"
#include "lib/types.h"
#include <wx/wx.h>
#include <memory>
+
+class DCPContent;
class Film;
class Job;
-class DCPContent;
+
class ContentMenu
{
#include "lib/string_text_file_content.h"
#include "lib/text_content.h"
#include "lib/video_content.h"
-#include <wx/wx.h>
-#include <wx/notebook.h>
-#include <wx/listctrl.h>
#include <wx/display.h>
+#include <wx/listctrl.h>
+#include <wx/notebook.h>
+#include <wx/wx.h>
#include <boost/filesystem.hpp>
-#include <iostream>
-using std::cout;
using std::dynamic_pointer_cast;
using std::exception;
using std::list;
#include <list>
+class AudioPanel;
+class ContentSubPanel;
+class Film;
+class FilmEditor;
+class FilmViewer;
+class TextPanel;
+class TimelineDialog;
+class TimingPanel;
+class VideoPanel;
+class wxListCtrl;
+class wxListEvent;
class wxNotebook;
class wxPanel;
class wxSizer;
-class wxListCtrl;
-class wxListEvent;
class wxSplitterWindow;
-class TimelineDialog;
-class FilmEditor;
-class ContentSubPanel;
-class TextPanel;
-class VideoPanel;
-class AudioPanel;
-class TimingPanel;
-class Film;
-class FilmViewer;
class LimitedSplitter : public wxSplitterWindow
*/
+
#include "content_sub_panel.h"
#include "content_panel.h"
#include "wx_util.h"
#include "lib/log.h"
#include <wx/notebook.h>
+
using std::list;
-using std::string;
using std::shared_ptr;
+using std::string;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
#endif
+
ContentSubPanel::ContentSubPanel (ContentPanel* p, wxString name)
: wxScrolledWindow (p->notebook(), wxID_ANY)
, _parent (p)
#include "content_view.h"
#include "wx_util.h"
-#include "lib/dcpomatic_assert.h"
#include "lib/config.h"
-#include "lib/dcp_content.h"
#include "lib/content_factory.h"
+#include "lib/cross.h"
+#include "lib/dcp_content.h"
+#include "lib/dcpomatic_assert.h"
#include "lib/examine_content_job.h"
#include "lib/job_manager.h"
-#include "lib/cross.h"
#include <dcp/exceptions.h>
#include <boost/filesystem.hpp>
#include <boost/optional.hpp>
* @brief ContentWidget class.
*/
+
#ifndef DCPOMATIC_CONTENT_WIDGET_H
#define DCPOMATIC_CONTENT_WIDGET_H
+
#include "wx_util.h"
#include "lib/content.h"
-#include <wx/wx.h>
#include <wx/gbsizer.h>
#include <wx/spinctrl.h>
+#include <wx/wx.h>
#include <vector>
+
/** @class ContentWidget
* @brief A widget which represents some Content state and which can be used
* when multiple pieces of content are selected.
#include "lib/job.h"
#include "lib/job_manager.h"
#include "lib/player_video.h"
-#include <dcp/dcp.h>
#include <dcp/cpl.h>
+#include <dcp/dcp.h>
#include <dcp/reel.h>
#include <dcp/reel_picture_asset.h>
-#include <wx/wx.h>
-#include <wx/tglbtn.h>
#include <wx/listctrl.h>
#include <wx/progdlg.h>
+#include <wx/tglbtn.h>
+#include <wx/wx.h>
-using std::string;
-using std::list;
using std::cout;
-using std::make_pair;
+using std::dynamic_pointer_cast;
using std::exception;
-using boost::optional;
+using std::list;
+using std::make_pair;
using std::shared_ptr;
+using std::string;
using std::weak_ptr;
-using std::dynamic_pointer_cast;
+using boost::optional;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
#endif
#include "smpte_metadata_dialog.h"
#include "static_text.h"
#include "wx_util.h"
-#include "lib/ratio.h"
+#include "lib/audio_content.h"
+#include "lib/audio_processor.h"
#include "lib/config.h"
+#include "lib/dcp_content.h"
#include "lib/dcp_content_type.h"
-#include "lib/util.h"
-#include "lib/film.h"
#include "lib/ffmpeg_content.h"
-#include "lib/audio_processor.h"
-#include "lib/video_content.h"
+#include "lib/film.h"
+#include "lib/ratio.h"
#include "lib/text_content.h"
-#include "lib/dcp_content.h"
-#include "lib/audio_content.h"
+#include "lib/util.h"
+#include "lib/video_content.h"
#include <dcp/locale_convert.h>
-#include <wx/wx.h>
-#include <wx/notebook.h>
#include <wx/gbsizer.h>
+#include <wx/notebook.h>
#include <wx/spinctrl.h>
+#include <wx/wx.h>
#include <boost/lexical_cast.hpp>
-#include <iostream>
-using std::cout;
using std::list;
-using std::string;
-using std::vector;
-using std::pair;
-using std::max;
using std::make_pair;
-using boost::lexical_cast;
+using std::max;
+using std::pair;
using std::shared_ptr;
+using std::string;
+using std::vector;
using std::weak_ptr;
+using boost::lexical_cast;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
#endif
#include <boost/version.hpp>
#include <wx/wx.h>
+
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
#endif
*/
+#include "confirm_kdm_email_dialog.h"
+#include "dcpomatic_button.h"
#include "dkdm_dialog.h"
-#include "wx_util.h"
-#include "recipients_panel.h"
-#include "kdm_timing_panel.h"
#include "dkdm_output_panel.h"
#include "kdm_cpl_panel.h"
-#include "confirm_kdm_email_dialog.h"
+#include "kdm_timing_panel.h"
+#include "recipients_panel.h"
#include "static_text.h"
-#include "dcpomatic_button.h"
+#include "wx_util.h"
+#include "lib/config.h"
#include "lib/film.h"
-#include "lib/kdm_with_metadata.h"
#include "lib/job_manager.h"
-#include "lib/config.h"
+#include "lib/kdm_with_metadata.h"
#include <libcxml/cxml.h>
#include <dcp/exceptions.h>
-#include <wx/treectrl.h>
#include <wx/listctrl.h>
+#include <wx/treectrl.h>
#include <iostream>
-using std::string;
+using std::cout;
using std::exception;
-using std::map;
using std::list;
-using std::pair;
-using std::cout;
-using std::vector;
using std::make_pair;
+using std::map;
+using std::pair;
using std::runtime_error;
using std::shared_ptr;
+using std::string;
+using std::vector;
using boost::bind;
using boost::optional;
#if BOOST_VERSION >= 106100
#include <map>
-class Film;
-class ScreensPanel;
-class RecipientsPanel;
-class KDMTimingPanel;
class DKDMOutputPanel;
+class Film;
class KDMCPLPanel;
+class KDMTimingPanel;
+class RecipientsPanel;
+class ScreensPanel;
struct CPLSummary;
*/
-#include "lib/kdm_with_metadata.h"
-#include "wx_util.h"
+
#include "name_format_editor.h"
+#include "wx_util.h"
+#include "lib/kdm_with_metadata.h"
#include <dcp/types.h>
#include <wx/wx.h>
#include <boost/filesystem.hpp>
-class wxRadioButton;
-class wxDirPickerCtrl;
+
class DirPickerCtrl;
-class KDMTimingPanel;
class Job;
+class KDMTimingPanel;
class Log;
+class wxDirPickerCtrl;
+class wxRadioButton;
+
class DKDMOutputPanel : public wxPanel
{
*/
+
#ifndef DCPOMATIC_EDITABLE_LIST_H
#define DCPOMATIC_EDITABLE_LIST_H
-#include "wx_util.h"
+
#include "dcpomatic_button.h"
-#include <wx/wx.h>
+#include "wx_util.h"
#include <wx/listctrl.h>
+#include <wx/wx.h>
#include <vector>
+
class EditableListColumn
{
public:
*/
-#include "wx_util.h"
-#include "film_editor.h"
-#include "dcp_panel.h"
#include "content_panel.h"
-#include "lib/film.h"
-#include "lib/job_manager.h"
+#include "dcp_panel.h"
+#include "film_editor.h"
+#include "wx_util.h"
#include "lib/content.h"
#include "lib/dcp_content.h"
-#include <wx/wx.h>
+#include "lib/film.h"
+#include "lib/job_manager.h"
#include <wx/notebook.h>
-#include <iostream>
+#include <wx/wx.h>
-using std::cout;
-using std::string;
using std::list;
using std::shared_ptr;
+using std::string;
using std::weak_ptr;
using boost::optional;
#if BOOST_VERSION >= 106100
#include "check_box.h"
#include "film_name_location_dialog.h"
#include "wx_util.h"
+/* This must come after wx_util.h as it defines DCPOMATIC_USE_OWN_PICKER */
#ifdef DCPOMATIC_USE_OWN_PICKER
#include "dir_picker_ctrl.h"
#endif
-#include "lib/config.h"
#include "lib/compose.hpp"
+#include "lib/config.h"
#include <wx/stdpaths.h>
#include <boost/filesystem.hpp>
#include "playhead_to_timecode_dialog.h"
#include "simple_video_view.h"
#include "wx_util.h"
-#include "lib/film.h"
-#include "lib/ratio.h"
-#include "lib/util.h"
-#include "lib/job_manager.h"
-#include "lib/image.h"
-#include "lib/exceptions.h"
+#include "lib/butler.h"
+#include "lib/compose.hpp"
+#include "lib/config.h"
+#include "lib/dcpomatic_log.h"
#include "lib/examine_content_job.h"
+#include "lib/exceptions.h"
+#include "lib/film.h"
#include "lib/filter.h"
+#include "lib/image.h"
+#include "lib/job_manager.h"
+#include "lib/log.h"
#include "lib/player.h"
#include "lib/player_video.h"
+#include "lib/ratio.h"
+#include "lib/text_content.h"
+#include "lib/timer.h"
+#include "lib/util.h"
#include "lib/video_content.h"
#include "lib/video_decoder.h"
-#include "lib/timer.h"
-#include "lib/butler.h"
-#include "lib/log.h"
-#include "lib/config.h"
-#include "lib/compose.hpp"
-#include "lib/dcpomatic_log.h"
-#include "lib/text_content.h"
extern "C" {
#include <libavutil/pixfmt.h>
}
#include <dcp/exceptions.h>
#include <wx/tglbtn.h>
-#include <iostream>
#include <iomanip>
using std::bad_alloc;
-using std::cout;
using std::dynamic_pointer_cast;
using std::make_shared;
using std::max;
*/
+#include "dcpomatic_button.h"
#include "fonts_dialog.h"
-#include "wx_util.h"
#include "system_font_dialog.h"
-#include "dcpomatic_button.h"
-#include "lib/font.h"
+#include "wx_util.h"
#include "lib/content.h"
+#include "lib/font.h"
#include "lib/text_content.h"
#include <wx/wx.h>
-#include <iostream>
#include <memory>
using std::list;
-using std::string;
-using std::cout;
using std::shared_ptr;
+using std::string;
using namespace dcpomatic;
*/
-#include "lib/dcpomatic_assert.h"
#include "full_language_tag_dialog.h"
+#include "lib/dcpomatic_assert.h"
#include <dcp/language_tag.h>
#include <wx/listctrl.h>
#include <wx/srchctrl.h>
#include <boost/bind/bind.hpp>
#include <boost/optional.hpp>
#include <boost/signals2.hpp>
-#include <iostream>
#include <iterator>
#include <string>
#include <vector>
using std::min;
using std::pair;
+using std::shared_ptr;
using std::string;
using std::vector;
-using boost::optional;
-using std::shared_ptr;
using std::weak_ptr;
+using boost::optional;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
#endif
#include <wx/gbsizer.h>
+using std::shared_ptr;
using std::string;
using std::vector;
using std::weak_ptr;
-using std::shared_ptr;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
#endif
*/
+#include "check_box.h"
+#include "dcpomatic_button.h"
#include "job_view.h"
-#include "wx_util.h"
#include "message_dialog.h"
#include "static_text.h"
-#include "check_box.h"
-#include "dcpomatic_button.h"
-#include "lib/job.h"
-#include "lib/job_manager.h"
+#include "wx_util.h"
+#include "lib/analyse_audio_job.h"
#include "lib/compose.hpp"
#include "lib/config.h"
+#include "lib/job.h"
+#include "lib/job_manager.h"
#include "lib/send_notification_email_job.h"
#include "lib/transcode_job.h"
-#include "lib/analyse_audio_job.h"
#include <wx/wx.h>
#include <boost/algorithm/string.hpp>
-using std::string;
using std::min;
using std::shared_ptr;
+using std::string;
using boost::bind;
*/
-#include "kdm_advanced_dialog.h"
+
#include "check_box.h"
+#include "kdm_advanced_dialog.h"
#include "wx_util.h"
#include <wx/spinctrl.h>
+
using boost::optional;
+
KDMAdvancedDialog::KDMAdvancedDialog (wxWindow* parent, bool forensic_mark_video, bool forensic_mark_audio, optional<int> forensic_mark_audio_up_to)
: TableDialog (parent, _("Advanced KDM options"), 2, 1, false)
{
*/
+#include "confirm_kdm_email_dialog.h"
+#include "dcpomatic_button.h"
+#include "kdm_cpl_panel.h"
#include "kdm_dialog.h"
-#include "wx_util.h"
-#include "screens_panel.h"
-#include "kdm_timing_panel.h"
#include "kdm_output_panel.h"
-#include "kdm_cpl_panel.h"
-#include "confirm_kdm_email_dialog.h"
+#include "kdm_timing_panel.h"
+#include "screens_panel.h"
#include "static_text.h"
-#include "dcpomatic_button.h"
+#include "wx_util.h"
+#include "lib/cinema.h"
+#include "lib/config.h"
#include "lib/film.h"
-#include "lib/screen.h"
-#include "lib/kdm_with_metadata.h"
#include "lib/job_manager.h"
-#include "lib/config.h"
-#include "lib/cinema.h"
+#include "lib/kdm_with_metadata.h"
+#include "lib/screen.h"
#include <libcxml/cxml.h>
#include <dcp/exceptions.h>
-#include <wx/treectrl.h>
#include <wx/listctrl.h>
-#include <iostream>
+#include <wx/treectrl.h>
-using std::string;
using std::exception;
-using std::map;
using std::list;
-using std::pair;
-using std::cout;
-using std::vector;
using std::make_pair;
+using std::map;
+using std::pair;
using std::runtime_error;
using std::shared_ptr;
+using std::string;
+using std::vector;
using boost::bind;
using boost::optional;
#if BOOST_VERSION >= 106100
*/
+
#include "wx_util.h"
#include <dcp/types.h>
#include <wx/wx.h>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <map>
+
namespace dcpomatic {
class Screen;
}
class Cinema;
class Film;
-class ScreensPanel;
-class KDMTimingPanel;
-class KDMOutputPanel;
class KDMCPLPanel;
+class KDMOutputPanel;
+class KDMTimingPanel;
+class ScreensPanel;
struct CPLSummary;
+
class KDMDialog : public wxDialog
{
public:
*/
-#include "markers_dialog.h"
-#include "wx_util.h"
-#include "timecode.h"
-#include "static_text.h"
-#include "dcpomatic_button.h"
#include "check_box.h"
+#include "dcpomatic_button.h"
#include "film_viewer.h"
+#include "markers_dialog.h"
+#include "static_text.h"
+#include "timecode.h"
+#include "wx_util.h"
#include "lib/film.h"
#include <dcp/types.h>
#include <wx/gbsizer.h>
#include <boost/bind/bind.hpp>
-#include <iostream>
-using std::cout;
+using std::make_shared;
using std::shared_ptr;
using std::weak_ptr;
-using std::make_shared;
-using boost::optional;
using boost::bind;
+using boost::optional;
using dcpomatic::DCPTime;
*/
+
/** @file src/player_config_dialog.cc
* @brief A dialogue to edit DCP-o-matic Player configuration.
*/
+
+#include "check_box.h"
#include "config_dialog.h"
-#include "wx_util.h"
+#include "dir_picker_ctrl.h"
#include "editable_list.h"
-#include "filter_dialog.h"
+#include "email_dialog.h"
#include "file_picker_ctrl.h"
-#include "dir_picker_ctrl.h"
-#include "server_dialog.h"
+#include "filter_dialog.h"
#include "make_chain_dialog.h"
-#include "email_dialog.h"
-#include "name_format_editor.h"
#include "nag_dialog.h"
-#include "check_box.h"
+#include "name_format_editor.h"
+#include "server_dialog.h"
#include "static_text.h"
+#include "wx_util.h"
#include "lib/config.h"
-#include "lib/ratio.h"
-#include "lib/filter.h"
+#include "lib/cross.h"
#include "lib/dcp_content_type.h"
+#include "lib/exceptions.h"
+#include "lib/filter.h"
#include "lib/log.h"
+#include "lib/ratio.h"
#include "lib/util.h"
-#include "lib/cross.h"
-#include "lib/exceptions.h"
-#include <dcp/locale_convert.h>
-#include <dcp/exceptions.h>
#include <dcp/certificate_chain.h>
-#include <wx/stdpaths.h>
+#include <dcp/exceptions.h>
+#include <dcp/locale_convert.h>
+#include <wx/filepicker.h>
#include <wx/preferences.h>
#include <wx/spinctrl.h>
-#include <wx/filepicker.h>
+#include <wx/stdpaths.h>
#include <RtAudio.h>
#include <boost/filesystem.hpp>
-#include <iostream>
-using std::vector;
-using std::string;
+
+using std::function;
using std::list;
-using std::cout;
-using std::pair;
using std::make_pair;
using std::map;
-using boost::bind;
+using std::pair;
using std::shared_ptr;
-using std::function;
+using std::string;
+using std::vector;
+using boost::bind;
using boost::optional;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
#endif
using dcp::locale_convert;
+
class PlayerGeneralPage : public GeneralPage
{
public:
*/
-#include "player_stress_tester.h"
+
#include "controls.h"
+#include "player_stress_tester.h"
#include <dcp/raw_convert.h>
#include <dcp/util.h>
#include <wx/wx.h>
#include <boost/algorithm/string.hpp>
#include <boost/bind/bind.hpp>
+#include <iostream>
#include <string>
#include <vector>
-#include <iostream>
+
+using std::cout;
using std::string;
using std::vector;
-using std::cout;
using dcp::raw_convert;
using boost::optional;
+
/* Interval to check for things to do with the stress script (in milliseconds) */
#define CHECK_INTERVAL 20
+
Command::Command (string line)
: type (NONE)
, int_param (0)
*/
-#include "playlist_controls.h"
-#include "film_viewer.h"
-#include "wx_util.h"
+
#include "content_view.h"
#include "dcpomatic_button.h"
+#include "film_viewer.h"
+#include "playlist_controls.h"
#include "static_text.h"
-#include "lib/player_video.h"
-#include "lib/dcp_content.h"
+#include "wx_util.h"
+#include "lib/compose.hpp"
#include "lib/cross.h"
-#include "lib/scoped_temporary.h"
-#include "lib/internet.h"
+#include "lib/dcp_content.h"
#include "lib/ffmpeg_content.h"
-#include "lib/compose.hpp"
+#include "lib/internet.h"
+#include "lib/player_video.h"
+#include "lib/scoped_temporary.h"
#include <dcp/raw_convert.h>
#include <dcp/exceptions.h>
#include <wx/listctrl.h>
#include <wx/progdlg.h>
-using std::string;
+
using std::cout;
+using std::dynamic_pointer_cast;
using std::exception;
-using std::sort;
using std::shared_ptr;
-using std::dynamic_pointer_cast;
+using std::sort;
+using std::string;
using boost::optional;
using namespace dcpomatic;
+
PlaylistControls::PlaylistControls (wxWindow* parent, shared_ptr<FilmViewer> viewer)
: Controls (parent, viewer, false)
, _play_button (new Button(this, _("Play")))
*/
+
#include "editable_list.h"
#include "email_dialog.h"
#include "wx_util.h"
#include <wx/wx.h>
#include <boost/optional.hpp>
+
class Progress;
class TrustedDeviceDialog;
+
class RecipientDialog : public wxDialog
{
public:
*/
+
#include "wx_util.h"
#include <wx/wx.h>
+
class SendI18NDialog : public wxDialog
{
public:
#include "editable_list.h"
#include "language_tag_dialog.h"
#include "language_tag_widget.h"
-#include "smpte_metadata_dialog.h"
#include "rating_dialog.h"
+#include "smpte_metadata_dialog.h"
#include "lib/film.h"
#include <dcp/types.h>
#include <wx/gbsizer.h>
#include <wx/spinctrl.h>
+using std::shared_ptr;
using std::string;
using std::vector;
-using boost::optional;
-using std::shared_ptr;
using std::weak_ptr;
+using boost::optional;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
#endif
#include <vector>
-class Film;
-class RatingDialog;
class ContentVersionDialog;
-class LanguageTagWidget;
+class Film;
class LanguageTagDialog;
+class LanguageTagWidget;
+class RatingDialog;
class SMPTEMetadataDialog : public MetadataDialog
*/
+
#include "i18n_hook.h"
#include <wx/wx.h>
+
class StaticText : public wxStaticText, public I18NHook
{
public:
*/
+#include "dcpomatic_button.h"
+#include "rename_template_dialog.h"
#include "templates_dialog.h"
#include "wx_util.h"
-#include "rename_template_dialog.h"
-#include "dcpomatic_button.h"
#include "lib/config.h"
#include <wx/wx.h>
*/
+
#include "check_box.h"
#include "content_panel.h"
#include "dcp_text_track_dialog.h"
#include <wx/spinctrl.h>
-using std::vector;
-using std::string;
-using std::list;
using std::cout;
-using std::shared_ptr;
-using boost::optional;
using std::dynamic_pointer_cast;
+using std::list;
+using std::shared_ptr;
+using std::string;
+using std::vector;
using boost::bind;
+using boost::optional;
/** @param t Original text type of the content, if known */
*/
-#include "text_view.h"
+
#include "film_viewer.h"
+#include "text_view.h"
#include "wx_util.h"
-#include "lib/string_text_file_decoder.h"
-#include "lib/content_text.h"
-#include "lib/video_decoder.h"
#include "lib/audio_decoder.h"
-#include "lib/film.h"
#include "lib/config.h"
+#include "lib/content_text.h"
+#include "lib/film.h"
#include "lib/string_text_file_content.h"
+#include "lib/string_text_file_decoder.h"
#include "lib/text_decoder.h"
+#include "lib/video_decoder.h"
+
+using std::dynamic_pointer_cast;
using std::list;
using std::shared_ptr;
using std::weak_ptr;
using boost::bind;
-using std::dynamic_pointer_cast;
using namespace dcpomatic;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
#endif
+
TextView::TextView (
wxWindow* parent, shared_ptr<Film> film, shared_ptr<Content> content, shared_ptr<TextContent> text, shared_ptr<Decoder> decoder, weak_ptr<FilmViewer> viewer
)
_list->InsertColumn (2, ip);
}
- wxBoxSizer* sizer = new wxBoxSizer (wxVERTICAL);
+ auto sizer = new wxBoxSizer (wxVERTICAL);
sizer->Add (_list, 1, wxEXPAND | wxALL, DCPOMATIC_SIZER_X_GAP);
_list->Bind (wxEVT_LIST_ITEM_SELECTED, boost::bind (&TextView::subtitle_selected, this, _1));
- wxSizer* buttons = CreateSeparatedButtonSizer (wxOK);
+ auto buttons = CreateSeparatedButtonSizer (wxOK);
if (buttons) {
sizer->Add (buttons, wxSizerFlags().Expand().DoubleBorder());
}
SetSizerAndFit (sizer);
}
+
void
TextView::data_start (ContentStringText cts)
{
_last_count = cts.subs.size ();
}
+
void
TextView::data_stop (ContentTime time)
{
}
}
+
void
TextView::subtitle_selected (wxListEvent& ev)
{
}
DCPOMATIC_ASSERT (ev.GetIndex() < int(_start_times.size()));
- shared_ptr<Content> lc = _content.lock ();
+ auto lc = _content.lock ();
DCPOMATIC_ASSERT (lc);
- shared_ptr<FilmViewer> fv = _film_viewer.lock ();
+ auto fv = _film_viewer.lock ();
DCPOMATIC_ASSERT (fv);
/* Add on a frame here to work around any rounding errors and make sure land in the subtitle */
fv->seek (lc, _start_times[ev.GetIndex()] + ContentTime::from_frames(1, _frc->source), true);
*/
+
+#include "static_text.h"
#include "time_picker.h"
#include "wx_util.h"
-#include "static_text.h"
#include <dcp/locale_convert.h>
#include <wx/spinctrl.h>
#include <boost/bind/bind.hpp>
#include <iomanip>
+
+using std::cout;
+using std::max;
+using std::min;
using std::setfill;
using std::setw;
-using std::min;
-using std::max;
using std::string;
-using std::cout;
using boost::bind;
using dcp::locale_convert;
*/
+#include "content_panel.h"
#include "film_editor.h"
+#include "film_viewer.h"
#include "timeline.h"
-#include "timeline_time_axis_view.h"
-#include "timeline_reels_view.h"
-#include "timeline_labels_view.h"
-#include "timeline_video_content_view.h"
+#include "timeline_atmos_content_view.h"
#include "timeline_audio_content_view.h"
+#include "timeline_labels_view.h"
+#include "timeline_reels_view.h"
#include "timeline_text_content_view.h"
-#include "timeline_atmos_content_view.h"
-#include "content_panel.h"
+#include "timeline_time_axis_view.h"
+#include "timeline_video_content_view.h"
#include "wx_util.h"
-#include "film_viewer.h"
+#include "lib/atmos_mxf_content.h"
+#include "lib/audio_content.h"
#include "lib/film.h"
-#include "lib/playlist.h"
#include "lib/image_content.h"
-#include "lib/timer.h"
-#include "lib/audio_content.h"
+#include "lib/playlist.h"
#include "lib/text_content.h"
+#include "lib/timer.h"
#include "lib/video_content.h"
-#include "lib/atmos_mxf_content.h"
#include <wx/graphics.h>
-#include <list>
#include <iterator>
-#include <iostream>
+#include <list>
+
+using std::abs;
+using std::dynamic_pointer_cast;
using std::list;
-using std::cout;
-using std::min;
+using std::make_shared;
using std::max;
-using std::abs;
+using std::min;
using std::shared_ptr;
using std::weak_ptr;
-using std::dynamic_pointer_cast;
-using std::make_shared;
using boost::bind;
using boost::optional;
using namespace dcpomatic;
using namespace boost::placeholders;
#endif
+
/* 3 hours in 640 pixels */
double const Timeline::_minimum_pixels_per_second = 640.0 / (60 * 60 * 3);
int const Timeline::_minimum_pixels_per_track = 16;
+
Timeline::Timeline (wxWindow* parent, ContentPanel* cp, shared_ptr<Film> film, weak_ptr<FilmViewer> viewer)
: wxPanel (parent, wxID_ANY)
, _labels_canvas (new wxScrolledCanvas (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE))
_labels_canvas->ShowScrollbars (wxSHOW_SB_NEVER, wxSHOW_SB_NEVER);
}
+
void
Timeline::update_playhead ()
{
Refresh ();
}
+
void
Timeline::set_pixels_per_second (double pps)
{
_pixels_per_second = max (_minimum_pixels_per_second, pps);
}
+
void
Timeline::paint_labels ()
{
delete gc;
}
+
void
Timeline::paint_main ()
{
delete gc;
}
+
void
Timeline::film_change (ChangeType type, Film::Property p)
{
}
}
+
void
Timeline::recreate_views ()
{
Refresh ();
}
+
void
Timeline::film_content_change (ChangeType type, int property, bool frequent)
{
}
}
+
template <class T>
int
place (shared_ptr<const Film> film, TimelineViewList& views, int& tracks)
return tracks - base;
}
+
/** Compare the mapped output channels of two TimelineViews, so we can into
* order of first mapped DCP channel.
*/
}
};
+
void
Timeline::assign_tracks ()
{
_reels_view->set_y (8);
}
+
int
Timeline::tracks () const
{
return _tracks;
}
+
void
Timeline::setup_scrollbars ()
{
_main_canvas->SetScrollRate (_x_scroll_rate, _y_scroll_rate);
}
+
shared_ptr<TimelineView>
Timeline::event_to_view (wxMouseEvent& ev)
{
return *i;
}
+
void
Timeline::left_down (wxMouseEvent& ev)
{
}
}
+
void
Timeline::left_down_select (wxMouseEvent& ev)
{
}
}
+
void
Timeline::left_up (wxMouseEvent& ev)
{
}
}
+
void
Timeline::left_up_select (wxMouseEvent& ev)
{
_end_snaps.clear ();
}
+
void
Timeline::left_up_zoom (wxMouseEvent& ev)
{
Refresh ();
}
+
void
Timeline::set_pixels_per_track (int h)
{
_pixels_per_track = max(_minimum_pixels_per_track, h);
}
+
void
Timeline::mouse_moved (wxMouseEvent& ev)
{
}
}
+
void
Timeline::mouse_moved_select (wxMouseEvent& ev)
{
set_position_from_event (ev);
}
+
void
Timeline::mouse_moved_zoom (wxMouseEvent& ev)
{
Refresh ();
}
+
void
Timeline::right_down (wxMouseEvent& ev)
{
}
}
+
void
Timeline::right_down_select (wxMouseEvent& ev)
{
_menu.popup (_film, selected_content (), selected_views (), ev.GetPosition ());
}
+
void
Timeline::maybe_snap (DCPTime a, DCPTime b, optional<DCPTime>& nearest_distance) const
{
}
}
+
void
Timeline::set_position_from_event (wxMouseEvent& ev, bool force_emit)
{
film->set_sequence (false);
}
+
void
Timeline::force_redraw (dcpomatic::Rect<int> const & r)
{
_main_canvas->RefreshRect (wxRect (r.x, r.y, r.width, r.height), false);
}
+
shared_ptr<const Film>
Timeline::film () const
{
return _film.lock ();
}
+
void
Timeline::resized ()
{
setup_scrollbars ();
}
+
void
Timeline::clear_selection ()
{
}
}
+
TimelineContentViewList
Timeline::selected_views () const
{
return sel;
}
+
ContentList
Timeline::selected_content () const
{
return sel;
}
+
void
Timeline::set_selection (ContentList selection)
{
}
}
+
int
Timeline::tracks_y_offset () const
{
return _reels_view->bbox().height + 4;
}
+
int
Timeline::width () const
{
return _main_canvas->GetVirtualSize().GetWidth();
}
+
void
Timeline::scrolled (wxScrollWinEvent& ev)
{
ev.Skip ();
}
+
void
Timeline::tool_clicked (Tool t)
{
}
}
+
void
Timeline::zoom_all ()
{
#include "content_menu.h"
#include "timeline_content_view.h"
-#include "lib/util.h"
-#include "lib/rect.h"
#include "lib/film.h"
+#include "lib/rect.h"
+#include "lib/util.h"
+#include "lib/warnings.h"
+DCPOMATIC_DISABLE_WARNINGS
#include <wx/wx.h>
+DCPOMATIC_ENABLE_WARNINGS
#include <boost/signals2.hpp>
-class Film;
+
class ContentPanel;
-class TimelineView;
-class TimelineTimeAxisView;
-class TimelineReelsView;
-class TimelineLabelsView;
+class Film;
class FilmViewer;
+class TimelineLabelsView;
+class TimelineReelsView;
+class TimelineTimeAxisView;
+class TimelineView;
+
class Timeline : public wxPanel
{
*/
-#include "timeline_content_view.h"
+
#include "timeline.h"
+#include "timeline_content_view.h"
#include "wx_util.h"
#include "lib/content.h"
#include <wx/graphics.h>
+
using std::list;
using std::shared_ptr;
using namespace dcpomatic;
using namespace boost::placeholders;
#endif
+
TimelineContentView::TimelineContentView (Timeline& tl, shared_ptr<Content> c)
: TimelineView (tl)
, _content (c)
_content_connection = c->Change.connect (bind (&TimelineContentView::content_change, this, _1, _3));
}
+
dcpomatic::Rect<int>
TimelineContentView::bbox () const
{
);
}
+
void
TimelineContentView::set_selected (bool s)
{
force_redraw ();
}
+
bool
TimelineContentView::selected () const
{
return _selected;
}
+
shared_ptr<Content>
TimelineContentView::content () const
{
return _content.lock ();
}
+
void
TimelineContentView::set_track (int t)
{
_track = t;
}
+
void
TimelineContentView::unset_track ()
{
_track = boost::optional<int>();
}
+
boost::optional<int>
TimelineContentView::track () const
{
return _track;
}
+
void
TimelineContentView::do_paint (wxGraphicsContext* gc, list<dcpomatic::Rect<int>> overlaps)
{
gc->PopState ();
}
+
int
TimelineContentView::y_pos (int t) const
{
return t * _timeline.pixels_per_track() + _timeline.tracks_y_offset();
}
+
void
TimelineContentView::content_change (ChangeType type, int p)
{
}
}
+
wxString
TimelineContentView::label () const
{
#include "lib/cross.h"
#include "lib/playlist.h"
#include <wx/graphics.h>
-#include <iostream>
#include <list>
using std::list;
-using std::cout;
-using std::string;
using std::shared_ptr;
+using std::string;
using std::weak_ptr;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
*/
-#include "timeline_labels_view.h"
#include "timeline.h"
-#include <wx/wx.h>
+#include "timeline_labels_view.h"
#include <wx/graphics.h>
+#include <wx/wx.h>
using std::list;
*/
-#include "timeline_reels_view.h"
#include "timeline.h"
-#include <wx/wx.h>
+#include "timeline_reels_view.h"
#include <wx/graphics.h>
+#include <wx/wx.h>
using std::min;
*/
-#include "timeline_time_axis_view.h"
#include "timeline.h"
+#include "timeline_time_axis_view.h"
#include "wx_util.h"
-#include <wx/wx.h>
#include <wx/graphics.h>
+#include <wx/wx.h>
+
-using std::list;
using std::cout;
+using std::list;
using namespace dcpomatic;
+
TimelineTimeAxisView::TimelineTimeAxisView (Timeline& tl, int y)
: TimelineView (tl)
, _y (y)
}
+
dcpomatic::Rect<int>
TimelineTimeAxisView::bbox () const
{
return dcpomatic::Rect<int> (0, _y - 4, _timeline.width(), 24);
}
+
/** @param y y position in tracks (not pixels) */
void
TimelineTimeAxisView::set_y (int y)
force_redraw ();
}
+
void
TimelineTimeAxisView::do_paint (wxGraphicsContext* gc, list<dcpomatic::Rect<int> >)
{
*/
+#include "static_text.h"
#include "try_unmount_dialog.h"
#include "wx_util.h"
-#include "static_text.h"
#include <wx/wx.h>
using std::string;
-using boost::optional;
using std::shared_ptr;
+using boost::optional;
static int const max_file_name_length = 80;
#include <boost/thread.hpp>
-class Image;
-class wxWindow;
class FilmViewer;
+class Image;
class Player;
class PlayerVideo;
+class wxWindow;
class VideoView : public ExceptionStore, public Signaller
#include "lib/player_video.h"
#include <dcp/locale_convert.h>
#include <dcp/openjpeg_image.h>
-#include <wx/rawbmp.h>
#include <wx/graphics.h>
+#include <wx/rawbmp.h>
#include <boost/bind/bind.hpp>
#include <iostream>
#include <wx/wx.h>
DCPOMATIC_ENABLE_WARNINGS
#include <wx/gbsizer.h>
-#include <boost/thread.hpp>
#include <boost/signals2.hpp>
+#include <boost/thread.hpp>
class FilePickerCtrl;