From 1de30574bbd5638be706b2b945aa69e68075ddac Mon Sep 17 00:00:00 2001 From: psperl Date: Mon, 3 Aug 2009 02:10:06 +0000 Subject: [PATCH] even better composite renderitem smoothing git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@1254 6778bc44-b910-0410-a7a0-be141de4315d --- src/libprojectM/CMakeLists.txt | 8 +- src/libprojectM/KeyHandler.cpp | 376 +++++++++++++------------- src/libprojectM/PipelineMerger.cpp | 29 +- src/libprojectM/Renderer/Renderer.cpp | 4 +- 4 files changed, 212 insertions(+), 205 deletions(-) diff --git a/src/libprojectM/CMakeLists.txt b/src/libprojectM/CMakeLists.txt index e9d56a39b..845fd9099 100644 --- a/src/libprojectM/CMakeLists.txt +++ b/src/libprojectM/CMakeLists.txt @@ -110,11 +110,11 @@ INCLUDE(FindPkgConfig.cmake) pkg_search_module (FTGL ftgl) -if (FTGL_FOUND) +#if (FTGL_FOUND) OPTION(USE_FTGL "Use FTGL for on-screen fonts (found on your system)" ON) -else (FTGL_FOUND) - OPTION(USE_FTGL "Use FTGL for on-screen fonts (Warning: NOT found on your system! Turning this on will probably bust the compilation.)" OFF) -endif(FTGL_FOUND) +#else (FTGL_FOUND) +# OPTION(USE_FTGL "Use FTGL for on-screen fonts (Warning: NOT found on your system! Turning this on will probably bust the compilation.)" OFF) +#endif(FTGL_FOUND) #set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH};/opt/local/include;/Developer/SDKs/MACOSX10.5.sdk/usr/X11/include) #set(CMAKE_LIBRARY_PATH /opt/local/lib;/Developer/SDKs/MACOSX10.5.sdk;/Developer/SDKs/MacOSX10.5.sdk/usr/X11/lib/) diff --git a/src/libprojectM/KeyHandler.cpp b/src/libprojectM/KeyHandler.cpp index 5f8c8342a..79101901e 100755 --- a/src/libprojectM/KeyHandler.cpp +++ b/src/libprojectM/KeyHandler.cpp @@ -1,23 +1,23 @@ /** - * projectM -- Milkdrop-esque visualisation SDK - * Copyright (C)2003-2004 projectM Team - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * See 'LICENSE.txt' included within this release - * - */ +* projectM -- Milkdrop-esque visualisation SDK +* Copyright (C)2003-2004 projectM Team +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* See 'LICENSE.txt' included within this release +* +*/ #include @@ -39,208 +39,208 @@ interface_t current_interface = DEFAULT_INTERFACE; void refreshConsole() { - switch (current_interface) { + switch (current_interface) { - case MENU_INTERFACE: - // unimplemented - break; - case SHELL_INTERFACE: - // unimplemented - break; - case EDITOR_INTERFACE: - // unimplemented - break; - case DEFAULT_INTERFACE: - break; - case BROWSER_INTERFACE: - // unimplemented - break; - default: - break; - } + case MENU_INTERFACE: + // unimplemented + break; + case SHELL_INTERFACE: + // unimplemented + break; + case EDITOR_INTERFACE: + // unimplemented + break; + case DEFAULT_INTERFACE: + break; + case BROWSER_INTERFACE: + // unimplemented + break; + default: + break; + } } void projectM::key_handler( projectMEvent event, projectMKeycode keycode, projectMModifier modifier ) { - switch( event ) { + switch( event ) { - case PROJECTM_KEYDOWN: + case PROJECTM_KEYDOWN: - //default_key_handler(); - switch (current_interface) - { + //default_key_handler(); + switch (current_interface) + { - case MENU_INTERFACE: -// menu_key_handler(this, event, keycode); - break; - case SHELL_INTERFACE: - //shell_key_handler(); - break; - case EDITOR_INTERFACE: -// editor_key_handler(event,keycode); - break; - case BROWSER_INTERFACE: -// browser_key_handler(event,keycode,modifier); - break; - case DEFAULT_INTERFACE: - default_key_handler(event,keycode); - break; - default: - default_key_handler(event,keycode); - break; + case MENU_INTERFACE: + // menu_key_handler(this, event, keycode); + break; + case SHELL_INTERFACE: + //shell_key_handler(); + break; + case EDITOR_INTERFACE: + // editor_key_handler(event,keycode); + break; + case BROWSER_INTERFACE: + // browser_key_handler(event,keycode,modifier); + break; + case DEFAULT_INTERFACE: + default_key_handler(event,keycode); + break; + default: + default_key_handler(event,keycode); + break; - } - break; - default: - break; + } + break; + default: + break; - } + } } void projectM::default_key_handler( projectMEvent event, projectMKeycode keycode) { - switch( event ) { + switch( event ) { - case PROJECTM_KEYDOWN: + case PROJECTM_KEYDOWN: - switch( keycode ) - { - case PROJECTM_K_UP: - beatDetect->beat_sensitivity += 0.25; - if (beatDetect->beat_sensitivity > 5.0) beatDetect->beat_sensitivity = 5.0; - break; - case PROJECTM_K_DOWN: - beatDetect->beat_sensitivity -= 0.25; - if (beatDetect->beat_sensitivity < 0) beatDetect->beat_sensitivity = 0; - break; - case PROJECTM_K_h: - renderer->showhelp = !renderer->showhelp; - renderer->showstats= false; - renderer->showfps=false; - case PROJECTM_K_F1: - renderer->showhelp = !renderer->showhelp; - renderer->showstats=false; - renderer->showfps=false; - break; - case PROJECTM_K_y: - this->setShuffleEnabled(!this->isShuffleEnabled()); - break; + switch( keycode ) + { + case PROJECTM_K_UP: + beatDetect->beat_sensitivity += 0.25; + if (beatDetect->beat_sensitivity > 5.0) beatDetect->beat_sensitivity = 5.0; + break; + case PROJECTM_K_DOWN: + beatDetect->beat_sensitivity -= 0.25; + if (beatDetect->beat_sensitivity < 0) beatDetect->beat_sensitivity = 0; + break; + case PROJECTM_K_h: + renderer->showhelp = !renderer->showhelp; + renderer->showstats= false; + renderer->showfps=false; + case PROJECTM_K_F1: + renderer->showhelp = !renderer->showhelp; + renderer->showstats=false; + renderer->showfps=false; + break; + case PROJECTM_K_y: + this->setShuffleEnabled(!this->isShuffleEnabled()); + break; - case PROJECTM_K_F5: - if (!renderer->showhelp) - renderer->showfps = !renderer->showfps; - break; - case PROJECTM_K_F4: - if (!renderer->showhelp) - renderer->showstats = !renderer->showstats; - break; - case PROJECTM_K_F3: { - renderer->showpreset = !renderer->showpreset; - break; - } - case PROJECTM_K_F2: - renderer->showtitle = !renderer->showtitle; - break; -#ifndef MACOS - case PROJECTM_K_F9: -#else - case PROJECTM_K_F8: -#endif + case PROJECTM_K_F5: + if (!renderer->showhelp) + renderer->showfps = !renderer->showfps; + break; + case PROJECTM_K_F4: + if (!renderer->showhelp) + renderer->showstats = !renderer->showstats; + break; + case PROJECTM_K_F3: { + renderer->showpreset = !renderer->showpreset; + break; + } + case PROJECTM_K_F2: + renderer->showtitle = !renderer->showtitle; + break; + #ifndef MACOS + case PROJECTM_K_F9: + #else + case PROJECTM_K_F8: + #endif - renderer->studio = !renderer->studio; - break; + renderer->studio = !renderer->studio; + break; - case PROJECTM_K_ESCAPE: { -// exit( 1 ); - break; - } - case PROJECTM_K_f: + case PROJECTM_K_ESCAPE: { + // exit( 1 ); + break; + } + case PROJECTM_K_f: - break; - case PROJECTM_K_a: - renderer->correction = !renderer->correction; - break; - case PROJECTM_K_b: - break; - case PROJECTM_K_n: - m_presetChooser->nextPreset(*m_presetPos); - presetSwitchedEvent(true, **m_presetPos); - m_activePreset = m_presetPos->allocate(); - renderer->SetPipeline(m_activePreset->pipeline()); - renderer->setPresetName(m_activePreset->name()); - timeKeeper->StartPreset(); - break; + break; + case PROJECTM_K_a: + renderer->correction = !renderer->correction; + break; + case PROJECTM_K_b: + break; + case PROJECTM_K_n: + m_presetChooser->nextPreset(*m_presetPos); + presetSwitchedEvent(true, **m_presetPos); + m_activePreset = m_presetPos->allocate(); + renderer->SetPipeline(m_activePreset->pipeline()); + renderer->setPresetName(m_activePreset->name()); + timeKeeper->StartPreset(); + break; - case PROJECTM_K_r: + case PROJECTM_K_r: - if (m_presetChooser->empty()) - break; + if (m_presetChooser->empty()) + break; - *m_presetPos = m_presetChooser->weightedRandom(); - presetSwitchedEvent(true, **m_presetPos); - m_activePreset = m_presetPos->allocate(); - renderer->SetPipeline(m_activePreset->pipeline()); - assert(m_activePreset.get()); + *m_presetPos = m_presetChooser->weightedRandom(); + presetSwitchedEvent(true, **m_presetPos); + m_activePreset = m_presetPos->allocate(); + renderer->SetPipeline(m_activePreset->pipeline()); + assert(m_activePreset.get()); - renderer->setPresetName(m_activePreset->name()); + renderer->setPresetName(m_activePreset->name()); - timeKeeper->StartPreset(); - break; - case PROJECTM_K_p: + timeKeeper->StartPreset(); + break; + case PROJECTM_K_p: - if (m_presetChooser->empty()) - break; + if (m_presetChooser->empty()) + break; - // Case: idle preset currently running, selected last preset of chooser - else if (*m_presetPos == m_presetChooser->end()) { - --(*m_presetPos); - } + // Case: idle preset currently running, selected last preset of chooser + else if (*m_presetPos == m_presetChooser->end()) { + --(*m_presetPos); + } - else if (*m_presetPos != m_presetChooser->begin()) { - --(*m_presetPos); - } + else if (*m_presetPos != m_presetChooser->begin()) { + --(*m_presetPos); + } - else { - *m_presetPos = m_presetChooser->end(); - --(*m_presetPos); - } + else { + *m_presetPos = m_presetChooser->end(); + --(*m_presetPos); + } - m_activePreset = m_presetPos->allocate(); - renderer->SetPipeline(m_activePreset->pipeline()); - renderer->setPresetName(m_activePreset->name()); + m_activePreset = m_presetPos->allocate(); + renderer->SetPipeline(m_activePreset->pipeline()); + renderer->setPresetName(m_activePreset->name()); - timeKeeper->StartPreset(); - break; - case PROJECTM_K_l: - renderer->noSwitch=!renderer->noSwitch; - break; - case PROJECTM_K_s: - renderer->studio = !renderer->studio; - case PROJECTM_K_i: - break; - case PROJECTM_K_z: - break; - case PROJECTM_K_0: -// nWaveMode=0; - break; - case PROJECTM_K_6: -// nWaveMode=6; - break; - case PROJECTM_K_7: -// nWaveMode=7; - break; - case PROJECTM_K_m: - break; - case PROJECTM_K_t: - break; - default: - break; - } - default: - break; + timeKeeper->StartPreset(); + break; + case PROJECTM_K_l: + renderer->noSwitch=!renderer->noSwitch; + break; + case PROJECTM_K_s: + renderer->studio = !renderer->studio; + case PROJECTM_K_i: + break; + case PROJECTM_K_z: + break; + case PROJECTM_K_0: + // nWaveMode=0; + break; + case PROJECTM_K_6: + // nWaveMode=6; + break; + case PROJECTM_K_7: + // nWaveMode=7; + break; + case PROJECTM_K_m: + break; + case PROJECTM_K_t: + break; + default: + break; + } + default: + break; - } + } } diff --git a/src/libprojectM/PipelineMerger.cpp b/src/libprojectM/PipelineMerger.cpp index 3046cb20d..259f08d00 100644 --- a/src/libprojectM/PipelineMerger.cpp +++ b/src/libprojectM/PipelineMerger.cpp @@ -33,21 +33,28 @@ void PipelineMerger::mergePipelines(const Pipeline & a, const Pipeline & b, Pipe out.drawables.push_back(*pos); } - - for (std::vector::const_iterator pos = a.compositeDrawables.begin(); - pos != a.compositeDrawables.end(); ++pos) + if(ratio < 0.5) { - (*pos)->masterAlpha = invratio; - out.compositeDrawables.push_back(*pos); - } + double local_ratio = (invratio - 0.5) * 2; - for (std::vector::const_iterator pos = b.compositeDrawables.begin(); - pos != b.compositeDrawables.end();++pos) + for (std::vector::const_iterator pos = a.compositeDrawables.begin(); + pos != a.compositeDrawables.end(); ++pos) + { + (*pos)->masterAlpha = local_ratio; + out.compositeDrawables.push_back(*pos); + } + } + else { - (*pos)->masterAlpha = ratio; - out.compositeDrawables.push_back(*pos); - } + double local_ratio = (ratio - 0.5) * 2; + for (std::vector::const_iterator pos = b.compositeDrawables.begin(); + pos != b.compositeDrawables.end();++pos) + { + (*pos)->masterAlpha = local_ratio; + out.compositeDrawables.push_back(*pos); + } + } /* for (RenderItemMatchList::iterator pos = results.matches.begin(); pos != results.matches.end(); ++pos) { diff --git a/src/libprojectM/Renderer/Renderer.cpp b/src/libprojectM/Renderer/Renderer.cpp index 186ce9191..439a75168 100644 --- a/src/libprojectM/Renderer/Renderer.cpp +++ b/src/libprojectM/Renderer/Renderer.cpp @@ -582,10 +582,10 @@ void Renderer::draw_preset() void Renderer::draw_help() { - + std::cout<<"PRE"<