#include #include namespace mbgl { ProgramParameters::ProgramParameters(const float pixelRatio, const bool overdraw, optional cacheDir_) : defines([&] { std::string result; result.reserve(32); result += "#define DEVICE_PIXEL_RATIO "; result += util::toString(pixelRatio, true); result += "\n"; if (overdraw) { result += "#define OVERDRAW_INSPECTOR\n"; } return result; }()), cacheDir(std::move(cacheDir_)) { } const std::string& ProgramParameters::getDefines() const { return defines; } optional ProgramParameters::cachePath(const char* name) const { if (!cacheDir) { return {}; } else { std::string result; result.reserve(cacheDir->length() + 64); result += *cacheDir; result += "/com.mapbox.gl.shader."; result += name; result += "."; result += util::toHex(std::hash()(defines)); result += ".pbf"; return result; } } ProgramParameters ProgramParameters::withAdditionalDefines(const std::vector& additionalDefines) const { ProgramParameters result(*this); for (const auto& define : additionalDefines) { result.defines += define; result.defines += "\n"; } return result; } } // namespace mbgl