summaryrefslogtreecommitdiff
path: root/src/mbgl/geometry/dem_data.hpp
diff options
context:
space:
mode:
authorMolly Lloyd <mollymerp@users.noreply.github.com>2018-01-23 10:49:23 -0800
committerGitHub <noreply@github.com>2018-01-23 10:49:23 -0800
commitf3294200c6c866e5ab031ad8346c59a76aa37249 (patch)
tree6d9aedb552552607641a15c415a60be99a0877d5 /src/mbgl/geometry/dem_data.hpp
parent2d15aed43c9faa875a8f625c3afc286f1175e0ce (diff)
downloadqtlocation-mapboxgl-f3294200c6c866e5ab031ad8346c59a76aa37249.tar.gz
[core] add raster-dem source type and hillshade layer type (#10642)
Diffstat (limited to 'src/mbgl/geometry/dem_data.hpp')
-rw-r--r--src/mbgl/geometry/dem_data.hpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/mbgl/geometry/dem_data.hpp b/src/mbgl/geometry/dem_data.hpp
new file mode 100644
index 0000000000..507a51661d
--- /dev/null
+++ b/src/mbgl/geometry/dem_data.hpp
@@ -0,0 +1,48 @@
+#pragma once
+
+#include <mbgl/math/clamp.hpp>
+#include <mbgl/util/image.hpp>
+
+#include <memory>
+#include <array>
+#include <cassert>
+#include <vector>
+
+namespace mbgl {
+
+class DEMData {
+public:
+ DEMData(const PremultipliedImage& image);
+ void backfillBorder(const DEMData& borderTileData, int8_t dx, int8_t dy);
+
+ void set(const int32_t x, const int32_t y, const int32_t value) {
+ reinterpret_cast<int32_t*>(image.data.get())[idx(x, y)] = value + 65536;
+ }
+
+ int32_t get(const int32_t x, const int32_t y) const {
+ return reinterpret_cast<const int32_t*>(image.data.get())[idx(x, y)] - 65536;
+ }
+
+ const PremultipliedImage* getImage() const {
+ return &image;
+ }
+
+ const int32_t dim;
+ const int32_t border;
+ const int32_t stride;
+
+
+ private:
+ PremultipliedImage image;
+
+ size_t idx(const int32_t x, const int32_t y) const {
+ assert(x >= -border);
+ assert(x < dim + border);
+ assert(y >= -border);
+ assert(y < dim + border);
+ return (y + border) * stride + (x + border);
+ }
+
+};
+
+} // namespace mbgl