summaryrefslogtreecommitdiff
path: root/src/mbgl/geometry/line_buffer.cpp
blob: f475c63b24738cba5c66ed3e678f0799b6ddd25f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <mbgl/geometry/line_buffer.hpp>
#include <mbgl/platform/gl.hpp>

#include <cmath>

using namespace mbgl;

size_t LineVertexBuffer::add(vertex_type x, vertex_type y, float ex, float ey, int8_t tx, int8_t ty, int32_t linesofar) {
    size_t idx = index();
    void *data = addElement();

    int16_t *coords = static_cast<int16_t *>(data);
    coords[0] = (x * 2) | tx;
    coords[1] = (y * 2) | ty;

    int8_t *extrude = static_cast<int8_t *>(data);
    extrude[4] = ::round(extrudeScale * ex);
    extrude[5] = ::round(extrudeScale * ey);
    extrude[6] = static_cast<int8_t>(linesofar / 128);
    extrude[7] = static_cast<int8_t>(linesofar % 128);

    return idx;
}