2024-12-15 19:23:31 +00:00
# include "RecordingSettings.h"
2024-12-14 18:15:22 +00:00
# include "VisualiserComponent.h"
# include "../PluginEditor.h"
2024-12-15 19:23:31 +00:00
RecordingSettings : : RecordingSettings ( RecordingParameters & ps ) : parameters ( ps ) {
2025-01-04 14:35:10 +00:00
# if SOSCI_FEATURES
2024-12-15 19:23:31 +00:00
addAndMakeVisible ( quality ) ;
addAndMakeVisible ( recordAudio ) ;
addAndMakeVisible ( recordVideo ) ;
addAndMakeVisible ( compressionPreset ) ;
addAndMakeVisible ( compressionPresetLabel ) ;
2025-01-04 14:35:10 +00:00
2024-12-15 19:23:31 +00:00
quality . setSliderOnValueChange ( ) ;
quality . setRangeEnabled ( false ) ;
recordAudio . onClick = [ this ] {
if ( ! recordAudio . getToggleState ( ) & & ! recordVideo . getToggleState ( ) ) {
recordVideo . setToggleState ( true , juce : : NotificationType : : sendNotification ) ;
}
} ;
recordVideo . onClick = [ this ] {
if ( ! recordAudio . getToggleState ( ) & & ! recordVideo . getToggleState ( ) ) {
recordAudio . setToggleState ( true , juce : : NotificationType : : sendNotification ) ;
}
} ;
compressionPreset . onChange = [ this ] {
parameters . compressionPreset = parameters . compressionPresets [ compressionPreset . getSelectedId ( ) - 1 ] ;
2024-12-14 18:15:22 +00:00
} ;
2024-12-15 19:23:31 +00:00
compressionPreset . addItemList ( parameters . compressionPresets , 1 ) ;
compressionPreset . setSelectedId ( parameters . compressionPresets . indexOf ( parameters . compressionPreset ) + 1 ) ;
compressionPresetLabel . setTooltip ( " The compression preset to use when recording video. Slower presets will produce smaller files at the expense of encoding time. " ) ;
2025-01-04 14:35:10 +00:00
# else
addAndMakeVisible ( recordVideoWarning ) ;
addAndMakeVisible ( sosciLink ) ;
recordVideoWarning . setText ( " Recording video is only available in osci-render premium or sosci. " ) ;
recordVideoWarning . setJustification ( juce : : Justification : : centred ) ;
recordVideoWarning . setColour ( juce : : TextEditor : : textColourId , Colours : : accentColor ) ;
recordVideoWarning . setMultiLine ( true ) ;
recordVideoWarning . setReadOnly ( true ) ;
recordVideoWarning . setInterceptsMouseClicks ( false , false ) ;
sosciLink . setColour ( juce : : HyperlinkButton : : textColourId , Colours : : accentColor ) ;
# endif
2024-12-14 18:15:22 +00:00
}
2024-12-15 19:23:31 +00:00
RecordingSettings : : ~ RecordingSettings ( ) { }
2024-12-14 18:15:22 +00:00
2024-12-15 19:23:31 +00:00
void RecordingSettings : : resized ( ) {
2024-12-14 18:15:22 +00:00
auto area = getLocalBounds ( ) . reduced ( 20 ) ;
2024-12-15 19:23:31 +00:00
double rowHeight = 30 ;
2025-01-04 14:35:10 +00:00
# if SOSCI_FEATURES
2024-12-15 19:23:31 +00:00
quality . setBounds ( area . removeFromTop ( rowHeight ) . expanded ( 6 , 0 ) ) ;
recordAudio . setBounds ( area . removeFromTop ( rowHeight ) ) ;
recordVideo . setBounds ( area . removeFromTop ( rowHeight ) ) ;
auto row = area . removeFromTop ( rowHeight ) ;
compressionPresetLabel . setBounds ( row . removeFromLeft ( 140 ) ) ;
compressionPreset . setBounds ( row . removeFromRight ( 80 ) ) ;
2025-01-04 14:35:10 +00:00
# else
recordVideoWarning . setBounds ( area . removeFromTop ( 2 * rowHeight ) ) ;
area . removeFromTop ( rowHeight / 2 ) ;
sosciLink . setBounds ( area . removeFromTop ( rowHeight ) ) ;
# endif
2024-12-14 18:15:22 +00:00
}