X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fcwindowtool.C;h=8ba0e3b2c7bbc85cbcdf1c7f5d452f15427a18a4;hp=25c436afb4647b4916b77f979dacdc69fe09467d;hb=ac8f3979437fb45effb135a1bb6bee871f52d635;hpb=aeec663c0a88a7ee81a820e758264050a7c4b37e diff --git a/cinelerra-5.1/cinelerra/cwindowtool.C b/cinelerra-5.1/cinelerra/cwindowtool.C index 25c436af..8ba0e3b2 100644 --- a/cinelerra-5.1/cinelerra/cwindowtool.C +++ b/cinelerra-5.1/cinelerra/cwindowtool.C @@ -360,7 +360,7 @@ CWindowCoord::CWindowCoord(CWindowToolGUI *gui, int x, int y, float value, int l } CWindowCoord::CWindowCoord(CWindowToolGUI *gui, int x, int y, int value) - : BC_TumbleTextBox(gui, (int64_t)value, (int64_t)-65536, (int64_t)65536, x, y, 70, 3) + : BC_TumbleTextBox(gui, (int64_t)value, (int64_t)-65536, (int64_t)65536, x, y, 70) { this->gui = gui; } @@ -372,20 +372,20 @@ int CWindowCoord::handle_event() } -CWindowCropOK::CWindowCropOK(MWindow *mwindow, CWindowToolGUI *gui, int x, int y) - : BC_GenericButton(x, y, _("Do it")) +CWindowCropApply::CWindowCropApply(MWindow *mwindow, CWindowCropGUI *crop_gui, int x, int y) + : BC_GenericButton(x, y, _("Apply")) { this->mwindow = mwindow; - this->gui = gui; + this->crop_gui = crop_gui; } -int CWindowCropOK::handle_event() +int CWindowCropApply::handle_event() { - mwindow->crop_video(); + mwindow->crop_video(crop_gui->crop_mode->mode); return 1; } -int CWindowCropOK::keypress_event() +int CWindowCropApply::keypress_event() { if(get_keypress() == 0xd) { @@ -395,7 +395,50 @@ int CWindowCropOK::keypress_event() return 0; } +const char *CWindowCropOpMode::crop_ops[] = { + N_("Reformat"), + N_("Resize"), + N_("Shrink"), +}; + +CWindowCropOpMode::CWindowCropOpMode(MWindow *mwindow, CWindowCropGUI *crop_gui, + int mode, int x, int y) + : BC_PopupMenu(x, y, 140, _(crop_ops[mode]), 1) +{ + this->mwindow = mwindow; + this->crop_gui = crop_gui; + this->mode = mode; +} +CWindowCropOpMode::~CWindowCropOpMode() +{ +} + +void CWindowCropOpMode::create_objects() +{ + for( int id=0,nid=sizeof(crop_ops)/sizeof(crop_ops[0]); idpopup = popup; + this->id = id; +} +int CWindowCropOpItem::handle_event() +{ + popup->set_text(get_text()); + popup->mode = id; + return popup->handle_event(); +} @@ -430,17 +473,19 @@ void CWindowCropGUI::create_objects() add_subwindow(title = new BC_Title(x, y, _("W:"))); column1 = MAX(column1, title->get_w()); y += pad; - add_subwindow(new CWindowCropOK(mwindow, thread->tool_gui, x, y)); + add_subwindow(new CWindowCropApply(mwindow, this, x, y)); x += column1 + 5; y = 10; x1 = new CWindowCoord(thread->tool_gui, x, y, mwindow->edl->session->crop_x1); x1->create_objects(); + x1->set_boundaries((int64_t)0, (int64_t)65536); y += pad; width = new CWindowCoord(thread->tool_gui, x, y, mwindow->edl->session->crop_x2 - mwindow->edl->session->crop_x1); width->create_objects(); + width->set_boundaries((int64_t)1, (int64_t)65536); x += x1->get_w() + 10; @@ -458,10 +503,19 @@ void CWindowCropGUI::create_objects() y1 = new CWindowCoord(thread->tool_gui, x, y, mwindow->edl->session->crop_y1); y1->create_objects(); + y1->set_boundaries((int64_t)0, (int64_t)65536); y += pad; + height = new CWindowCoord(thread->tool_gui, x, y, mwindow->edl->session->crop_y2 - mwindow->edl->session->crop_y1); height->create_objects(); + height->set_boundaries((int64_t)1, (int64_t)65536); + y += pad; + + add_subwindow(crop_mode = new CWindowCropOpMode(mwindow, this, + CROP_REFORMAT, x, y)); + crop_mode->create_objects(); + unlock_window(); }