+RenderRange1Frame::RenderRange1Frame(RenderWindow *rwindow, int value, int x, int y)
+ : BC_Radial(x, y, value, _("One Frame"))
+{
+ this->rwindow = rwindow;
+}
+int RenderRange1Frame::handle_event()
+{
+ rwindow->update_range_type(RANGE_1FRAME);
+ return 1;
+}
+
+double Render::get_render_range()
+{
+ EDL *edl = mwindow->edl;
+ double last = edl->tracks->total_playable_length();
+ double framerate = edl->session->frame_rate;
+ if( framerate <= 0 ) framerate = 1;
+ double start = 0, end = last;
+ switch( range_type ) {
+ default:
+ case RANGE_BACKCOMPAT:
+ start = edl->local_session->get_selectionstart(1);
+ end = edl->local_session->get_selectionend(1);
+ if( EQUIV(start, end) ) end = last;
+ break;
+ case RANGE_PROJECT:
+ break;
+ case RANGE_SELECTION:
+ start = edl->local_session->get_selectionstart(1);
+ end = edl->local_session->get_selectionend(1);
+ break;
+ case RANGE_INOUT:
+ start = edl->local_session->inpoint_valid() ?
+ edl->local_session->get_inpoint() : 0;
+ end = edl->local_session->outpoint_valid() ?
+ edl->local_session->get_outpoint() : last;
+ break;
+ case RANGE_1FRAME:
+ start = end = edl->local_session->get_selectionstart(1);
+ if( edl->session->frame_rate > 0 ) end += 1./edl->session->frame_rate;
+ break;
+ }
+ if( start < 0 ) start = 0;
+ if( end > last ) end = last;
+ return end - start;
+}
+
+RenderFormat::RenderFormat(MWindow *mwindow, BC_WindowBase *window, Asset *asset)
+ : FormatTools(mwindow, window, asset)
+{
+}
+RenderFormat::~RenderFormat()
+{
+}
+
+void RenderFormat::update_format()
+{
+ FormatTools::update_format();
+ RenderWindow *render_window = (RenderWindow *)window;
+ if( render_window->is_hidden() ) return;
+
+ int is_image = File::is_image_render(asset->format);
+ if( is_image ) {
+ render_window->update_range_type(RANGE_1FRAME);
+ render_window->enable_render_range(0);
+ }
+ else
+ render_window->enable_render_range(1);
+}