5 #include "mwindowgui.h"
7 #include "resizetrackthread.h"
16 ResizeTrackThread::ResizeTrackThread(MWindow *mwindow, int track_number)
19 this->mwindow = mwindow;
20 this->track_number = track_number;
24 ResizeTrackThread::~ResizeTrackThread()
28 window->lock_window();
30 window->unlock_window();
36 void ResizeTrackThread::start_window(Track *track, int track_number)
38 this->track_number = track_number;
39 w1 = w = track->track_w;
40 h1 = h = track->track_h;
41 w_scale = h_scale = 1;
46 void ResizeTrackThread::run()
48 ResizeTrackWindow *window = this->window =
49 new ResizeTrackWindow(mwindow,
51 mwindow->gui->get_abs_cursor_x(1),
52 mwindow->gui->get_abs_cursor_y(1));
53 window->create_objects();
54 int result = window->run_window();
61 Track *track = mwindow->edl->tracks->get_item_number(track_number);
65 mwindow->resize_track(track, w, h);
73 ResizeTrackWindow::ResizeTrackWindow(MWindow *mwindow,
74 ResizeTrackThread *thread,
77 : BC_Window(PROGRAM_NAME ": Resize Track",
79 y - get_resources()->ok_images[0]->get_h() + 100 / 2,
81 get_resources()->ok_images[0]->get_h() + 100,
83 get_resources()->ok_images[0]->get_h() + 100,
88 this->mwindow = mwindow;
89 this->thread = thread;
92 ResizeTrackWindow::~ResizeTrackWindow()
96 void ResizeTrackWindow::create_objects()
100 add_subwindow(new BC_Title(x, y, _("Size:")));
102 add_subwindow(w = new ResizeTrackWidth(this,
107 add_subwindow(new BC_Title(x, y, _("x")));
109 add_subwindow(h = new ResizeTrackHeight(this,
114 add_subwindow(new FrameSizePulldown(mwindow,
122 add_subwindow(new BC_Title(x, y, _("Scale:")));
124 add_subwindow(w_scale = new ResizeTrackScaleW(this,
129 add_subwindow(new BC_Title(x, y, _("x")));
131 add_subwindow(h_scale = new ResizeTrackScaleH(this,
136 add_subwindow(new BC_OKButton(this));
137 add_subwindow(new BC_CancelButton(this));
143 void ResizeTrackWindow::update(int changed_scale,
147 //printf("ResizeTrackWindow::update %d %d %d\n", changed_scale, changed_size, changed_all);
148 if(changed_scale || changed_all)
150 thread->w = (int)(thread->w1 * thread->w_scale);
151 w->update((int64_t)thread->w);
152 thread->h = (int)(thread->h1 * thread->h_scale);
153 h->update((int64_t)thread->h);
156 if(changed_size || changed_all)
158 thread->w_scale = (double)thread->w / thread->w1;
159 w_scale->update((float)thread->w_scale);
160 thread->h_scale = (double)thread->h / thread->h1;
161 h_scale->update((float)thread->h_scale);
169 ResizeTrackWidth::ResizeTrackWidth(ResizeTrackWindow *gui,
170 ResizeTrackThread *thread,
173 : BC_TextBox(x, y, 90, 1, thread->w)
176 this->thread = thread;
178 int ResizeTrackWidth::handle_event()
180 thread->w = atol(get_text());
181 gui->update(0, 1, 0);
185 ResizeTrackHeight::ResizeTrackHeight(ResizeTrackWindow *gui,
186 ResizeTrackThread *thread,
189 : BC_TextBox(x, y, 90, 1, thread->h)
192 this->thread = thread;
194 int ResizeTrackHeight::handle_event()
196 thread->h = atol(get_text());
197 gui->update(0, 1, 0);
202 ResizeTrackScaleW::ResizeTrackScaleW(ResizeTrackWindow *gui,
203 ResizeTrackThread *thread,
206 : BC_TextBox(x, y, 90, 1, (float)thread->w_scale)
209 this->thread = thread;
211 int ResizeTrackScaleW::handle_event()
213 thread->w_scale = atof(get_text());
214 gui->update(1, 0, 0);
218 ResizeTrackScaleH::ResizeTrackScaleH(ResizeTrackWindow *gui,
219 ResizeTrackThread *thread,
222 : BC_TextBox(x, y, 90, 1, (float)thread->h_scale)
225 this->thread = thread;
227 int ResizeTrackScaleH::handle_event()
229 thread->h_scale = atof(get_text());
230 gui->update(1, 0, 0);