From 61355e138699ed175bf4eec484fd7285823a77e0 Mon Sep 17 00:00:00 2001 From: psperl Date: Mon, 30 Jun 2008 03:00:28 +0000 Subject: [PATCH] Refactored VideoEcho into its own class git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@1077 6778bc44-b910-0410-a7a0-be141de4315d --- src/projectM-engine/BuiltinParams.cpp | 6 ++-- src/projectM-engine/CMakeLists.txt | 2 +- src/projectM-engine/MstressJuppyDancer.hpp | 3 -- src/projectM-engine/Pipeline.hpp | 4 +-- src/projectM-engine/PresetFrameIO.cpp | 1 + src/projectM-engine/PresetFrameIO.hpp | 3 ++ src/projectM-engine/PresetMerge.cpp | 6 ++-- src/projectM-engine/RLGFractalDrop7c.hpp | 10 +++++-- src/projectM-engine/Renderer.cpp | 29 ------------------- src/projectM-engine/RovastarDarkSecret.hpp | 4 --- src/projectM-engine/RovastarDriftingChaos.hpp | 4 --- src/projectM-engine/RovastarFractalSpiral.hpp | 3 -- .../RovastarFractopiaFrantic.hpp | 5 ---- src/projectM-engine/projectM.cpp | 12 ++++---- 14 files changed, 25 insertions(+), 67 deletions(-) diff --git a/src/projectM-engine/BuiltinParams.cpp b/src/projectM-engine/BuiltinParams.cpp index 30b8bf6a5..baa14a76c 100644 --- a/src/projectM-engine/BuiltinParams.cpp +++ b/src/projectM-engine/BuiltinParams.cpp @@ -275,8 +275,8 @@ int BuiltinParams::load_all_builtin_param(const PresetInputs & presetInputs, Pre load_builtin_param_float("frating", (void*)&presetOutputs.fRating, NULL, P_FLAG_NONE, 0.0 , 5.0, 0.0, ""); load_builtin_param_float("fwavescale", (void*)&presetOutputs.wave.scale, NULL, P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, ""); load_builtin_param_float("gamma", (void*)&presetOutputs.fGammaAdj, NULL, P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, 0, "fGammaAdj"); - load_builtin_param_float("echo_zoom", (void*)&presetOutputs.videoEchoZoom, NULL, P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, 0, "fVideoEchoZoom"); - load_builtin_param_float("echo_alpha", (void*)&presetOutputs.videoEchoAlpha, NULL, P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, 0, "fvideoechoalpha"); + load_builtin_param_float("echo_zoom", (void*)&presetOutputs.videoEcho.zoom, NULL, P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, 0, "fVideoEchoZoom"); + load_builtin_param_float("echo_alpha", (void*)&presetOutputs.videoEcho.a, NULL, P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, 0, "fvideoechoalpha"); load_builtin_param_float("wave_a", (void*)&presetOutputs.wave.a, NULL, P_FLAG_NONE, 0.0, 1.0, 0, "fwavealpha"); load_builtin_param_float("fwavesmoothing", (void*)&presetOutputs.wave.smoothing, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, ""); load_builtin_param_float("fmodwavealphastart", (void*)&presetOutputs.wave.modOpacityStart, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, ""); @@ -288,7 +288,7 @@ int BuiltinParams::load_all_builtin_param(const PresetInputs & presetInputs, Pre load_builtin_param_float("fshader", (void*)&presetOutputs.fShader, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, ""); load_builtin_param_float("decay", (void*)&presetOutputs.screenDecay, NULL, P_FLAG_NONE, 0.0, 1.0, 0, "fdecay"); - load_builtin_param_int("echo_orient", (void*)&presetOutputs.videoEchoOrientation, P_FLAG_NONE, 0, 3, 0, "nVideoEchoOrientation"); + load_builtin_param_int("echo_orient", (void*)&presetOutputs.videoEcho.orientation, P_FLAG_NONE, 0, 3, 0, "nVideoEchoOrientation"); load_builtin_param_int("wave_mode", (void*)&presetOutputs.wave.mode, P_FLAG_NONE, 0, 7, 0, "nwavemode"); load_builtin_param_bool("wave_additive", (void*)&presetOutputs.wave.additive, P_FLAG_NONE, false, "bAdditiveWaves"); diff --git a/src/projectM-engine/CMakeLists.txt b/src/projectM-engine/CMakeLists.txt index 7594d2e04..092c08785 100644 --- a/src/projectM-engine/CMakeLists.txt +++ b/src/projectM-engine/CMakeLists.txt @@ -32,7 +32,7 @@ Func.cpp Eval.cpp PerFrameEqn.cpp PerPointEqn.cpp fftsg.cpp KeyHandler.cpp timer.cpp wipemalloc.cpp BuiltinFuncs.cpp BuiltinParams.cpp Renderer.cpp PresetLoader.cpp PresetChooser.cpp PresetFrameIO.cpp PresetMerge.cpp PipelineContext.cpp ConfigFile.cpp IdlePreset.cpp TextureManager.cpp TimeKeeper.cpp Filters.cpp Renderable.cpp Pipeline.cpp PerPixelMesh.cpp -MilkdropWaveform.cpp Waveform.cpp ${GLEW_SOURCES}) +MilkdropWaveform.cpp Waveform.cpp VideoEcho.cpp Shader.cpp ${GLEW_SOURCES}) if (USE_DEVIL) SET (projectM_SOURCES ${projectM_SOURCES}) diff --git a/src/projectM-engine/MstressJuppyDancer.hpp b/src/projectM-engine/MstressJuppyDancer.hpp index 8d1353f20..3e6dd035f 100644 --- a/src/projectM-engine/MstressJuppyDancer.hpp +++ b/src/projectM-engine/MstressJuppyDancer.hpp @@ -168,9 +168,6 @@ public: textureWrap = false; screenDecay = 0.3; - videoEchoOrientation = 0; - videoEchoZoom = 1.0; - videoEchoAlpha = 1.0; q1 = 0; meanmid = 0; diff --git a/src/projectM-engine/Pipeline.hpp b/src/projectM-engine/Pipeline.hpp index d6821ec31..0b7e86d7f 100644 --- a/src/projectM-engine/Pipeline.hpp +++ b/src/projectM-engine/Pipeline.hpp @@ -9,6 +9,7 @@ #include "PipelineContext.hpp" #include "Shader.hpp" + class Pipeline { public: @@ -16,9 +17,6 @@ public: bool textureWrap; float screenDecay; - float videoEchoAlpha; - float videoEchoZoom; - int videoEchoOrientation; Shader shader; diff --git a/src/projectM-engine/PresetFrameIO.cpp b/src/projectM-engine/PresetFrameIO.cpp index d75c320c6..0b348bef4 100644 --- a/src/projectM-engine/PresetFrameIO.cpp +++ b/src/projectM-engine/PresetFrameIO.cpp @@ -135,6 +135,7 @@ void PresetOutputs::PrepareToRender() drawables.push_back(&border); compositeDrawables.clear(); + compositeDrawables.push_back(&videoEcho); if (bBrighten==1) compositeDrawables.push_back(&brighten); diff --git a/src/projectM-engine/PresetFrameIO.hpp b/src/projectM-engine/PresetFrameIO.hpp index 56d253e9d..a6dd10415 100644 --- a/src/projectM-engine/PresetFrameIO.hpp +++ b/src/projectM-engine/PresetFrameIO.hpp @@ -6,6 +6,7 @@ #include "Filters.hpp" #include "CustomShape.hpp" #include "CustomWave.hpp" +#include "VideoEcho.hpp" /// Container class for all preset writeable engine variables. This is the important glue @@ -37,6 +38,8 @@ public: float cx; float cy; + VideoEcho videoEcho; + MilkdropWaveform wave; Border border; MotionVectors mv; diff --git a/src/projectM-engine/PresetMerge.cpp b/src/projectM-engine/PresetMerge.cpp index bb3a4b97d..255830cef 100644 --- a/src/projectM-engine/PresetMerge.cpp +++ b/src/projectM-engine/PresetMerge.cpp @@ -110,8 +110,8 @@ double invratio = 1.0 - ratio; A.fRating = A.fRating* invratio + B.fRating*ratio; A.fGammaAdj = A.fGammaAdj* invratio + B.fGammaAdj*ratio; - A.videoEchoZoom = A.videoEchoZoom* invratio + B.videoEchoZoom*ratio; - A.videoEchoAlpha = A.videoEchoAlpha* invratio + B.videoEchoAlpha*ratio; + A.videoEcho.zoom = A.videoEcho.zoom* invratio + B.videoEcho.zoom*ratio; + A.videoEcho.a = A.videoEcho.a* invratio + B.videoEcho.a*ratio; A.fWarpAnimSpeed = A.fWarpAnimSpeed* invratio + B.fWarpAnimSpeed*ratio; @@ -122,7 +122,7 @@ double invratio = 1.0 - ratio; if (ratio > 0.5) { - A.videoEchoOrientation = B.videoEchoOrientation; + A.videoEcho.orientation = B.videoEcho.orientation; A.textureWrap = B.textureWrap; A.bDarkenCenter = B.bDarkenCenter; A.bRedBlueStereo = B.bRedBlueStereo; diff --git a/src/projectM-engine/RLGFractalDrop7c.hpp b/src/projectM-engine/RLGFractalDrop7c.hpp index c133c0c0b..d8a8df634 100644 --- a/src/projectM-engine/RLGFractalDrop7c.hpp +++ b/src/projectM-engine/RLGFractalDrop7c.hpp @@ -9,6 +9,7 @@ #include "Pipeline.hpp" #include "Transformation.hpp" #include "MilkdropCompatability.hpp" +#include "VideoEcho.hpp" class RLGFractalDrop7c : public Pipeline { @@ -16,6 +17,7 @@ public: Shape shape1,shape2,shape3,shape4; MilkdropWaveform wave; + VideoEcho videoEcho; float movement, t1, t2, t3, t4; @@ -27,12 +29,14 @@ public: drawables.push_back(&shape4); drawables.push_back(&wave); + compositeDrawables.push_back(&videoEcho); + textureWrap = true; screenDecay = 1.0; - videoEchoOrientation = 1; - videoEchoZoom = 1.006752; - videoEchoAlpha = 0.5; + videoEcho.orientation = FlipX; + videoEcho.zoom = 1.006752; + videoEcho.a = 0.5; wave.mode = DoubleLine; wave.additive = true; diff --git a/src/projectM-engine/Renderer.cpp b/src/projectM-engine/Renderer.cpp index f623d3a5b..7bf8cddca 100644 --- a/src/projectM-engine/Renderer.cpp +++ b/src/projectM-engine/Renderer.cpp @@ -980,7 +980,6 @@ void Renderer::draw_fps( float realfps ) void Renderer::CompositeOutput(const Pipeline* pipeline) { - int flipx=1, flipy=1; glMatrixMode(GL_TEXTURE); glLoadIdentity(); @@ -1022,34 +1021,6 @@ void Renderer::CompositeOutput(const Pipeline* pipeline) glDrawArrays(GL_TRIANGLE_FAN,0,4); - //Noe Blend the Video Echo - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glMatrixMode(GL_TEXTURE); - - //draw video echo - glColor4f(1.0, 1.0, 1.0, pipeline->videoEchoAlpha); - glTranslatef(.5, .5, 0); - glScalef(1.0/pipeline->videoEchoZoom, 1.0/pipeline->videoEchoZoom, 1); - glTranslatef(-.5, -.5, 0); - - switch ((int)pipeline->videoEchoOrientation) - { - case 0: flipx=1;flipy=1;break; - case 1: flipx=-1;flipy=1;break; - case 2: flipx=1;flipy=-1;break; - case 3: flipx=-1;flipy=-1;break; - default: flipx=1;flipy=1; break; - } - - float pointsFlip[4][2] = {{-0.5*flipx, -0.5*flipy}, - {-0.5*flipx, 0.5*flipy}, - { 0.5*flipx, 0.5*flipy}, - { 0.5*flipx, -0.5*flipy}}; - - glVertexPointer(2,GL_FLOAT,0,pointsFlip); - glDrawArrays(GL_TRIANGLE_FAN,0,4); - glDisable(GL_TEXTURE_2D); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); diff --git a/src/projectM-engine/RovastarDarkSecret.hpp b/src/projectM-engine/RovastarDarkSecret.hpp index de8b32457..376dddc94 100644 --- a/src/projectM-engine/RovastarDarkSecret.hpp +++ b/src/projectM-engine/RovastarDarkSecret.hpp @@ -24,10 +24,6 @@ public: screenDecay = 0.9; textureWrap = true; - videoEchoOrientation = 0; - videoEchoZoom = 1.0; - videoEchoAlpha = 1.0; - drawables.push_back(&border); drawables.push_back(&shape1); drawables.push_back(&shape2); diff --git a/src/projectM-engine/RovastarDriftingChaos.hpp b/src/projectM-engine/RovastarDriftingChaos.hpp index 49876a32e..10dc7f972 100644 --- a/src/projectM-engine/RovastarDriftingChaos.hpp +++ b/src/projectM-engine/RovastarDriftingChaos.hpp @@ -23,10 +23,6 @@ public: screenDecay = 1.0; textureWrap = 0; - videoEchoOrientation = 0; - videoEchoZoom = 1.0; - videoEchoAlpha = 1.0; - drawables.push_back(&shape1); drawables.push_back(&shape2); drawables.push_back(&shape3); diff --git a/src/projectM-engine/RovastarFractalSpiral.hpp b/src/projectM-engine/RovastarFractalSpiral.hpp index f191a6d5b..a99756b23 100644 --- a/src/projectM-engine/RovastarFractalSpiral.hpp +++ b/src/projectM-engine/RovastarFractalSpiral.hpp @@ -27,9 +27,6 @@ public: textureWrap = true; screenDecay = 1.0; - videoEchoOrientation = 0; - videoEchoZoom = 1.0; - videoEchoAlpha = 1.0; border.outer_size = 0.01; border.outer_a = 1.0; diff --git a/src/projectM-engine/RovastarFractopiaFrantic.hpp b/src/projectM-engine/RovastarFractopiaFrantic.hpp index b5afef4e0..4bcc43980 100644 --- a/src/projectM-engine/RovastarFractopiaFrantic.hpp +++ b/src/projectM-engine/RovastarFractopiaFrantic.hpp @@ -26,13 +26,8 @@ public: drawables.push_back(&vectors); drawables.push_back(&border); - screenDecay = 1.0; - videoEchoOrientation = 0; - videoEchoZoom = 1.0; - videoEchoAlpha = 1.0; - vectors.x_num = 64; vectors.y_num = 48; vectors.r = 0.0; diff --git a/src/projectM-engine/projectM.cpp b/src/projectM-engine/projectM.cpp index 7c02cf458..924adf627 100755 --- a/src/projectM-engine/projectM.cpp +++ b/src/projectM-engine/projectM.cpp @@ -515,9 +515,9 @@ void projectM::projectM_initengine() /* PER_FRAME CONSTANTS END */ this->presetOutputs.fRating = 0; this->presetOutputs.fGammaAdj = 1.0; - this->presetOutputs.videoEchoZoom = 1.0; - this->presetOutputs.videoEchoAlpha = 0; - this->presetOutputs.videoEchoOrientation = 0; + this->presetOutputs.videoEcho.zoom = 1.0; + this->presetOutputs.videoEcho.a = 0; + this->presetOutputs.videoEcho.orientation = Normal; this->presetOutputs.textureWrap = 0; this->presetOutputs.bDarkenCenter = 0; @@ -613,9 +613,9 @@ void projectM::projectM_resetengine() /* PER_FRAME CONSTANTS END */ this->presetOutputs.fRating = 0; this->presetOutputs.fGammaAdj = 1.0; - this->presetOutputs.videoEchoZoom = 1.0; - this->presetOutputs.videoEchoAlpha = 0; - this->presetOutputs.videoEchoOrientation = 0; + this->presetOutputs.videoEcho.zoom = 1.0; + this->presetOutputs.videoEcho.a = 0; + this->presetOutputs.videoEcho.orientation = Normal; this->presetOutputs.wave.additive = false; this->presetOutputs.wave.dots = false;