#include "language.h"
#include "loadmode.h"
#include "localsession.h"
+#include "mainerror.h"
#include "mainprogress.h"
#include "mainsession.h"
#include "mainundo.h"
Render::~Render()
{
+ stop_operation();
close_window();
delete package_lock;
delete counter_lock;
err_msg = _("zero render range");
result = 1;
}
+ if( !result && !asset->audio_data && !asset->video_data ) {
+ err_msg = _("no audio or video in render asset format\n");
+ result = 1;
+ }
+ EDL *edl = mwindow->edl;
+ if( !result && use_labels && !edl->labels->first ) {
+ eprintf(_("render file per label and no labels\n"));
+ result = 1;
+ }
if( !result && asset->video_data ) {
- double frame_rate = mwindow->edl->session->frame_rate;
+ double frame_rate = edl->session->frame_rate;
if( frame_rate > 0 && render_range+1e-3 < 1./frame_rate ) {
err_msg = _("Video data and range less than 1 frame");
result = 1;
}
}
if( !result && asset->audio_data ) {
- double sample_rate = mwindow->edl->session->sample_rate;
+ double sample_rate = edl->session->sample_rate;
if( sample_rate > 0 && render_range+1e-6 < 1./sample_rate ) {
err_msg = _("Audio data and range less than 1 sample");
result = 1;
}
if( !result && File::is_image_render(asset->format) ) {
if( asset->video_data ) {
- double frames = render_range * mwindow->edl->session->frame_rate;
+ double frames = render_range * edl->session->frame_rate;
if( !EQUIV(frames, 1.) ) {
err_msg = _("Image format and not 1 frame");
result = 1;
result = 1;
}
}
+
if( err_msg ) {
int cx, cy;
mwindow->gui->get_abs_cursor(cx, cy, 1);
render->result = 1;
}
}
+
render_frames = render->default_asset->frame_rate * total_length;
// Generate packages
render_frames, render_time, render_rate);
}
- if( render->mode == Render::INTERACTIVE && render->beep )
- mwindow->beep(3000., 1.5, 0.5);
+ float gain = render->beep;
+ if( render->mode == Render::INTERACTIVE && gain > 0 )
+ mwindow->beep(3000., 1.5, gain);
if( script ) {
if( !render->result )
}
-#define WIDTH 480
-#define HEIGHT 480
+#define WIDTH xS(480)
+#define HEIGHT yS(480)
RenderWindow::RenderWindow(MWindow *mwindow,
void RenderWindow::create_objects()
{
- int x = 10, y = 10;
+ int xs10 = xS(10), xs20 = xS(20);
+ int ys10 = yS(10), ys20 = yS(20), ys25 = yS(25), ys30 = yS(30);
+ int x = xs10, y = ys10;
lock_window("RenderWindow::create_objects");
- add_subwindow(new BC_Title(x, y,
- (char*)(render->use_labels ?
+ add_subwindow(file_format = new BC_Title(x, y,
+ (render->use_labels ?
_("Select the first file to render to:") :
_("Select a file to render to:"))));
- y += 25;
+ y += ys25;
render_format = new RenderFormat(mwindow, this, asset);
render_format->create_objects(x, y,
if( is_image )
render->range_type = RANGE_1FRAME;
- int x1 = x + title->get_w() + 20, y1 = y;
+ int x1 = x + title->get_w() + xs20, y1 = y;
add_subwindow(rangeproject = new RenderRangeProject(this,
render->range_type == RANGE_PROJECT, x1, y));
int x2 = x1 + rangeproject->get_w();
- y += 20;
+ y += ys20;
add_subwindow(rangeselection = new RenderRangeSelection(this,
render->range_type == RANGE_SELECTION, x1, y));
int x3 = x1 + rangeselection->get_w();
if( x2 < x3 ) x2 = x3;
- y += 20;
+ y += ys20;
add_subwindow(rangeinout = new RenderRangeInOut(this,
render->range_type == RANGE_INOUT, x1, y));
x3 = x1 + rangeinout->get_w();
if( x2 < x3 ) x2 = x3;
- y += 20;
+ y += ys20;
add_subwindow(range1frame = new RenderRange1Frame(this,
render->range_type == RANGE_1FRAME, x1, y));
x3 = x1 + range1frame->get_w();
if( x2 < x3 ) x2 = x3;
- y += 30;
+ y += ys30;
if( is_image )
enable_render_range(0);
- x1 = x2 + 20;
+ x1 = x2 + xs20;
render->beep = mwindow->edl->session->render_beep;
add_subwindow(beep_on_done = new RenderBeepOnDone(this, x1, y1));
+ y1 += beep_on_done->get_h();
+ add_subwindow(new BC_Title(x1, y1, _("Beep on done volume")));
renderprofile = new RenderProfile(mwindow, this, x, y, 1);
renderprofile->create_objects();
- y += 70;
+ y += yS(70);
- loadmode = new LoadMode(mwindow, this, x, y, &render->load_mode, 1);
+ loadmode = new LoadMode(mwindow, this, x, y, &render->load_mode);
loadmode->create_objects();
add_subwindow(new BC_OKButton(this));
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);
else
render_window->enable_render_range(1);
}
+int RenderFormat::handle_event()
+{
+ RenderWindow *render_window = (RenderWindow *)window;
+ render_window->file_format->update(
+ (render_window->render->use_labels ?
+ _("Select the first file to render to:") :
+ _("Select a file to render to:")));
+ return 1;
+}
RenderBeepOnDone::RenderBeepOnDone(RenderWindow *rwindow, int x, int y)
- : BC_CheckBox(x, y, rwindow->render->beep, _("Beep on done"))
+ : BC_FPot(x, y, rwindow->render->beep*100.f, 0.f, 100.f)
{
this->rwindow = rwindow;
}
int RenderBeepOnDone::handle_event()
{
- rwindow->render->beep = get_value();
+ rwindow->render->beep = get_value()/100.f;
return 1;
}