⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extrapanel.cpp

📁 uclinux 下的vlc播放器源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
        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 + -