diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core-files.json | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/color_ramp_render_data.cpp | 30 | ||||
-rw-r--r-- | src/mbgl/renderer/color_ramp_render_data.hpp | 26 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_line_layer.cpp | 21 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_line_layer.hpp | 13 |
5 files changed, 60 insertions, 32 deletions
diff --git a/src/core-files.json b/src/core-files.json index f2da5a3d05..aef48d898b 100644 --- a/src/core-files.json +++ b/src/core-files.json @@ -109,6 +109,7 @@ "src/mbgl/renderer/buckets/line_bucket.cpp", "src/mbgl/renderer/buckets/raster_bucket.cpp", "src/mbgl/renderer/buckets/symbol_bucket.cpp", + "src/mbgl/renderer/color_ramp_render_data.cpp", "src/mbgl/renderer/cross_faded_property_evaluator.cpp", "src/mbgl/renderer/group_by_layout.cpp", "src/mbgl/renderer/image_atlas.cpp", @@ -622,6 +623,7 @@ "mbgl/renderer/buckets/line_bucket.hpp": "src/mbgl/renderer/buckets/line_bucket.hpp", "mbgl/renderer/buckets/raster_bucket.hpp": "src/mbgl/renderer/buckets/raster_bucket.hpp", "mbgl/renderer/buckets/symbol_bucket.hpp": "src/mbgl/renderer/buckets/symbol_bucket.hpp", + "mbgl/renderer/color_ramp_render_data.hpp": "src/mbgl/renderer/color_ramp_render_data.hpp", "mbgl/renderer/cross_faded_property_evaluator.hpp": "src/mbgl/renderer/cross_faded_property_evaluator.hpp", "mbgl/renderer/data_driven_property_evaluator.hpp": "src/mbgl/renderer/data_driven_property_evaluator.hpp", "mbgl/renderer/group_by_layout.hpp": "src/mbgl/renderer/group_by_layout.hpp", diff --git a/src/mbgl/renderer/color_ramp_render_data.cpp b/src/mbgl/renderer/color_ramp_render_data.cpp new file mode 100644 index 0000000000..960649dc1d --- /dev/null +++ b/src/mbgl/renderer/color_ramp_render_data.cpp @@ -0,0 +1,30 @@ +#include <mbgl/renderer/color_ramp_render_data.hpp> + +#include <mbgl/gfx/upload_pass.hpp> +#include <mbgl/style/color_ramp_property_value.hpp> + +namespace mbgl { + +ColorRampRenderData::ColorRampRenderData(const style::ColorRampPropertyValue& value) + : image({256, 1}) { + assert(!value.isUndefined()); + const auto length = image.bytes(); + + for (uint32_t i = 0; i < length; i += 4) { + const auto color = value.evaluate(static_cast<double>(i) / length); + image.data[i] = std::floor(color.r * 255); + image.data[i + 1] = std::floor(color.g * 255); + image.data[i + 2] = std::floor(color.b * 255); + image.data[i + 3] = std::floor(color.a * 255); + } +} + +ColorRampRenderData::~ColorRampRenderData() = default; + +void ColorRampRenderData::upload(gfx::UploadPass& uploadPass) { + if (!texture) { + texture = uploadPass.createTexture(image); + } +} + +} // namespace mbgl diff --git a/src/mbgl/renderer/color_ramp_render_data.hpp b/src/mbgl/renderer/color_ramp_render_data.hpp new file mode 100644 index 0000000000..39b130ffea --- /dev/null +++ b/src/mbgl/renderer/color_ramp_render_data.hpp @@ -0,0 +1,26 @@ +#pragma once + +#include <mbgl/gfx/texture.hpp> +#include <mbgl/util/image.hpp> +#include <mbgl/util/optional.hpp> + +namespace mbgl { + +namespace style { +class ColorRampPropertyValue; +} // namespace style + +namespace gfx { +class UploadPass; +} // namespace gfx + +class ColorRampRenderData { +public: + explicit ColorRampRenderData(const style::ColorRampPropertyValue&); + ~ColorRampRenderData(); + void upload(gfx::UploadPass&); + const PremultipliedImage image; + optional<gfx::Texture> texture; +}; + +} // namespace mbgl diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp index 05412fa49a..272cadfb97 100644 --- a/src/mbgl/renderer/layers/render_line_layer.cpp +++ b/src/mbgl/renderer/layers/render_line_layer.cpp @@ -1,5 +1,6 @@ #include <mbgl/renderer/layers/render_line_layer.hpp> #include <mbgl/renderer/buckets/line_bucket.hpp> +#include <mbgl/renderer/color_ramp_render_data.hpp> #include <mbgl/renderer/render_tile.hpp> #include <mbgl/renderer/render_source.hpp> #include <mbgl/renderer/upload_parameters.hpp> @@ -20,26 +21,6 @@ namespace mbgl { using namespace style; -ColorRampRenderData::ColorRampRenderData(const style::ColorRampPropertyValue& value) - : image({256, 1}) { - assert(!value.isUndefined()); - const auto length = image.bytes(); - - for (uint32_t i = 0; i < length; i += 4) { - const auto color = value.evaluate(static_cast<double>(i) / length); - image.data[i] = std::floor(color.r * 255); - image.data[i + 1] = std::floor(color.g * 255); - image.data[i + 2] = std::floor(color.b * 255); - image.data[i + 3] = std::floor(color.a * 255); - } -} - -void ColorRampRenderData::upload(gfx::UploadPass& uploadPass) { - if (!texture) { - texture = uploadPass.createTexture(image); - } -} - inline const LineLayer::Impl& impl(const Immutable<style::Layer::Impl>& impl) { return static_cast<const LineLayer::Impl&>(*impl); } diff --git a/src/mbgl/renderer/layers/render_line_layer.hpp b/src/mbgl/renderer/layers/render_line_layer.hpp index cb2d7ebda2..e300f95e5b 100644 --- a/src/mbgl/renderer/layers/render_line_layer.hpp +++ b/src/mbgl/renderer/layers/render_line_layer.hpp @@ -6,21 +6,10 @@ #include <mbgl/programs/uniforms.hpp> #include <mbgl/style/image_impl.hpp> #include <mbgl/layout/pattern_layout.hpp> -#include <mbgl/gfx/texture.hpp> namespace mbgl { -namespace style { -class ColorRampPropertyValue; -} // namespace style - -class ColorRampRenderData { -public: - explicit ColorRampRenderData(const style::ColorRampPropertyValue&); - void upload(gfx::UploadPass&); - const PremultipliedImage image; - optional<gfx::Texture> texture; -}; +class ColorRampRenderData; class RenderLineLayer final : public RenderLayer { public: |