summaryrefslogtreecommitdiff
path: root/src/mbgl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl')
-rw-r--r--src/mbgl/renderer/color_ramp_render_data.cpp30
-rw-r--r--src/mbgl/renderer/color_ramp_render_data.hpp26
-rw-r--r--src/mbgl/renderer/layers/render_line_layer.cpp21
-rw-r--r--src/mbgl/renderer/layers/render_line_layer.hpp13
4 files changed, 58 insertions, 32 deletions
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: