From 6eae67a95ea1faab6ca74e3a24eaa73a0add8239 Mon Sep 17 00:00:00 2001 From: Rodrigo Braz Monteiro Date: Tue, 21 Feb 2006 00:55:16 +0000 Subject: [PATCH] Separated volume on its own slider bar Originally committed to SVN as r89. --- core/audio_box.cpp | 56 +++++++++++++++++++++++++++-- core/audio_box.h | 6 ++++ core/audio_display.cpp | 1 - core/bitmaps/toggle_audio_link.bmp | Bin 0 -> 1498 bytes core/changelog.txt | 1 + core/options.cpp | 1 + core/res.rc | 1 + core/video_box.cpp | 8 ++--- 8 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 core/bitmaps/toggle_audio_link.bmp diff --git a/core/audio_box.cpp b/core/audio_box.cpp index 45f5b1eb1..829fa75af 100644 --- a/core/audio_box.cpp +++ b/core/audio_box.cpp @@ -75,7 +75,12 @@ wxPanel(parent,-1,wxDefaultPosition,wxDefaultSize,wxTAB_TRAVERSAL|wxBORDER_RAISE HorizontalZoom = new wxSlider(this,Audio_Horizontal_Zoom,50,0,100,wxDefaultPosition,wxSize(-1,20),wxSL_VERTICAL); HorizontalZoom->SetToolTip(_("Horizontal zoom")); VerticalZoom = new wxSlider(this,Audio_Vertical_Zoom,50,0,100,wxDefaultPosition,wxSize(-1,20),wxSL_VERTICAL|wxSL_INVERSE); - VerticalZoom->SetToolTip(_("Vertical zoom/Volume")); + VerticalZoom->SetToolTip(_("Vertical zoom")); + VolumeBar = new wxSlider(this,Audio_Volume,50,0,100,wxDefaultPosition,wxSize(-1,20),wxSL_VERTICAL|wxSL_INVERSE); + VolumeBar->SetToolTip(_("Audio Volume")); + VerticalLink = new ToggleBitmap(this,Audio_Vertical_Link,wxBITMAP(toggle_audio_link)); + VerticalLink->SetToolTip(_("Link vertical zoom and volxmlume sliders")); + VerticalLink->SetValue(Options.AsBool(_T("Audio Link"))); // Display sizer DisplaySizer = new wxBoxSizer(wxVERTICAL); @@ -83,11 +88,19 @@ wxPanel(parent,-1,wxDefaultPosition,wxDefaultSize,wxTAB_TRAVERSAL|wxBORDER_RAISE DisplaySizer->Add(Sash,0,wxEXPAND,0); DisplaySizer->Add(audioScroll,0,wxEXPAND,0); + // VertVol sider + wxSizer *VertVol = new wxBoxSizer(wxHORIZONTAL); + wxSizer *VertVolArea = new wxBoxSizer(wxVERTICAL); + VertVol->Add(VerticalZoom,1,wxEXPAND,0); + VertVol->Add(VolumeBar,1,wxEXPAND,0); + VertVolArea->Add(VertVol,1,wxEXPAND,0); + VertVolArea->Add(VerticalLink,0,wxEXPAND,0); + // Top sizer TopSizer = new wxBoxSizer(wxHORIZONTAL); TopSizer->Add(DisplaySizer,1,wxEXPAND,0); TopSizer->Add(HorizontalZoom,0,wxEXPAND,0); - TopSizer->Add(VerticalZoom,0,wxEXPAND,0); + TopSizer->Add(VertVolArea,0,wxEXPAND,0); // Buttons sizer wxSizer *ButtonSizer = new wxBoxSizer(wxHORIZONTAL); @@ -218,6 +231,7 @@ BEGIN_EVENT_TABLE(AudioBox,wxPanel) EVT_COMMAND_SCROLL(Audio_Scrollbar, AudioBox::OnScrollbar) EVT_COMMAND_SCROLL(Audio_Horizontal_Zoom, AudioBox::OnHorizontalZoom) EVT_COMMAND_SCROLL(Audio_Vertical_Zoom, AudioBox::OnVerticalZoom) + EVT_COMMAND_SCROLL(Audio_Volume, AudioBox::OnVolume) EVT_SASH_DRAGGED(Audio_Sash,AudioBox::OnSash) EVT_BUTTON(Audio_Button_Play, AudioBox::OnPlaySelection) @@ -236,6 +250,7 @@ BEGIN_EVENT_TABLE(AudioBox,wxPanel) EVT_BUTTON(Audio_Button_Leadin,AudioBox::OnLeadIn) EVT_BUTTON(Audio_Button_Leadout,AudioBox::OnLeadOut) + EVT_TOGGLEBUTTON(Audio_Vertical_Link, AudioBox::OnVerticalLink) EVT_TOGGLEBUTTON(Audio_Button_Karaoke, AudioBox::OnKaraoke) EVT_TOGGLEBUTTON(Audio_Check_AutoGoto,AudioBox::OnAutoGoto) EVT_TOGGLEBUTTON(Audio_Button_Split,AudioBox::OnSplit) @@ -265,7 +280,42 @@ void AudioBox::OnVerticalZoom(wxScrollEvent &event) { int pos = event.GetPosition(); if (pos < 1) pos = 1; if (pos > 100) pos = 100; - audioDisplay->SetScale(pow(float(pos)/50.0f,3)); + float value = pow(float(pos)/50.0f,3); + audioDisplay->SetScale(value); + if (VerticalLink->GetValue()) { + audioDisplay->provider->volume = value; + VolumeBar->SetValue(pos); + } +} + + +////////////////////// +// Volume bar changed +void AudioBox::OnVolume(wxScrollEvent &event) { + if (!VerticalLink->GetValue()) { + int pos = event.GetPosition(); + if (pos < 1) pos = 1; + if (pos > 100) pos = 100; + audioDisplay->provider->volume = pow(float(pos)/50.0f,3); + } +} + + +//////////////////////// +// Bars linked/unlinked +void AudioBox::OnVerticalLink(wxCommandEvent &event) { + int pos = VerticalZoom->GetValue(); + if (pos < 1) pos = 1; + if (pos > 100) pos = 100; + float value = pow(float(pos)/50.0f,3); + if (VerticalLink->GetValue()) { + audioDisplay->provider->volume = value; + VolumeBar->SetValue(pos); + } + VolumeBar->Enable(!VerticalLink->GetValue()); + + Options.SetBool(_T("Audio Link"),VerticalLink->GetValue()); + Options.Save(); } diff --git a/core/audio_box.h b/core/audio_box.h index cb41f7cb5..a23486179 100644 --- a/core/audio_box.h +++ b/core/audio_box.h @@ -63,11 +63,13 @@ private: wxScrollBar *audioScroll; wxSlider *HorizontalZoom; wxSlider *VerticalZoom; + wxSlider *VolumeBar; wxSizer *MainSizer; wxSizer *TopSizer; wxSizer *sashSizer; wxSizer *DisplaySizer; wxSashWindow *Sash; + ToggleBitmap *VerticalLink; wxToggleButton *SplitButton; wxButton *JoinButton; @@ -79,6 +81,8 @@ private: void OnScrollbar(wxScrollEvent &event); void OnHorizontalZoom(wxScrollEvent &event); void OnVerticalZoom(wxScrollEvent &event); + void OnVolume(wxScrollEvent &event); + void OnVerticalLink(wxCommandEvent &event); void OnSash(wxSashEvent &event); void OnPlaySelection(wxCommandEvent &event); @@ -129,7 +133,9 @@ enum { Audio_Scrollbar = 1600, Audio_Horizontal_Zoom, Audio_Vertical_Zoom, + Audio_Volume, Audio_Sash, + Audio_Vertical_Link, Audio_Button_Play, Audio_Button_Stop, diff --git a/core/audio_display.cpp b/core/audio_display.cpp index 4c946a729..caacb3e88 100644 --- a/core/audio_display.cpp +++ b/core/audio_display.cpp @@ -729,7 +729,6 @@ void AudioDisplay::UpdateSamples() { void AudioDisplay::SetScale(float _scale) { if (scale == _scale) return; scale = _scale; - provider->volume = scale; UpdateImage(); } diff --git a/core/bitmaps/toggle_audio_link.bmp b/core/bitmaps/toggle_audio_link.bmp new file mode 100644 index 0000000000000000000000000000000000000000..85392f61bf09111da957e6923cbfbf22072b443f GIT binary patch literal 1498 zcmd7QF>cjB5XSK@5)pLtR8w*S>JdG6n4`>5rieJl)Eog(%n{NfQkId9K%&r? zUFJ5@5l9pobAAFJBOQT6p)pG4pE4XX4;*`;F-j8*jzFT&nEh;Sq$7|hG-f|(80iQk z3XR#%%^;bMK%&r?Erl}D5l9povt`moIs%D8W6l!FG13u86dI#u{w;$ekSHAcY-yR1 zjzFT&m@PXu(h*1$8nY!CMmhqCLSwdE(?~}kQE1GTavA9eBnpk$GH)Xtfkf&4=S6q? zF8M#{avr)|juzODTb$nhb<@A}G0KaLkap+ov4=nVp1-XA)4uDKV@kj0 Q_k03RSJzKGb)3)r0xoWE6#xJL literal 0 HcmV?d00001 diff --git a/core/changelog.txt b/core/changelog.txt index 2123061a7..deedb98e5 100644 --- a/core/changelog.txt +++ b/core/changelog.txt @@ -36,6 +36,7 @@ Please visit http://aegisub.net to download latest version - Audio timing will now apply to all selected lines, as well as active line (AMZ) - Rows colliding with the currently active one will now be highlighted in grid (AMZ) - Selected comments are now highlighted in a different color (AMZ) +- Added a volume slider bar to audio mode (AMZ) = 1.09 beta - 2006.01.16 =========================== diff --git a/core/options.cpp b/core/options.cpp index facda3153..27ce7f1ca 100644 --- a/core/options.cpp +++ b/core/options.cpp @@ -131,6 +131,7 @@ void OptionsManager::LoadDefaults() { SetInt(_T("Audio Cache"),1); SetInt(_T("Audio Sample Rate"),0); SetText(_T("Audio Downmixer"),_T("ConvertToMono")); + SetBool(_T("Audio Link"),true); SetBool(_T("Audio Autocommit"),false); SetBool(_T("Audio Autoscroll"),true); SetBool(_T("Audio SSA Mode"),false); diff --git a/core/res.rc b/core/res.rc index 1a22140c0..3c2de35b0 100644 --- a/core/res.rc +++ b/core/res.rc @@ -118,6 +118,7 @@ toggle_audio_autoscroll BITMAP "bitmaps/toggle_audio_autoscroll.bmp" toggle_audio_autocommit BITMAP "bitmaps/toggle_audio_autocommit.bmp" toggle_audio_ssa BITMAP "bitmaps/toggle_audio_ssa.bmp" toggle_audio_spectrum BITMAP "bitmaps/toggle_audio_spectrum.bmp" +toggle_audio_link BITMAP "bitmaps/toggle_audio_link.bmp" toggle_video_autoscroll BITMAP "bitmaps/toggle_video_autoscroll.bmp" splash_01 BITMAP "bitmaps/splash_01.bmp" diff --git a/core/video_box.cpp b/core/video_box.cpp index df7cf8f56..aaf7e380e 100644 --- a/core/video_box.cpp +++ b/core/video_box.cpp @@ -70,11 +70,11 @@ VideoBox::VideoBox(wxPanel *parent) { videoSlider->SetToolTip(_("Seek video.")); // Position - VideoPosition = new wxTextCtrl(videoPage,-1,_T(""),wxDefaultPosition,wxSize(125,20),wxTE_READONLY); + VideoPosition = new wxTextCtrl(videoPage,-1,_T(""),wxDefaultPosition,wxSize(110,20),wxTE_READONLY); VideoPosition->SetToolTip(_("Current frame time and number.")); // Times of sub relative to video - VideoSubsPos = new wxTextCtrl(videoPage,-1,_T(""),wxDefaultPosition,wxSize(125,20),wxTE_READONLY); + VideoSubsPos = new wxTextCtrl(videoPage,-1,_T(""),wxDefaultPosition,wxSize(110,20),wxTE_READONLY); VideoSubsPos->SetToolTip(_("Time of this frame relative to start and end of current subs.")); // Display @@ -96,10 +96,10 @@ VideoBox::VideoBox(wxPanel *parent) { videoBottomSizer->Add(VideoPlayLineButton,0,wxTOP|wxBOTTOM|wxALIGN_CENTER,2); videoBottomSizer->Add(VideoStopButton,0,wxTOP|wxBOTTOM|wxALIGN_CENTER,2); videoBottomSizer->Add(AutoScroll,0,wxTOP|wxBOTTOM|wxALIGN_CENTER|wxEXPAND,2); + videoBottomSizer->Add(VideoTrackerMenuButton,0,wxTOP|wxBOTTOM|wxALIGN_CENTER|wxEXPAND,2); + videoBottomSizer->Add(VideoTrackerMenu2Button,0,wxTOP|wxBOTTOM|wxALIGN_CENTER|wxEXPAND,2); videoBottomSizer->Add(VideoPosition,1,wxLEFT|wxALIGN_CENTER,5); videoBottomSizer->Add(VideoSubsPos,1,wxALIGN_CENTER,0); - videoBottomSizer->Add(VideoTrackerMenuButton,0,wxTOP|wxBOTTOM|wxALIGN_CENTER,2); - videoBottomSizer->Add(VideoTrackerMenu2Button,0,wxTOP|wxBOTTOM|wxALIGN_CENTER,2); VideoSizer = new wxBoxSizer(wxVERTICAL); VideoSizer->Add(videoDisplay,0,wxEXPAND,0); VideoSizer->Add(videoSliderSizer,0,wxEXPAND,0);