From f9c6c9c2be3a283baaac73bdb5fbf8c2bd9766ec Mon Sep 17 00:00:00 2001 From: Tim Sylvester Date: Tue, 6 Feb 2024 07:13:13 -0800 Subject: [PATCH] Use optional values in place of zero placeholders (#2089) --- include/mbgl/gfx/drawable_atlases_tweaker.hpp | 12 +++++++----- src/mbgl/gfx/drawable_atlases_tweaker.cpp | 11 +++++++++-- .../renderer/layers/render_fill_extrusion_layer.cpp | 2 +- src/mbgl/renderer/layers/render_fill_layer.cpp | 2 +- src/mbgl/renderer/layers/render_line_layer.cpp | 2 +- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/include/mbgl/gfx/drawable_atlases_tweaker.hpp b/include/mbgl/gfx/drawable_atlases_tweaker.hpp index 277622b4e..f13a30470 100644 --- a/include/mbgl/gfx/drawable_atlases_tweaker.hpp +++ b/include/mbgl/gfx/drawable_atlases_tweaker.hpp @@ -23,8 +23,8 @@ class Drawable; class DrawableAtlasesTweaker : public gfx::DrawableTweaker { public: DrawableAtlasesTweaker(TileAtlasTexturesPtr atlases_, - const StringIdentity iconNameId_, - const StringIdentity glyphNameId_, + const std::optional iconNameId_, + const std::optional glyphNameId_, bool isText_, const bool sdfIcons_, const style::AlignmentType rotationAlignment_, @@ -37,7 +37,9 @@ public: sdfIcons(sdfIcons_), rotationAlignment(rotationAlignment_), iconScaled(iconScaled_), - textSizeIsZoomConstant(textSizeIsZoomConstant_) {} + textSizeIsZoomConstant(textSizeIsZoomConstant_) { + assert(iconNameId_ != glyphNameId_); + } ~DrawableAtlasesTweaker() override = default; void init(Drawable&) override; @@ -48,8 +50,8 @@ protected: void setupTextures(Drawable&, const bool); TileAtlasTexturesPtr atlases; - StringIdentity iconNameId; - StringIdentity glyphNameId; + std::optional iconNameId; + std::optional glyphNameId; bool isText; const bool sdfIcons; diff --git a/src/mbgl/gfx/drawable_atlases_tweaker.cpp b/src/mbgl/gfx/drawable_atlases_tweaker.cpp index 1b816afb7..120c37ed1 100644 --- a/src/mbgl/gfx/drawable_atlases_tweaker.cpp +++ b/src/mbgl/gfx/drawable_atlases_tweaker.cpp @@ -8,9 +8,16 @@ namespace mbgl { namespace gfx { +namespace { +std::optional getSamplerLocation(const gfx::ShaderProgramBasePtr& shader, + const std::optional& nameId) { + return nameId ? shader->getSamplerLocation(*nameId) : std::nullopt; +} +} // namespace + void DrawableAtlasesTweaker::setupTextures(gfx::Drawable& drawable, const bool linearFilterForIcons) { if (const auto& shader = drawable.getShader()) { - if (const auto samplerLocation = shader->getSamplerLocation(glyphNameId)) { + if (const auto samplerLocation = getSamplerLocation(shader, glyphNameId)) { if (atlases) { atlases->glyph->setSamplerConfiguration( {TextureFilterType::Linear, TextureWrapType::Clamp, TextureWrapType::Clamp}); @@ -19,7 +26,7 @@ void DrawableAtlasesTweaker::setupTextures(gfx::Drawable& drawable, const bool l TextureWrapType::Clamp, TextureWrapType::Clamp}); } - if (const auto iconSamplerLocation = shader->getSamplerLocation(iconNameId)) { + if (const auto iconSamplerLocation = getSamplerLocation(shader, iconNameId)) { assert(*samplerLocation != *iconSamplerLocation); drawable.setTexture(atlases ? atlases->glyph : nullptr, *samplerLocation); drawable.setTexture(atlases ? atlases->icon : nullptr, *iconSamplerLocation); diff --git a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp index f6bf877ce..269ba752d 100644 --- a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp +++ b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp @@ -459,7 +459,7 @@ void RenderFillExtrusionLayer::update(gfx::ShaderRegistry& shaders, if (hasPattern && !tweaker) { if (const auto& atlases = tile.getAtlasTextures()) { tweaker = std::make_shared(atlases, - 0, + std::nullopt, idIconTextureName, /*isText=*/false, false, diff --git a/src/mbgl/renderer/layers/render_fill_layer.cpp b/src/mbgl/renderer/layers/render_fill_layer.cpp index 7ade9731d..58367aac2 100644 --- a/src/mbgl/renderer/layers/render_fill_layer.cpp +++ b/src/mbgl/renderer/layers/render_fill_layer.cpp @@ -599,7 +599,7 @@ void RenderFillLayer::update(gfx::ShaderRegistry& shaders, if (const auto& atlases = tile.getAtlasTextures(); atlases && atlases->icon) { atlasTweaker = std::make_shared( atlases, - 0, + std::nullopt, idIconTextureName, /*isText*/ false, /*sdfIcons*/ true, // to force linear filter diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp index a6c90f2e9..eecbfe52c 100644 --- a/src/mbgl/renderer/layers/render_line_layer.cpp +++ b/src/mbgl/renderer/layers/render_line_layer.cpp @@ -680,7 +680,7 @@ void RenderLineLayer::update(gfx::ShaderRegistry& shaders, if (!iconTweaker) { iconTweaker = std::make_shared( atlases, - 0, + std::nullopt, idLineImageUniformName, /*isText*/ false, /*sdfIcons*/ true, // to force linear filter