even better composite renderitem smoothing

git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@1254 6778bc44-b910-0410-a7a0-be141de4315d
This commit is contained in:
psperl
2009-08-03 02:10:06 +00:00
parent 439201f555
commit 1de30574bb
4 changed files with 212 additions and 205 deletions

View File

@ -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/)

View File

@ -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 <stdio.h>
@ -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;
}
}
}

View File

@ -33,21 +33,28 @@ void PipelineMerger::mergePipelines(const Pipeline & a, const Pipeline & b, Pipe
out.drawables.push_back(*pos);
}
for (std::vector<RenderItem*>::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<RenderItem*>::const_iterator pos = b.compositeDrawables.begin();
pos != b.compositeDrawables.end();++pos)
for (std::vector<RenderItem*>::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<RenderItem*>::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) {

View File

@ -582,10 +582,10 @@ void Renderer::draw_preset()
void Renderer::draw_help()
{
std::cout<<"PRE"<<std::endl;
#ifdef USE_FTGL
//glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO);
std::cout<<"HELP"<<std::endl;
glColor4f(1.0, 1.0, 1.0, 1.0);
glPushMatrix();
glTranslatef(0, 1, 0);