summaryrefslogtreecommitdiff
path: root/include/mbgl
diff options
context:
space:
mode:
authorLauren Budorick <lauren@mapbox.com>2014-07-25 18:17:37 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2014-09-03 18:12:40 -0700
commit71c31cee2499d44fcd590136d15c5da7fbfb65ec (patch)
treebdbaf4289a156af7be552a3758e257ef25e2caf4 /include/mbgl
parentc1280f0b380bfb21ce9e811b87bcf7d8ab380f25 (diff)
downloadqtlocation-mapboxgl-71c31cee2499d44fcd590136d15c5da7fbfb65ec.tar.gz
linepattern in progress
Diffstat (limited to 'include/mbgl')
-rw-r--r--include/mbgl/renderer/line_bucket.hpp4
-rw-r--r--include/mbgl/renderer/painter.hpp2
-rw-r--r--include/mbgl/shader/linepattern_shader.hpp59
3 files changed, 64 insertions, 1 deletions
diff --git a/include/mbgl/renderer/line_bucket.hpp b/include/mbgl/renderer/line_bucket.hpp
index c7e375a0a1..8babb734ed 100644
--- a/include/mbgl/renderer/line_bucket.hpp
+++ b/include/mbgl/renderer/line_bucket.hpp
@@ -17,10 +17,11 @@ class LineVertexBuffer;
class TriangleElementsBuffer;
class LineShader;
class LinejoinShader;
+class LinepatternShader;
struct pbf;
class LineBucket : public Bucket {
- typedef ElementGroup<1> triangle_group_type;
+ typedef ElementGroup<2> triangle_group_type;
typedef ElementGroup<1> point_group_type;
public:
@@ -38,6 +39,7 @@ public:
bool hasPoints() const;
void drawLines(LineShader& shader);
+ void drawLinePatterns(LinepatternShader& shader);
void drawPoints(LinejoinShader& shader);
public:
diff --git a/include/mbgl/renderer/painter.hpp b/include/mbgl/renderer/painter.hpp
index a8fe62b550..534323dd5d 100644
--- a/include/mbgl/renderer/painter.hpp
+++ b/include/mbgl/renderer/painter.hpp
@@ -14,6 +14,7 @@
#include <mbgl/shader/pattern_shader.hpp>
#include <mbgl/shader/line_shader.hpp>
#include <mbgl/shader/linejoin_shader.hpp>
+#include <mbgl/shader/linepattern_shader.hpp>
#include <mbgl/shader/icon_shader.hpp>
#include <mbgl/shader/raster_shader.hpp>
#include <mbgl/shader/text_shader.hpp>
@@ -169,6 +170,7 @@ public:
std::unique_ptr<OutlineShader> outlineShader;
std::unique_ptr<LineShader> lineShader;
std::unique_ptr<LinejoinShader> linejoinShader;
+ std::unique_ptr<LinepatternShader> linepatternShader;
std::unique_ptr<PatternShader> patternShader;
std::unique_ptr<IconShader> iconShader;
std::unique_ptr<RasterShader> rasterShader;
diff --git a/include/mbgl/shader/linepattern_shader.hpp b/include/mbgl/shader/linepattern_shader.hpp
new file mode 100644
index 0000000000..7d98b295a8
--- /dev/null
+++ b/include/mbgl/shader/linepattern_shader.hpp
@@ -0,0 +1,59 @@
+#ifndef MBGL_SHADER_SHADER_LINEPATTERN
+#define MBGL_SHADER_SHADER_LINEPATTERN
+
+#include <mbgl/shader/shader.hpp>
+
+namespace mbgl {
+
+class LinepatternShader : public Shader {
+public:
+ LinepatternShader();
+
+ void bind(char *offset);
+
+ void setExtrudeMatrix(const std::array<float, 16>& exmatrix);
+ void setLineWidth(const std::array<float, 2>& linewidth);
+ void setRatio(float ratio);
+ void setDebug(float debug);
+ void setPatternSize(const std::array<float, 2>& new_pattern_size);
+ void setPatternTopLeft(const std::array<float, 2>& new_pattern_tl);
+ void setPatternBottomRight(const std::array<float, 2>& new_pattern_br);
+ void setOffset(const std::array<float, 2>& offset);
+ void setGamma(float new_gamma);
+ void setFade(float new_fade);
+
+private:
+ int32_t a_pos = -1;
+ int32_t a_extrude = -1;
+ int32_t a_linesofar = -1;
+
+ std::array<float, 16> exmatrix = {{}};
+ int32_t u_exmatrix = -1;
+
+ std::array<float, 2> linewidth = {{}};
+ int32_t u_linewidth = -1;
+
+ float ratio = 0;
+ int32_t u_ratio = -1;
+
+ std::array<float, 2> pattern_size = {{}};
+ int32_t u_pattern_size = -1;
+
+ std::array<float, 2> pattern_tl = {{}};
+ int32_t u_pattern_tl = -1;
+
+ std::array<float, 2> pattern_br = {{}};
+ int32_t u_pattern_br = -1;
+
+ std::array<float, 2> offset = {{}};
+ int32_t u_offset = -1;
+
+ float gamma = 0.0f;
+ int32_t u_gamma = -1;
+
+ float fade = 0;
+ int32_t u_fade = -1;
+};
+}
+
+#endif