mirror of
https://github.com/projectM-visualizer/projectm.git
synced 2026-02-05 04:15:53 +00:00
some touch up and empty() function added to preset chooser
git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/personal/carm/dev-1.0@330 6778bc44-b910-0410-a7a0-be141de4315d
This commit is contained in:
@ -121,6 +121,11 @@ public:
|
||||
template <class WeightFunctor>
|
||||
std::auto_ptr<Preset> weightedRandom(const PresetInputs & presetInputs, PresetOutputs & preseOutputs);
|
||||
|
||||
|
||||
|
||||
/// True if no presets in directory
|
||||
bool empty() const;
|
||||
|
||||
private:
|
||||
template <class WeightFunctor>
|
||||
std::auto_ptr<Preset> doWeightedSample(WeightFunctor & weightFunctor, const PresetInputs & presetInputs, PresetOutputs & presetOutputs);
|
||||
@ -191,6 +196,11 @@ std::auto_ptr<Preset> PresetChooser::weightedRandom(const PresetInputs & presetI
|
||||
return doWeightedSample(weightFunctor);
|
||||
}
|
||||
|
||||
inline bool PresetChooser::empty() const {
|
||||
return m_presetLoader->getNumPresets() == 0;
|
||||
|
||||
}
|
||||
|
||||
template <class WeightFunctor>
|
||||
inline std::auto_ptr<Preset> PresetChooser::weightedRandom(const PresetInputs & presetInputs, PresetOutputs & presetOutputs){
|
||||
|
||||
@ -202,7 +212,7 @@ inline std::auto_ptr<Preset> PresetChooser::weightedRandom(const PresetInputs &
|
||||
inline std::auto_ptr<Preset> PresetChooser::directoryIndex(std::size_t index, const PresetInputs & presetInputs,
|
||||
PresetOutputs & presetOutputs) const {
|
||||
|
||||
return m_presetLoader->loadPreset(index,presetInputs, presetOutputs);
|
||||
return m_presetLoader->loadPreset(index, presetInputs, presetOutputs);
|
||||
}
|
||||
|
||||
template <class WeightFunctor>
|
||||
|
||||
@ -169,7 +169,6 @@ void projectM::default_key_handler( projectMEvent event, projectMKeycode keycode
|
||||
if (((*m_presetPos) == m_presetChooser->end())) {
|
||||
*m_presetPos = m_presetChooser->begin();
|
||||
}
|
||||
m_activePreset = std::auto_ptr<Preset>(0);
|
||||
|
||||
m_activePreset = m_presetPos->allocate(this->presetInputs, this->presetOutputs);
|
||||
|
||||
@ -178,13 +177,19 @@ void projectM::default_key_handler( projectMEvent event, projectMKeycode keycode
|
||||
break;
|
||||
|
||||
case PROJECTM_K_r:
|
||||
|
||||
if (m_presetChooser->empty())
|
||||
break;
|
||||
|
||||
m_activePreset = m_presetChooser->weightedRandom<PresetChooser::UniformRandomFunctor>
|
||||
(this->presetInputs, this->presetOutputs);
|
||||
presetInputs.frame = 0;
|
||||
smoothFrame = 0;
|
||||
break;
|
||||
case PROJECTM_K_p:
|
||||
|
||||
if (m_presetChooser->empty())
|
||||
break;
|
||||
|
||||
if (*m_presetPos != m_presetChooser->begin()) {
|
||||
--(*m_presetPos);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user