}
this->w = w; this->h = h;
this->w1 = w1; this->h1 = h1;
- w_scale = h_scale = 1;
+ w_scale = (float)w / w1;
+ h_scale = (float)h / h1;
start();
}
if(!result) {
update();
}
-
+#ifdef GLx4
if(((w % 4) || (h % 4)) &&
mwindow->edl->session->playback_config->vconfig->driver == PLAYBACK_X11_GL)
{
_("This track's dimensions are not multiples of 4 so\n"
"it can't be rendered by OpenGL."));
}
+#endif
}
-
-
+#define RSZ_W xS(330)
+#define RSZ_H yS(120)
ResizeVTrackWindow::ResizeVTrackWindow(MWindow *mwindow,
- ResizeVTrackThread *thread,
- int x,
- int y)
- : BC_Window(_(PROGRAM_NAME ": Resize Track"),
- x - 320 / 2, y - get_resources()->ok_images[0]->get_h() + 100 / 2,
- 400, get_resources()->ok_images[0]->get_h() + 100,
- 400, get_resources()->ok_images[0]->get_h() + 100,
- 0, 0, 1)
+ ResizeVTrackThread *thread, int x, int y)
+ : BC_Window(_(PROGRAM_NAME ": Resize Track"), x-RSZ_W/2, y-RSZ_H/2,
+ RSZ_W, RSZ_H, RSZ_W, RSZ_H, 0, 0, 1)
{
this->mwindow = mwindow;
this->thread = thread;
+// *** CONTEXT_HELP ***
+ context_help_set_keyword("Track and Output Sizes");
}
ResizeVTrackWindow::~ResizeVTrackWindow()
void ResizeVTrackWindow::create_objects()
{
+ int xs5 = xS(5), xs10 = xS(10);
+ int ys10 = yS(10);
lock_window("ResizeVTrackWindow::create_objects");
- int x = 10, y = 10;
+ int x = xs10, y = ys10;
BC_Title *size_title = new BC_Title(x, y, _("Size:"));
add_subwindow(size_title);
int x1 = x + size_title->get_w();
- int y1 = y + size_title->get_h() + 10;
+ int y1 = y + size_title->get_h() + ys10;
BC_Title *scale_title = new BC_Title(x, y1, _("Scale:"));
add_subwindow(scale_title);
int x2 = x + scale_title->get_w();
if( x2 > x1 ) x1 = x2;
- x1 += 10;
+ x1 += ys10;
add_subwindow(w = new ResizeVTrackWidth(this, thread, x1, y));
- x2 = x1 + w->get_w() + 5;
+ x2 = x1 + w->get_w() + xs5;
BC_Title *xy = new BC_Title(x2, y, _("x"));
add_subwindow(xy);
- int x3 = x2 + xy->get_w() + 5;
+ int x3 = x2 + xy->get_w() + xs5;
add_subwindow(h = new ResizeVTrackHeight(this, thread, x3, y));
- x = x3 + h->get_w() + 5;
+ x = x3 + h->get_w() + xs5;
FrameSizePulldown *pulldown;
add_subwindow(pulldown = new FrameSizePulldown(mwindow->theme, w, h, x, y));
- x += pulldown->get_w() + 5;
+ x += pulldown->get_w() + xs5;
add_subwindow(new ResizeVTrackSwap(this, thread, x, y));
add_subwindow(w_scale = new ResizeVTrackScaleW(this, thread, x1, y1));
add_subwindow(new BC_Title(x2, y1, _("x")));
add_subwindow(h_scale = new ResizeVTrackScaleH(this, thread, x3, y1));
+ x = x3 + h_scale->get_w() + xs5;
+ add_subwindow(reset = new ResizeReset(this, thread, x, y1));
add_subwindow(new BC_OKButton(this));
add_subwindow(new BC_CancelButton(this));
unlock_window();
}
-void ResizeVTrackWindow::update(int changed_scale,
- int changed_size,
- int changed_all)
+void ResizeVTrackWindow::update(int changed_scale, int changed_size)
{
-//printf("ResizeVTrackWindow::update %d %d %d\n", changed_scale, changed_size, changed_all);
- if(changed_scale || changed_all)
- {
+ if( changed_scale ) {
thread->w = (int)(thread->w1 * thread->w_scale);
w->update((int64_t)thread->w);
thread->h = (int)(thread->h1 * thread->h_scale);
h->update((int64_t)thread->h);
}
- else
- if(changed_size || changed_all)
- {
+ if( changed_size ) {
thread->w_scale = thread->w1 ? (double)thread->w / thread->w1 : 1.;
w_scale->update((float)thread->w_scale);
thread->h_scale = thread->h1 ? (double)thread->h / thread->h1 : 1.;
-
-
ResizeVTrackSwap::ResizeVTrackSwap(ResizeVTrackWindow *gui,
ResizeVTrackThread *thread,
int x,
thread->h = w;
gui->w->update((int64_t)h);
gui->h->update((int64_t)w);
- gui->update(0, 1, 0);
+ gui->update(0, 1);
return 1;
}
ResizeVTrackThread *thread,
int x,
int y)
- : BC_TextBox(x, y, 90, 1, thread->w)
+ : BC_TextBox(x, y, xS(90), 1, thread->w)
{
this->gui = gui;
this->thread = thread;
int ResizeVTrackWidth::handle_event()
{
thread->w = atol(get_text());
- gui->update(0, 1, 0);
+ gui->update(0, 1);
return 1;
}
ResizeVTrackThread *thread,
int x,
int y)
- : BC_TextBox(x, y, 90, 1, thread->h)
+ : BC_TextBox(x, y, xS(90), 1, thread->h)
{
this->gui = gui;
this->thread = thread;
int ResizeVTrackHeight::handle_event()
{
thread->h = atol(get_text());
- gui->update(0, 1, 0);
+ gui->update(0, 1);
return 1;
}
ResizeVTrackThread *thread,
int x,
int y)
- : BC_TextBox(x, y, 90, 1, (float)thread->w_scale)
+ : BC_TextBox(x, y, xS(90), 1, (float)thread->w_scale)
{
this->gui = gui;
this->thread = thread;
int ResizeVTrackScaleW::handle_event()
{
thread->w_scale = atof(get_text());
- gui->update(1, 0, 0);
+ gui->update(1, 0);
return 1;
}
ResizeVTrackThread *thread,
int x,
int y)
- : BC_TextBox(x, y, 90, 1, (float)thread->h_scale)
+ : BC_TextBox(x, y, xS(90), 1, (float)thread->h_scale)
{
this->gui = gui;
this->thread = thread;
int ResizeVTrackScaleH::handle_event()
{
thread->h_scale = atof(get_text());
- gui->update(1, 0, 0);
+ gui->update(1, 0);
return 1;
}
+ResizeReset::ResizeReset(ResizeVTrackWindow *gui,
+ ResizeVTrackThread *thread, int x, int y)
+ : BC_Button(x, y, thread->mwindow->theme->get_image_set("reset_button"))
+{
+ this->gui = gui;
+ this->thread = thread;
+ set_tooltip(_("Reset"));
+}
+int ResizeReset::handle_event()
+{
+ thread->w = thread->w1;
+ thread->h = thread->h1;
+ thread->w_scale = 1;
+ thread->h_scale = 1;
+ gui->update(1, 1);
+ return 1;
+}