summaryrefslogtreecommitdiff
blob: 8968f512baeca19fae4f73058f9b8246856f692d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
https://github.com/projectM-visualizer/projectm/pull/112
diff --git a/src/libprojectM/Renderer/Renderer.cpp b/src/libprojectM/Renderer/Renderer.cpp
index 82ae81a..5da27fc 100644
--- a/src/libprojectM/Renderer/Renderer.cpp
+++ b/src/libprojectM/Renderer/Renderer.cpp
@@ -20,9 +20,9 @@ Pipeline* Renderer::currentPipe;
 class Preset;
 
 Renderer::Renderer(int width, int height, int gx, int gy, BeatDetect *_beatDetect, std::string _presetURL,
-        std::string _titlefontURL, std::string _menufontURL) :
+        std::string _titlefontURL, std::string _menufontURL, const std::string& datadir) :
     title_fontURL(_titlefontURL), menu_fontURL(_menufontURL), presetURL(_presetURL), m_presetName("None"), vw(width),
-            vh(height), mesh(gx, gy)
+            vh(height), mesh(gx, gy), m_datadir(datadir)
 {
     this->totalframes = 1;
     this->noSwitch = false;
@@ -463,7 +463,7 @@ void Renderer::reset(int w, int h)
     if (textureManager != NULL) {
         delete textureManager;
     }
-    textureManager = new TextureManager(presetURL, texsizeX, texsizeY);
+    textureManager = new TextureManager(presetURL, texsizeX, texsizeY, m_datadir);
 
     shaderEngine.setParams(texsizeX, texsizeY, beatDetect, textureManager);
     shaderEngine.reset();
diff --git a/src/libprojectM/Renderer/Renderer.hpp b/src/libprojectM/Renderer/Renderer.hpp
index f525c7c..7d2c00e 100644
--- a/src/libprojectM/Renderer/Renderer.hpp
+++ b/src/libprojectM/Renderer/Renderer.hpp
@@ -67,7 +67,7 @@ public:
   float m_fInvAspectX;
   float m_fInvAspectY;
 
-  Renderer(int width, int height, int gx, int gy, BeatDetect *_beatDetect, std::string presetURL, std::string title_fontURL, std::string menu_fontURL);
+  Renderer(int width, int height, int gx, int gy, BeatDetect *_beatDetect, std::string presetURL, std::string title_fontURL, std::string menu_fontURL, const std::string& datadir = "");
   ~Renderer();
 
   void RenderFrame(const Pipeline &pipeline, const PipelineContext &pipelineContext);
@@ -98,6 +98,7 @@ private:
   //per pixel equation variables
   ShaderEngine shaderEngine;
   std::string m_presetName;
+  std::string m_datadir;
 
   float* p;
 
diff --git a/src/libprojectM/Renderer/TextureManager.cpp b/src/libprojectM/Renderer/TextureManager.cpp
index 2905838..b87196a 100644
--- a/src/libprojectM/Renderer/TextureManager.cpp
+++ b/src/libprojectM/Renderer/TextureManager.cpp
@@ -29,7 +29,7 @@
 #define NUM_BLUR_TEX    6
 
 
-TextureManager::TextureManager(const std::string _presetsURL, const int texsizeX, const int texsizeY):
+TextureManager::TextureManager(const std::string _presetsURL, const int texsizeX, const int texsizeY, std::string datadir):
     presetsURL(_presetsURL)
 {
     extensions.push_back(".jpg");
@@ -40,9 +40,11 @@ TextureManager::TextureManager(const std::string _presetsURL, const int texsizeX
     extensions.push_back(".dib");
 
     Preload();
+    if (datadir.empty())
+      datadir = DATADIR_PATH;
 
-    loadTextureDir(std::string(DATADIR_PATH) + "/presets");
-    loadTextureDir(std::string(DATADIR_PATH) + "/textures");
+    loadTextureDir(datadir + "/presets");
+    loadTextureDir(datadir + "/textures");
     loadTextureDir(_presetsURL);
 
     // Create main texture ans associated samplers
diff --git a/src/libprojectM/Renderer/TextureManager.hpp b/src/libprojectM/Renderer/TextureManager.hpp
index b1a7982..10b68e6 100644
--- a/src/libprojectM/Renderer/TextureManager.hpp
+++ b/src/libprojectM/Renderer/TextureManager.hpp
@@ -23,7 +23,8 @@ class TextureManager
   std::vector<std::string> extensions;
 
 public:
-  TextureManager(std::string _presetsURL, const int texsizeX, const int texsizeY);
+  TextureManager(std::string _presetsURL, const int texsizeX, const int texsizeY,
+                 std::string datadir = "");
   ~TextureManager();
 
   void Clear();
diff --git a/src/libprojectM/projectM.cpp b/src/libprojectM/projectM.cpp
index 00377a5..bb71aa0 100755
--- a/src/libprojectM/projectM.cpp
+++ b/src/libprojectM/projectM.cpp
@@ -134,7 +134,7 @@ beatDetect ( 0 ), renderer ( 0 ),  _pcm(0), m_presetPos(0), m_flags(flags), _pip
 
 }
 
-projectM::projectM(Settings settings, int flags):
+projectM::projectM(Settings& settings, int flags):
 beatDetect ( 0 ), renderer ( 0 ),  _pcm(0), m_presetPos(0), m_flags(flags), _pipelineContext(new PipelineContext()), _pipelineContext2(new PipelineContext()),
   timeKeeper(NULL), _matcher(NULL), _merger(NULL)
 {
@@ -267,6 +267,7 @@ void projectM::readSettings (const Settings & settings )
     _settings.titleFontURL = settings.titleFontURL;
     _settings.menuFontURL =  settings.menuFontURL;
     _settings.shuffleEnabled = settings.shuffleEnabled;
+    _settings.datadir = settings.datadir;
 
     _settings.easterEgg = settings.easterEgg;
 
@@ -512,7 +513,7 @@ static void *thread_callback(void *prjm) {
             mspf= ( int ) ( 1000.0/ ( float ) _settings.fps );
         else mspf = 0;
 
-        this->renderer = new Renderer ( width, height, gx, gy, beatDetect, settings().presetURL, settings().titleFontURL, settings().menuFontURL );
+        this->renderer = new Renderer ( width, height, gx, gy, beatDetect, settings().presetURL, settings().titleFontURL, settings().menuFontURL, settings().datadir );
 
         running = true;
 
@@ -931,7 +932,8 @@ void projectM::changeTextureSize(int size) {
   renderer = new Renderer(_settings.windowWidth, _settings.windowHeight,
                           _settings.meshX, _settings.meshY,
                           beatDetect, _settings.presetURL,
-                          _settings.titleFontURL, _settings.menuFontURL);
+                          _settings.titleFontURL, _settings.menuFontURL,
+                          _settings.datadir);
 }
 
 void projectM::changePresetDuration(int seconds) {
diff --git a/src/libprojectM/projectM.hpp b/src/libprojectM/projectM.hpp
index 7339c8f..de7cd1d 100755
--- a/src/libprojectM/projectM.hpp
+++ b/src/libprojectM/projectM.hpp
@@ -128,6 +128,7 @@ public:
         std::string presetURL;
         std::string titleFontURL;
         std::string menuFontURL;
+        std::string datadir;
         int smoothPresetDuration;
         int presetDuration;
         float beatSensitivity;
@@ -153,7 +154,7 @@ public:
     };
 
   projectM(std::string config_file, int flags = FLAG_NONE);
-  projectM(Settings settings, int flags = FLAG_NONE);
+  projectM(Settings& settings, int flags = FLAG_NONE);
 
   //DLLEXPORT projectM(int gx, int gy, int fps, int texsize, int width, int height,std::string preset_url,std::string title_fonturl, std::string title_menuurl);