diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2017-06-05 10:43:34 +0200 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2017-06-13 12:21:50 -0700 |
commit | 18b50f51b4fa14b9f2fe6f865dc47490b22e74c6 (patch) | |
tree | 24c28db13a496da6625c6a395bc6cf0d6b5b63ca /src/mbgl/programs | |
parent | 1708b297a7c4eb6287e36837fd1cfe1220c5d97b (diff) | |
download | qtlocation-mapboxgl-18b50f51b4fa14b9f2fe6f865dc47490b22e74c6.tar.gz |
[core] cleanup ProgramParameters
Diffstat (limited to 'src/mbgl/programs')
-rw-r--r-- | src/mbgl/programs/program_parameters.cpp | 32 | ||||
-rw-r--r-- | src/mbgl/programs/program_parameters.hpp | 15 | ||||
-rw-r--r-- | src/mbgl/programs/programs.hpp | 4 |
3 files changed, 41 insertions, 10 deletions
diff --git a/src/mbgl/programs/program_parameters.cpp b/src/mbgl/programs/program_parameters.cpp new file mode 100644 index 0000000000..f9f680ac1e --- /dev/null +++ b/src/mbgl/programs/program_parameters.cpp @@ -0,0 +1,32 @@ +#include <mbgl/programs/program_parameters.hpp> + +#include <iomanip> +#include <sstream> + +namespace mbgl { + +ProgramParameters::ProgramParameters(const float pixelRatio, + const bool overdraw, + std::string cacheDir_) + : defines([&] { + std::ostringstream ss; + ss.imbue(std::locale("C")); + ss.setf(std::ios_base::showpoint); + ss << "#define DEVICE_PIXEL_RATIO " << pixelRatio << std::endl; + if (overdraw) { + ss << "#define OVERDRAW_INSPECTOR" << std::endl; + } + return ss.str(); + }()), + hash(std::hash<std::string>()(defines)), + cacheDir(std::move(cacheDir_)) { +} + +std::string ProgramParameters::cachePath(const char* name) const { + std::ostringstream ss; + ss << cacheDir << "/com.mapbox.gl.shader." << name << "." << std::setfill('0') + << std::setw(sizeof(size_t) * 2) << std::hex << hash << ".pbf"; + return ss.str(); +} + +} // namespace mbgl diff --git a/src/mbgl/programs/program_parameters.hpp b/src/mbgl/programs/program_parameters.hpp index e427963f81..d286ff57d1 100644 --- a/src/mbgl/programs/program_parameters.hpp +++ b/src/mbgl/programs/program_parameters.hpp @@ -7,16 +7,15 @@ namespace mbgl { class ProgramParameters { public: - ProgramParameters(float pixelRatio_ = 1.0, - bool overdraw_ = false, - std::string cacheDir_ = "") - : pixelRatio(pixelRatio_), overdraw(overdraw_), cacheDir(std::move(cacheDir_)) { - } + ProgramParameters(float pixelRatio, bool overdraw, std::string cacheDir); - const float pixelRatio; - const bool overdraw; + const std::string defines; + + std::string cachePath(const char* name) const; + +private: + const std::size_t hash; const std::string cacheDir; }; } // namespace mbgl - diff --git a/src/mbgl/programs/programs.hpp b/src/mbgl/programs/programs.hpp index ff6b1cd505..b58d2e3bee 100644 --- a/src/mbgl/programs/programs.hpp +++ b/src/mbgl/programs/programs.hpp @@ -31,8 +31,8 @@ public: symbolIcon(context, programParameters), symbolIconSDF(context, programParameters), symbolGlyph(context, programParameters), - debug(context, ProgramParameters(programParameters.pixelRatio, false, programParameters.cacheDir)), - collisionBox(context, ProgramParameters(programParameters.pixelRatio, false, programParameters.cacheDir)) { + debug(context, programParameters), + collisionBox(context, programParameters) { } CircleProgram circle; |