📄 extrapanel.cpp
字号:
vlc_object_release( p_aout );}void ExtraPanel::OnNormvol( wxCommandEvent &event ){ aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE); ChangeFiltersString( p_intf , p_aout, "normvol", event.IsChecked() ? VLC_TRUE : VLC_FALSE ); if( p_aout != NULL ) vlc_object_release( p_aout );}void ExtraPanel::OnNormvolSlider( wxScrollEvent &event ){ aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE); if( p_aout != NULL ) { var_SetFloat( p_aout, "norm-max-level", (float)event.GetPosition()/10 ); vlc_object_release( p_aout ); } else { config_PutFloat( p_intf, "norm-max-level", (float)event.GetPosition()/10 ); }}/*********************** * Video Panel events ***********************/void ExtraPanel::OnEnableAdjust(wxCommandEvent& event){ ChangeVFiltersString( p_intf, "adjust", event.IsChecked() ? VLC_TRUE : VLC_FALSE ); if( event.IsChecked() ) { restoredefaults_button->Enable(); brightness_slider->Enable(); saturation_slider->Enable(); contrast_slider->Enable(); hue_slider->Enable(); gamma_slider->Enable(); } else { restoredefaults_button->Disable(); brightness_slider->Disable(); saturation_slider->Disable(); contrast_slider->Disable(); hue_slider->Disable(); gamma_slider->Disable(); }}void ExtraPanel::OnRestoreDefaults( wxCommandEvent &event){ hue_slider->SetValue(0); saturation_slider->SetValue(100); brightness_slider->SetValue(100); contrast_slider->SetValue(100), gamma_slider->SetValue(10); wxScrollEvent *hscroll_event = new wxScrollEvent(0, Hue_Event, 0); OnAdjustUpdate(*hscroll_event); wxScrollEvent *sscroll_event = new wxScrollEvent(0, Saturation_Event, 100); OnAdjustUpdate(*sscroll_event); wxScrollEvent *bscroll_event = new wxScrollEvent(0, Brightness_Event, 100); OnAdjustUpdate(*bscroll_event); wxScrollEvent *cscroll_event = new wxScrollEvent(0, Contrast_Event, 100); OnAdjustUpdate(*cscroll_event); wxScrollEvent *gscroll_event = new wxScrollEvent(0, Gamma_Event, 10); OnAdjustUpdate(*gscroll_event);}void ExtraPanel::OnAdjustUpdate( wxScrollEvent &event){ vout_thread_t *p_vout = (vout_thread_t *)vlc_object_find(p_intf, VLC_OBJECT_VOUT, FIND_ANYWHERE); if( p_vout == NULL ) { switch( event.GetId() ) { case Hue_Event: config_PutInt( p_intf , "hue" , event.GetPosition() ); break; case Saturation_Event: config_PutFloat( p_intf , "saturation" , (float)event.GetPosition()/100 ); break; case Brightness_Event: config_PutFloat( p_intf , "brightness" , (float)event.GetPosition()/100 ); break; case Contrast_Event: config_PutFloat( p_intf , "contrast" , (float)event.GetPosition()/100 ); break; case Gamma_Event: config_PutFloat( p_intf , "gamma" , (float)event.GetPosition()/10 ); break; } } else { vlc_value_t val; switch( event.GetId() ) { case Hue_Event: val.i_int = event.GetPosition(); var_Set( p_vout, "hue", val ); config_PutInt( p_intf , "hue" , event.GetPosition() ); break; case Saturation_Event: val.f_float = (float)event.GetPosition() / 100; var_Set( p_vout, "saturation", val ); config_PutFloat( p_intf , "saturation" , (float)event.GetPosition()/100 ); break; case Brightness_Event: val.f_float = (float)event.GetPosition() / 100; var_Set( p_vout, "brightness", val ); config_PutFloat( p_intf , "brightness" , (float)event.GetPosition()/100 ); break; case Contrast_Event: val.f_float = (float)event.GetPosition() / 100; var_Set( p_vout, "contrast", val ); config_PutFloat( p_intf , "contrast" , (float)event.GetPosition()/100 ); break; case Gamma_Event: val.f_float = (float)event.GetPosition() / 10; var_Set( p_vout, "gamma", val ); config_PutFloat( p_intf , "gamma" , (float)event.GetPosition()/10 ); break; } vlc_object_release(p_vout); }}/* FIXME */void ExtraPanel::OnRatio( wxCommandEvent& event ){ config_PutPsz( p_intf, "aspect-ratio", ratio_combo->GetValue().mb_str(wxConvUTF8) );}void ExtraPanel::OnSelectFilter(wxCommandEvent& event){ int i_filter = event.GetId() - Filter0_Event ; if( vfilters[i_filter].psz_filter ) { ChangeVFiltersString( p_intf, vfilters[i_filter].psz_filter , event.IsChecked() ? VLC_TRUE : VLC_FALSE ); }}void ExtraPanel::OnFiltersInfo(wxCommandEvent& event){ wxMessageBox( wxU( _("Filtering effects to apply to the video. " "You must restart the stream for these settings to " "take effect.\n\n" "To configure these filters, go to Preferences / Video / " "Filters. In order to control the order in which they " "are applied, enter a filters string in the Video Filter " "Module inside the preferences." ) ), wxU( _("More Information" ) ), wxOK | wxICON_INFORMATION, this->p_parent );}/********************************** * Other functions **********************************/void ExtraPanel::CheckAout(){ aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE); if( p_aout != NULL ) { if( p_aout != p_intf->p_sys->p_aout ) { /* We want to know if someone changes the bands */ if( var_AddCallback( p_aout, "equalizer-bands", IntfBandsCallback, this ) ) { /* The variable does not exist yet, wait */ vlc_object_release( p_aout ); return; } if( var_AddCallback( p_aout, "equalizer-preamp", IntfPreampCallback, this ) ) { vlc_object_release( p_aout ); return; } /* Ok, we have our variables, make a first update round */ p_intf->p_sys->p_aout = p_aout; f_preamp = var_GetFloat( p_aout, "equalizer-preamp" ); psz_bands = var_GetString( p_aout, "equalizer-bands" ); b_update = VLC_TRUE; } vlc_object_release( p_aout ); }}static void ChangeVFiltersString( intf_thread_t *p_intf, char *psz_name, vlc_bool_t b_add ){ vout_thread_t *p_vout; char *psz_parser, *psz_string; psz_string = config_GetPsz( p_intf, "vout-filter" ); if( !psz_string ) psz_string = strdup(""); psz_parser = strstr( psz_string, psz_name ); if( b_add ) { if( !psz_parser ) { psz_parser = psz_string; asprintf( &psz_string, (*psz_string) ? "%s:%s" : "%s%s", psz_string, psz_name ); free( psz_parser ); } else { return; } } else { if( psz_parser ) { memmove( psz_parser, psz_parser + strlen(psz_name) + (*(psz_parser + strlen(psz_name)) == ':' ? 1 : 0 ), strlen(psz_parser + strlen(psz_name)) + 1 ); /* Remove trailing : : */ if( *(psz_string+strlen(psz_string ) -1 ) == ':' ) { *(psz_string+strlen(psz_string ) -1 ) = '\0'; } } else { free( psz_string ); return; } } /* Vout is not kept, so put that in the config */ config_PutPsz( p_intf, "vout-filter", psz_string ); /* Try to set on the fly */ p_vout = (vout_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_VOUT, FIND_ANYWHERE ); if( p_vout ) { var_SetString( p_vout, "vout-filter", psz_string ); vlc_object_release( p_vout ); } free( psz_string );}static void ChangeFiltersString( intf_thread_t *p_intf, aout_instance_t * p_aout, char *psz_name, vlc_bool_t b_add ){ char *psz_parser, *psz_string; if( p_aout ) { psz_string = var_GetString( p_aout, "audio-filter" ); } else { psz_string = config_GetPsz( p_intf, "audio-filter" ); } if( !psz_string ) psz_string = strdup(""); psz_parser = strstr( psz_string, psz_name ); if( b_add ) { if( !psz_parser ) { psz_parser = psz_string; asprintf( &psz_string, (*psz_string) ? "%s:%s" : "%s%s", psz_string, psz_name ); free( psz_parser ); } else { return; } } else { if( psz_parser ) { memmove( psz_parser, psz_parser + strlen(psz_name) + (*(psz_parser + strlen(psz_name)) == ':' ? 1 : 0 ), strlen(psz_parser + strlen(psz_name)) + 1 ); if( *(psz_string+strlen(psz_string ) -1 ) == ':' ) { *(psz_string+strlen(psz_string ) -1 ) = '\0'; } } else { free( psz_string ); return; } } if( p_aout == NULL ) { config_PutPsz( p_intf, "audio-filter", psz_string ); } else { var_SetString( p_aout, "audio-filter", psz_string ); for( int i = 0; i < p_aout->i_nb_inputs; i++ ) { p_aout->pp_inputs[i]->b_restart = VLC_TRUE; } } free( psz_string );}static int IntfBandsCallback( vlc_object_t *p_this, char const *psz_cmd, vlc_value_t oldval, vlc_value_t newval, void *param ){ ExtraPanel *p_panel = (ExtraPanel *)param; p_panel->psz_bands = strdup( newval.psz_string ); p_panel->b_update = VLC_TRUE; return VLC_SUCCESS;}static int IntfPreampCallback( vlc_object_t *p_this, char const *psz_cmd, vlc_value_t oldval, vlc_value_t newval, void *param ){ ExtraPanel *p_panel = (ExtraPanel *)param; p_panel->f_preamp = newval.f_float; p_panel->b_update = VLC_TRUE; return VLC_SUCCESS;}#if 0/********************************************************************** * A small window to contain the extrapanel in its undocked state **********************************************************************/BEGIN_EVENT_TABLE(ExtraWindow, wxFrame)END_EVENT_TABLE()ExtraWindow::ExtraWindow( intf_thread_t *_p_intf, wxWindow *p_parent, wxPanel *_extra_panel ): wxFrame( p_parent, -1, wxU(_("Extended controls")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE ){ p_intf = _p_intf; SetIcon( *p_intf->p_sys->p_icon ); wxBoxSizer *window_sizer = new wxBoxSizer( wxVERTICAL ); SetSizer( window_sizer ); panel = _extra_panel; window_sizer->Add( panel ); window_sizer->Layout(); window_sizer->Fit( this ); Show();}ExtraWindow::~ExtraWindow(){ delete panel;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -