X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fassetedit.C;h=267597482af0b23a77530453a80e99027d5207fd;hp=9d3e6869b3cec69fbc4bd5e36514250dbacee221;hb=77815ec03df6a03ed75433e8cf8ae1e83fb76d6e;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd diff --git a/cinelerra-5.1/cinelerra/assetedit.C b/cinelerra-5.1/cinelerra/assetedit.C index 9d3e6869..26759748 100644 --- a/cinelerra-5.1/cinelerra/assetedit.C +++ b/cinelerra-5.1/cinelerra/assetedit.C @@ -95,61 +95,63 @@ void AssetEdit::edit_asset(Indexable *indexable) { EDL *nested_edl = (EDL*)indexable; - strcpy(changed_params->path, nested_edl->path); + strcpy(changed_params->path, nested_edl->path); changed_params->sample_rate = nested_edl->session->sample_rate; - changed_params->channels = nested_edl->session->audio_channels; + changed_params->channels = nested_edl->session->audio_channels; //printf("AssetEdit::edit_asset %d %f\n", __LINE__, nested_edl->session->frame_rate); changed_params->frame_rate = nested_edl->session->frame_rate; - changed_params->width = nested_edl->session->output_w; - changed_params->height = nested_edl->session->output_h; + changed_params->width = nested_edl->session->output_w; + changed_params->height = nested_edl->session->output_h; } BC_DialogThread::start(); } +void AssetEdit::handle_done_event(int result) +{ + if( !result ) { + changed_params->tcstart = ceil(indexable->get_frame_rate() * + (atoi(window->tc_hours_textbox->get_text()) * 3600 + + atoi(window->tc_minutes_textbox->get_text()) * 60 + + atoi(window->tc_seconds_textbox->get_text()))) + + atoi(window->tc_rest_textbox->get_text()); + } +} + void AssetEdit::handle_close_event(int result) { - if(!result) - { + if(!result) { int changed = 0; Asset *asset = 0; EDL *nested_edl = 0; - if(indexable->is_asset) - { + if(indexable->is_asset) { asset = (Asset*)indexable; - if(!changed_params->equivalent(*asset, 1, 1)) + if( changed_params->equivalent(*asset, 1, 1, mwindow->edl) ) changed = 1; } - else - { + else { nested_edl = (EDL*)indexable; - if(strcmp(changed_params->path, nested_edl->path) -// || -// changed_params->sample_rate != nested_edl->session->sample_rate || -// !EQUIV(changed_params->frame_rate, nested_edl->session->frame_rate) - ) + if( strcmp(changed_params->path, nested_edl->path) +// || changed_params->sample_rate != nested_edl->session->sample_rate +// || !EQUIV(changed_params->frame_rate, nested_edl->session->frame_rate + ) changed = 1; } -//printf("AssetEdit::handle_close_event %d\n", __LINE__); - - if(changed) - { + if(changed) { mwindow->gui->lock_window(); //printf("AssetEdit::handle_close_event %d\n", __LINE__); // Omit index status from copy since an index rebuild may have been // happening when new_asset was created but not be happening anymore. - if(asset) - { - mwindow->remove_asset_from_caches(asset); + if(asset) { + mwindow->remove_asset_from_caches(asset); //printf("AssetEdit::handle_close_event %d %f\n", __LINE__, asset->get_frame_rate()); asset->copy_from(changed_params, 0); //printf("AssetEdit::handle_close_event %d %d %d\n", __LINE__, changed_params->bits, asset->bits); } - else - { + else { strcpy(nested_edl->path, changed_params->path); // Other parameters can't be changed because they're defined in the other EDL // nested_edl->session->frame_rate = changed_params->frame_rate; @@ -157,18 +159,11 @@ void AssetEdit::handle_close_event(int result) } //printf("AssetEdit::handle_close_event %d\n", __LINE__); - mwindow->gui->update(0, - 2, - 0, - 0, - 0, - 0, - 0); + mwindow->gui->update(0, 2, 0, 0, 0, 0, 0); //printf("AssetEdit::handle_close_event %d\n", __LINE__); // Start index rebuilding - if( (asset && asset->audio_data) || nested_edl) - { + if( (asset && asset->audio_data) || nested_edl) { char source_filename[BCTEXTLEN]; char index_filename[BCTEXTLEN]; IndexFile::get_index_filename(source_filename, @@ -216,7 +211,7 @@ AssetEditWindow::AssetEditWindow(MWindow *mwindow, AssetEdit *asset_edit) mwindow->gui->get_abs_cursor_y(1) - (128 + 64 + (!asset_edit->indexable->have_audio() ? 0 : 180) + (!asset_edit->indexable->have_video() ? 0 : 350)) / 2, - 400, (128 + 64 + + 450, (128 + 64 + (!asset_edit->indexable->have_audio() ? 0 : 180) + (!asset_edit->indexable->have_video() ? 0 : 350)), 0, 0, 1) { @@ -248,7 +243,7 @@ AssetEditWindow::~AssetEditWindow() void AssetEditWindow::create_objects() { - int y = 10, x = 10, x1 = 10, x2 = 160; + int y = 10, x = 10, x1 = 10, x2 = 190; char string[BCTEXTLEN]; int vmargin; FileSystem fs; @@ -506,7 +501,7 @@ void AssetEditWindow::create_objects() add_subwindow(new BC_Title(x, y, _("Frame rate:"))); x = x2; - sprintf(string, "%.2f", asset_edit->changed_params->frame_rate); + sprintf(string, "%.4f", asset_edit->changed_params->frame_rate); //printf("AssetEditWindow::create_objects %d %f\n", __LINE__, asset_edit->changed_params->frame_rate); if(asset) @@ -566,11 +561,11 @@ void AssetEditWindow::create_objects() y += ilacefixoption_chkboxw->get_h() + 5; // -------------------- add_subwindow(title = new BC_Title(x1, y, _("Asset's interlacing:"))); - add_subwindow(textboxw = new AssetEditILacemode(this, "", BC_ILACE_ASSET_MODEDEFAULT, x2, y, 200)); + add_subwindow(textboxw = new AssetEditILacemode(this, "", ILACE_ASSET_MODEDEFAULT, x2, y, 200)); ilacefixoption_chkboxw->ilacemode_textbox = textboxw; add_subwindow(listboxw = new AssetEditInterlacemodePulldown(mwindow, textboxw, - &asset->interlace_mode, + &asset_edit->changed_params->interlace_mode, (ArrayList*)&mwindow->interlace_asset_modes, ilacefixoption_chkboxw, x2 + textboxw->get_w(), @@ -580,11 +575,11 @@ void AssetEditWindow::create_objects() // -------------------- add_subwindow(title = new BC_Title(x1, y, _("Interlace correction:"))); - add_subwindow(textboxw = new AssetEditILacefixmethod(this, "", BC_ILACE_FIXDEFAULT, x2, y, 200)); + add_subwindow(textboxw = new AssetEditILacefixmethod(this, "", ILACE_FIXDEFAULT, x2, y, 200)); ilacefixoption_chkboxw->ilacefixmethod_textbox = textboxw; add_subwindow(listboxw = new InterlacefixmethodPulldown(mwindow, textboxw, - &asset->interlace_fixmethod, + &asset_edit->changed_params->interlace_fixmethod, (ArrayList*)&mwindow->interlace_asset_fixmethods, x2 + textboxw->get_w(), y)); @@ -609,39 +604,27 @@ void AssetEditWindow::create_objects() x = x2; // Calculate values to enter into textboxes - char tc[12]; - - Units::totext(tc, - asset->tcstart / asset->frame_rate, - TIME_HMSF, - asset->sample_rate, - asset->frame_rate); - - char *tc_hours = tc; - char *tc_minutes = strchr(tc, ':') + 1; - *(tc_minutes - 1) = 0; - char *tc_seconds = strchr(tc_minutes, ':') + 1; - *(tc_seconds - 1) = 0; - char *tc_rest = strchr(tc_seconds, ':') + 1; - *(tc_rest - 1) = 0; - - add_subwindow(new AssetEditTCStartTextBox(this, atoi(tc_hours), x, y, - (int) (asset->frame_rate * 60 * 60))); - x += 30; - add_subwindow(new BC_Title(x, y, ":")); - x += 10; - add_subwindow(new AssetEditTCStartTextBox(this, atoi(tc_minutes), x, y, - (int) (asset->frame_rate * 60))); - x += 30; - add_subwindow(new BC_Title(x, y, ":")); - x += 10; - add_subwindow(new AssetEditTCStartTextBox(this, atoi(tc_seconds), x, y, - (int) (asset->frame_rate))); - x += 30; - add_subwindow(new BC_Title(x, y, ":")); - x += 10; - add_subwindow(new AssetEditTCStartTextBox(this, atoi(tc_rest), x, y, 1)); - + char text[32], *tc = text; + if( asset ) + Units::totext(tc, asset->tcstart / asset->frame_rate, + TIME_HMSF, asset->sample_rate, asset->frame_rate); + else + strcpy(tc, "0:00:00:00"); + + const char *tc_hours = tc, *tc_minutes, *tc_seconds, *tc_rest; + tc = strchr(tc, ':'); *tc++ = 0; tc_minutes = tc; + tc = strchr(tc, ':'); *tc++ = 0; tc_seconds = tc; + tc = strchr(tc, ':'); *tc++ = 0; tc_rest = tc; + + int padw = BC_Title::calculate_w(this, ":", MEDIUMFONT); + int fldw = BC_Title::calculate_w(this, "00", MEDIUMFONT) + 5; + add_subwindow(tc_hours_textbox = new BC_TextBox(x, y, fldw, 1, tc_hours)); + add_subwindow(new BC_Title(x += tc_hours_textbox->get_w(), y, ":")); + add_subwindow(tc_minutes_textbox = new BC_TextBox(x += padw, y, fldw, 1, tc_minutes)); + add_subwindow(new BC_Title(x += tc_minutes_textbox->get_w(), y, ":")); + add_subwindow(tc_seconds_textbox = new BC_TextBox(x += padw, y , fldw, 1, tc_seconds)); + add_subwindow(new BC_Title(x += tc_seconds_textbox->get_w(), y, ":")); + add_subwindow(tc_rest_textbox = new BC_TextBox(x += 10, y, fldw, 1, tc_rest)); y += 30; } @@ -708,7 +691,7 @@ int AssetEditFRate::handle_event() Interlaceautofix::Interlaceautofix(MWindow *mwindow,AssetEditWindow *fwindow, int x, int y) : BC_CheckBox(x, y, - ((Asset *)fwindow->asset_edit->indexable)->interlace_autofixoption, + fwindow->asset_edit->changed_params->interlace_autofixoption, _("Automatically Fix Interlacing")) { this->fwindow = fwindow; @@ -721,7 +704,7 @@ Interlaceautofix::~Interlaceautofix() int Interlaceautofix::handle_event() { - Asset *asset = (Asset *)fwindow->asset_edit->indexable; + Asset *asset = fwindow->asset_edit->changed_params; asset->interlace_autofixoption = get_value(); showhideotherwidgets(); return 1; @@ -731,8 +714,8 @@ void Interlaceautofix::showhideotherwidgets() { int thevalue = get_value(); - Asset *asset = (Asset *)fwindow->asset_edit->indexable; - if (thevalue == BC_ILACE_AUTOFIXOPTION_AUTO) + Asset *asset = fwindow->asset_edit->changed_params; + if (thevalue == ILACE_AUTOFIXOPTION_AUTO) { this->ilacemode_textbox->enable(); this->ilacemode_listbox->enable(); @@ -742,7 +725,7 @@ void Interlaceautofix::showhideotherwidgets() ilacefixmethod_to_text(string,xx); this->ilacefixmethod_textbox->update(string); } - if (thevalue == BC_ILACE_AUTOFIXOPTION_MANUAL) + if (thevalue == ILACE_AUTOFIXOPTION_MANUAL) { this->ilacemode_textbox->disable(); this->ilacemode_listbox->disable(); @@ -792,7 +775,7 @@ AssetEditILaceautofixoption::AssetEditILaceautofixoption(AssetEditWindow *fwindo int AssetEditILaceautofixoption::handle_event() { - Asset *asset = (Asset *)fwindow->asset_edit->indexable; + Asset *asset = fwindow->asset_edit->changed_params; asset->interlace_autofixoption = ilaceautofixoption_from_text(get_text(), this->thedefault); return 1; } @@ -807,7 +790,7 @@ AssetEditILacemode::AssetEditILacemode(AssetEditWindow *fwindow, const char *tex int AssetEditILacemode::handle_event() { - Asset *asset = (Asset *)fwindow->asset_edit->indexable; + Asset *asset = fwindow->asset_edit->changed_params; asset->interlace_mode = ilacemode_from_text(get_text(),this->thedefault); return 1; } @@ -954,7 +937,7 @@ int AssetEditPathText::handle_event() AssetEditPath::AssetEditPath(MWindow *mwindow, AssetEditWindow *fwindow, BC_TextBox *textbox, int y, const char *text, const char *window_title, const char *window_caption) - : BrowseButton(mwindow, fwindow, textbox, 310, y, text, + : BrowseButton(mwindow->theme, fwindow, textbox, 310, y, text, window_title, window_caption, 0) { this->fwindow = fwindow; @@ -1040,8 +1023,8 @@ void DetailAssetThread::stop() dwindow->lock_window("DetailAssetThread::stop"); dwindow->set_done(1); dwindow->unlock_window(); - Thread::join(); } + Thread::join(); } void DetailAssetWindow::create_objects() @@ -1090,8 +1073,7 @@ void DetailAssetThread::run() AssetEditReelName::AssetEditReelName(AssetEditWindow *fwindow, int x, int y) - : BC_TextBox(x, y, 300, 1, - ((Asset *)fwindow->asset_edit->indexable)->reel_name, + : BC_TextBox(x, y, 220, 1, fwindow->asset_edit->changed_params->reel_name, 1, MEDIUMFONT, 1) { this->fwindow = fwindow; @@ -1111,7 +1093,7 @@ int AssetEditReelName::handle_event() AssetEditReelNumber::AssetEditReelNumber(AssetEditWindow *fwindow, int x, int y) - : BC_TextBox(x, y, 200, 1, ((Asset *)fwindow->asset_edit->indexable)->reel_number) + : BC_TextBox(x, y, 200, 1, fwindow->asset_edit->changed_params->reel_number) { this->fwindow = fwindow; } @@ -1127,25 +1109,3 @@ int AssetEditReelNumber::handle_event() - - -AssetEditTCStartTextBox::AssetEditTCStartTextBox(AssetEditWindow *fwindow, int value, int x, int y, int multiplier) - : BC_TextBox(x, y, 30, 1, value) -{ - this->fwindow = fwindow; - this->multiplier = multiplier; - previous = value; -} -AssetEditTCStartTextBox::~AssetEditTCStartTextBox() -{ -} -int AssetEditTCStartTextBox::handle_event() -{ - Asset *asset = fwindow->asset_edit->changed_params; - asset->tcstart -= previous * multiplier; - asset->tcstart += atoi(get_text()) * multiplier; - previous = atoi(get_text()); - return 1; -} - -