From ab5e0ae5ebf029d4e4fbe52a8fec91afc610fea5 Mon Sep 17 00:00:00 2001 From: w1z7ard Date: Sat, 20 Sep 2008 19:05:57 +0000 Subject: [PATCH] trying to decouple things properly git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/personal/carm/represet@1179 6778bc44-b910-0410-a7a0-be141de4315d --- src/libprojectM/CMakeLists.txt | 19 ++- .../IdlePreset.cpp | 0 .../IdlePreset.hpp | 0 .../MilkdropPresetFactory/PresetFrameIO.cpp | 137 ++++++++++++++++++ src/libprojectM/PresetMerge.cpp | 135 ----------------- src/libprojectM/PresetMerge.hpp | 7 - src/libprojectM/Renderer/CMakeLists.txt | 8 +- src/libprojectM/Renderer/Pipeline.hpp | 3 +- src/libprojectM/Renderer/Renderable.hpp | 2 +- src/libprojectM/Renderer/Renderer.hpp | 2 +- src/libprojectM/Renderer/ShaderEngine.hpp | 2 +- src/libprojectM/TimeKeeper.cpp | 7 - src/libprojectM/projectM.cpp | 3 +- 13 files changed, 156 insertions(+), 169 deletions(-) rename src/libprojectM/{ => MilkdropPresetFactory}/IdlePreset.cpp (100%) rename src/libprojectM/{ => MilkdropPresetFactory}/IdlePreset.hpp (100%) diff --git a/src/libprojectM/CMakeLists.txt b/src/libprojectM/CMakeLists.txt index b7364d1e6..f8045698d 100644 --- a/src/libprojectM/CMakeLists.txt +++ b/src/libprojectM/CMakeLists.txt @@ -17,7 +17,7 @@ OPTION (USE_CG "Use Cg for Pixel Shader support" OFF) #OPTION (FTGL_STATIC "Build the projectM target library in the platform's native static (NOT shared) format." OFF) OPTION (BUILD_PROJECTM_STATIC "Build the projectM target library in the platform's native static (NOT shared) format." OFF) -SET(SOIL_SOURCES image_DXT.c image_helper.c SOIL.c stb_image_aug.c) +ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="\\\"${CMAKE_INSTALL_PREFIX}\\\"") if (USE_NATIVE_GLEW) ADD_DEFINITIONS(-DUSE_NATIVE_GLEW) @@ -28,18 +28,19 @@ SET(GLEW_SOURCES ) SET (GLEW_LINK_TARGETS GLEW) endif(USE_NATIVE_GLEW) -SET(projectM_SOURCES projectM.cpp FBO.cpp PCM.cpp Preset.cpp BeatDetect.cpp fftsg.cpp KeyHandler.cpp -timer.cpp wipemalloc.cpp BuiltinFuncs.cpp BuiltinParams.cpp Renderer.cpp PresetLoader.cpp PresetChooser.cpp PresetMerge.cpp PipelineContext.cpp ConfigFile.cpp IdlePreset.cpp TimeKeeper.cpp PresetFactory.cpp PresetFactoryManager.cpp ${GLEW_SOURCES}) +SET(projectM_SOURCES projectM.cpp PCM.cpp Preset.cpp BeatDetect.cpp fftsg.cpp KeyHandler.cpp +timer.cpp wipemalloc.cpp PresetLoader.cpp PresetChooser.cpp PresetMerge.cpp ConfigFile.cpp TimeKeeper.cpp PresetFactory.cpp PresetFactoryManager.cpp ${GLEW_SOURCES}) if (USE_DEVIL) SET (projectM_SOURCES ${projectM_SOURCES}) ADD_DEFINITIONS(-DUSE_DEVIL) SET (IMAGE_LINK_TARGETS IL ILU ILUT) else (USE_DEVIL) -SET (projectM_SOURCES ${projectM_SOURCES} ${SOIL_SOURCES}) +SET (projectM_SOURCES ${projectM_SOURCES}) SET (IMAGE_LINK_TARGETS ) endif (USE_DEVIL) + if (USE_CG) ADD_DEFINITIONS(-DUSE_CG) SET (CG_LINK_TARGETS Cg CgGL) @@ -77,7 +78,10 @@ ADD_DEFINITIONS(-DLINUX -DSTBI_NO_DDS -DUSE_THREADS) endif(WIN32) endif(APPLE) -ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="\\\"${CMAKE_INSTALL_PREFIX}\\\"") + +add_subdirectory(Renderer) + +#ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="\\\"${CMAKE_INSTALL_PREFIX}\\\"") FIND_PACKAGE(OpenGL) @@ -127,7 +131,7 @@ IF(USE_OPENMP) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp ") ENDIF(USE_OPENMP) -INCLUDE_DIRECTORIES(${FTGL_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${FTGL_INCLUDE_DIRS} "Renderer") LINK_DIRECTORIES(${FTGL_LINK_DIRS} "./") if(BUILD_PROJECTM_STATIC) @@ -135,10 +139,9 @@ if(BUILD_PROJECTM_STATIC) ${CG_LINK_TARGETS}) else(BUILD_PROJECTM_STATIC) - TARGET_LINK_LIBRARIES(projectM ${GLEW_LINK_TARGETS} m ${FTGL_LINK_TARGETS} ${OPENGL_LIBRARIES} ${IMAGE_LINK_TARGETS} +TARGET_LINK_LIBRARIES(projectM Renderer/libRenderer.a MilkdropPresetFactory/libMilkdropPresetFactory.a ${GLEW_LINK_TARGETS} m ${FTGL_LINK_TARGETS} ${OPENGL_LIBRARIES} ${IMAGE_LINK_TARGETS} ${CG_LINK_TARGETS}) - endif(BUILD_PROJECTM_STATIC) diff --git a/src/libprojectM/IdlePreset.cpp b/src/libprojectM/MilkdropPresetFactory/IdlePreset.cpp similarity index 100% rename from src/libprojectM/IdlePreset.cpp rename to src/libprojectM/MilkdropPresetFactory/IdlePreset.cpp diff --git a/src/libprojectM/IdlePreset.hpp b/src/libprojectM/MilkdropPresetFactory/IdlePreset.hpp similarity index 100% rename from src/libprojectM/IdlePreset.hpp rename to src/libprojectM/MilkdropPresetFactory/IdlePreset.hpp diff --git a/src/libprojectM/MilkdropPresetFactory/PresetFrameIO.cpp b/src/libprojectM/MilkdropPresetFactory/PresetFrameIO.cpp index b91f44119..7e7ca3970 100644 --- a/src/libprojectM/MilkdropPresetFactory/PresetFrameIO.cpp +++ b/src/libprojectM/MilkdropPresetFactory/PresetFrameIO.cpp @@ -443,3 +443,140 @@ void PresetInputs::resetMesh() } } + + +#ifdef USE_MERGE_PRESET_CODE +void PresetMerger::MergePresets(PresetOutputs & A, PresetOutputs & B, double ratio, int gx, int gy) +{ + +double invratio = 1.0 - ratio; + //Merge Simple Waveforms + // + // All the mess is because of Waveform 7, which is two lines. + // + + + //Merge Custom Shapes and Custom Waves + + for (PresetOutputs::cshape_container::iterator pos = A.customShapes.begin(); + pos != A.customShapes.end(); ++pos) + { + (*pos)->a *= invratio; + (*pos)->a2 *= invratio; + (*pos)->border_a *= invratio; + } + + for (PresetOutputs::cshape_container::iterator pos = B.customShapes.begin(); + pos != B.customShapes.end(); ++pos) + { + (*pos)->a *= ratio; + (*pos)->a2 *= ratio; + (*pos)->border_a *= ratio; + + A.customShapes.push_back(*pos); + + } + for (PresetOutputs::cwave_container::iterator pos = A.customWaves.begin(); + pos != A.customWaves.end(); ++pos) + { + (*pos)->a *= invratio; + for (int x=0; x < (*pos)->samples; x++) + { + (*pos)->a_mesh[x]= (*pos)->a_mesh[x]*invratio; + } + } + + for (PresetOutputs::cwave_container::iterator pos = B.customWaves.begin(); + pos != B.customWaves.end(); ++pos) + { + (*pos)->a *= ratio; + for (int x=0; x < (*pos)->samples; x++) + { + (*pos)->a_mesh[x]= (*pos)->a_mesh[x]*ratio; + } + A.customWaves.push_back(*pos); + } + + + //Interpolate Per-Pixel mesh + + for (int x=0;x 0.5) + { + A.videoEcho.orientation = B.videoEcho.orientation; + A.textureWrap = B.textureWrap; + A.bDarkenCenter = B.bDarkenCenter; + A.bRedBlueStereo = B.bRedBlueStereo; + A.bBrighten = B.bBrighten; + A.bDarken = B.bDarken; + A.bSolarize = B.bSolarize; + A.bInvert = B.bInvert; + A.bMotionVectorsOn = B.bMotionVectorsOn; + } + + return; +} +#endif diff --git a/src/libprojectM/PresetMerge.cpp b/src/libprojectM/PresetMerge.cpp index d6d2fd48e..9743760bc 100644 --- a/src/libprojectM/PresetMerge.cpp +++ b/src/libprojectM/PresetMerge.cpp @@ -48,138 +48,3 @@ void PipelineMerger::MergePipelines(const Pipeline & a, const Pipeline & b, Pipe out.compositeShader = a.compositeShader; out.warpShader = a.warpShader; } - -void PresetMerger::MergePresets(PresetOutputs & A, PresetOutputs & B, double ratio, int gx, int gy) -{ - -double invratio = 1.0 - ratio; - //Merge Simple Waveforms - // - // All the mess is because of Waveform 7, which is two lines. - // - - - //Merge Custom Shapes and Custom Waves - - for (PresetOutputs::cshape_container::iterator pos = A.customShapes.begin(); - pos != A.customShapes.end(); ++pos) - { - (*pos)->a *= invratio; - (*pos)->a2 *= invratio; - (*pos)->border_a *= invratio; - } - - for (PresetOutputs::cshape_container::iterator pos = B.customShapes.begin(); - pos != B.customShapes.end(); ++pos) - { - (*pos)->a *= ratio; - (*pos)->a2 *= ratio; - (*pos)->border_a *= ratio; - - A.customShapes.push_back(*pos); - - } - for (PresetOutputs::cwave_container::iterator pos = A.customWaves.begin(); - pos != A.customWaves.end(); ++pos) - { - (*pos)->a *= invratio; - for (int x=0; x < (*pos)->samples; x++) - { - (*pos)->a_mesh[x]= (*pos)->a_mesh[x]*invratio; - } - } - - for (PresetOutputs::cwave_container::iterator pos = B.customWaves.begin(); - pos != B.customWaves.end(); ++pos) - { - (*pos)->a *= ratio; - for (int x=0; x < (*pos)->samples; x++) - { - (*pos)->a_mesh[x]= (*pos)->a_mesh[x]*ratio; - } - A.customWaves.push_back(*pos); - } - - - //Interpolate Per-Pixel mesh - - for (int x=0;x 0.5) - { - A.videoEcho.orientation = B.videoEcho.orientation; - A.textureWrap = B.textureWrap; - A.bDarkenCenter = B.bDarkenCenter; - A.bRedBlueStereo = B.bRedBlueStereo; - A.bBrighten = B.bBrighten; - A.bDarken = B.bDarken; - A.bSolarize = B.bSolarize; - A.bInvert = B.bInvert; - A.bMotionVectorsOn = B.bMotionVectorsOn; - } - - return; -} - diff --git a/src/libprojectM/PresetMerge.hpp b/src/libprojectM/PresetMerge.hpp index 186c3cf27..a72975e79 100644 --- a/src/libprojectM/PresetMerge.hpp +++ b/src/libprojectM/PresetMerge.hpp @@ -2,13 +2,6 @@ #define PRESET_MERGE_HPP #include "Preset.hpp" #include "Pipeline.hpp" -#include "PresetFrameIO.hpp" - -class PresetMerger -{ -public: - static void MergePresets(PresetOutputs & A, PresetOutputs & B, double ratio, int gx, int gy); -}; class PipelineMerger { diff --git a/src/libprojectM/Renderer/CMakeLists.txt b/src/libprojectM/Renderer/CMakeLists.txt index 1b9d0ae51..9175eb7dd 100644 --- a/src/libprojectM/Renderer/CMakeLists.txt +++ b/src/libprojectM/Renderer/CMakeLists.txt @@ -1,13 +1,11 @@ PROJECT(Renderer) cmake_minimum_required(VERSION 2.4.0) -ADD_DEFINITIONS(-DLINUX) -ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="\\\"${CMAKE_INSTALL_PREFIX}\\\"") -SET(Renderer_SOURCES FBO.cpp MilkdropWaveform.cpp PerPixelMesh.cpp Pipeline.cpp Renderer.cpp ShaderEngine.cpp UserTexture.cpp Waveform.cpp Filters.cpp PerlinNoise.cpp PipelineContext.cpp Renderable.cpp Shader.cpp TextureManager.cpp VideoEcho.cpp) +SET(SOIL_SOURCES SOIL/image_DXT.c SOIL/image_helper.c SOIL/SOIL.c SOIL/stb_image_aug.c) +SET(Renderer_SOURCES FBO.cpp MilkdropWaveform.cpp PerPixelMesh.cpp Pipeline.cpp Renderer.cpp ShaderEngine.cpp UserTexture.cpp Waveform.cpp Filters.cpp PerlinNoise.cpp PipelineContext.cpp Renderable.cpp Shader.cpp TextureManager.cpp VideoEcho.cpp ${SOIL_SOURCES}) - -INCLUDE_DIRECTORIES("../") +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/.. "/usr/local/include") ADD_LIBRARY(Renderer STATIC ${Renderer_SOURCES}) SET_TARGET_PROPERTIES(Renderer PROPERTIES VERSION 2.00 SOVERSION 2) TARGET_LINK_LIBRARIES(Renderer m) diff --git a/src/libprojectM/Renderer/Pipeline.hpp b/src/libprojectM/Renderer/Pipeline.hpp index 136885100..ecbda5a42 100644 --- a/src/libprojectM/Renderer/Pipeline.hpp +++ b/src/libprojectM/Renderer/Pipeline.hpp @@ -5,10 +5,9 @@ #include "PerPixelMesh.hpp" #include "Renderable.hpp" #include "Filters.hpp" -#include "BeatDetect.hpp" #include "PipelineContext.hpp" #include "Shader.hpp" -#include "Common.hpp" +#include "../Common.hpp" //This class is the input to projectM's renderer // //Most implemenatations should implement PerPixel in order to get multi-threaded diff --git a/src/libprojectM/Renderer/Renderable.hpp b/src/libprojectM/Renderer/Renderable.hpp index ab730d62f..507f97045 100644 --- a/src/libprojectM/Renderer/Renderable.hpp +++ b/src/libprojectM/Renderer/Renderable.hpp @@ -3,7 +3,7 @@ #include #include "TextureManager.hpp" -#include "BeatDetect.hpp" +class BeatDetect; class RenderContext { diff --git a/src/libprojectM/Renderer/Renderer.hpp b/src/libprojectM/Renderer/Renderer.hpp index 69990f7f4..074175861 100644 --- a/src/libprojectM/Renderer/Renderer.hpp +++ b/src/libprojectM/Renderer/Renderer.hpp @@ -2,7 +2,7 @@ #define Renderer_HPP #include "FBO.hpp" -#include "BeatDetect.hpp" +class BeatDetect; #include #include diff --git a/src/libprojectM/Renderer/ShaderEngine.hpp b/src/libprojectM/Renderer/ShaderEngine.hpp index 474fdfd5f..5227dfb8c 100644 --- a/src/libprojectM/Renderer/ShaderEngine.hpp +++ b/src/libprojectM/Renderer/ShaderEngine.hpp @@ -30,7 +30,7 @@ #include "Pipeline.hpp" #include "PipelineContext.hpp" -#include "BeatDetect.hpp" +class ShaderEngine; #include "TextureManager.hpp" #include diff --git a/src/libprojectM/TimeKeeper.cpp b/src/libprojectM/TimeKeeper.cpp index a701516df..39afb402f 100644 --- a/src/libprojectM/TimeKeeper.cpp +++ b/src/libprojectM/TimeKeeper.cpp @@ -14,13 +14,6 @@ #include #endif -#ifdef USE_DEVIL -#include -#else -#include "SOIL.h" -#endif - - #include "TimeKeeper.hpp" #include "RandomNumberGenerators.hpp" diff --git a/src/libprojectM/projectM.cpp b/src/libprojectM/projectM.cpp index dc1bb3dd5..d6d66a0f7 100755 --- a/src/libprojectM/projectM.cpp +++ b/src/libprojectM/projectM.cpp @@ -22,7 +22,7 @@ #include "fatal.h" #include "Common.hpp" -#include "compare.h" + #ifdef WIN32 #include "win32-dirent.h" #endif @@ -45,7 +45,6 @@ #include "PresetMerge.hpp" //#include "menu.h" #include "PCM.hpp" //Sound data handler (buffering, FFT, etc.) -#include "IdlePreset.hpp" #include