{"code":"import normalize from 'gl-vec2/normalize';\r\nimport sub from 'gl-vec2/subtract';\r\nimport add from 'gl-vec2/add';\r\nimport mul from 'gl-vec2/scale';\r\n/**\r\n * Generates LineString geometry buffers\r\n * @param data Object to output data to\r\n * @param style Line style\r\n * @returns Generated data\r\n */\r\nexport default function lineString(data, style) {\r\n    let geometry = data.feature.loadGeometry(), vertices;\r\n    for (let i = 0; i < geometry.length; i++) {\r\n        vertices = [];\r\n        for (let j = 0; j < geometry[i].length; j++) {\r\n            vertices.push([(geometry[i][j].x - 2048), (geometry[i][j].y - 2048)]);\r\n        }\r\n        line(vertices, data, style);\r\n    }\r\n    return data;\r\n}\r\n/**\r\n * Extend line segment by its width to polygon\r\n * @param v1 Line segment first vector\r\n * @param v2 Line segment last vector\r\n * @param data Object to output data to\r\n * @param style Line segment style\r\n * @returns Vector indices for calculating joins and cups\r\n */\r\nfunction lineSegment(v1, v2, data, style) {\r\n    let line = sub([], v2, v1);\r\n    let normal = normalize([], [-line[1], line[0]]);\r\n    const distance = mul([], normal, style.width_tmp);\r\n    let frontRight = add([], v2, distance);\r\n    let frontLeft = sub([], v2, distance);\r\n    let backRight = add([], v1, distance);\r\n    let backLeft = sub([], v1, distance);\r\n    frontRight = [frontRight[0], data.layerOrder, frontRight[1]];\r\n    frontLeft = [frontLeft[0], data.layerOrder, frontLeft[1]];\r\n    backRight = [backRight[0], data.layerOrder, backRight[1]];\r\n    backLeft = [backLeft[0], data.layerOrder, backLeft[1]];\r\n    data.vecData.push(...backRight, ...backLeft, ...frontRight);\r\n    data.vecData.push(...frontRight, ...backLeft, ...frontLeft);\r\n    for (let i = 0; i < 6; i++) {\r\n        data.colData.push(style.color_tmp[0] / 255, style.color_tmp[1] / 255, style.color_tmp[2] / 255);\r\n    }\r\n    return {\r\n        front: {\r\n            right: frontRight,\r\n            left: frontLeft\r\n        },\r\n        back: {\r\n            right: backRight,\r\n            left: backLeft\r\n        }\r\n    };\r\n}\r\n/**\r\n * Generate line data - vertices, indices & colors buffers\r\n * @param vertices Preprocessed vector-tile geometry data\r\n * @param data Object to output data to\r\n * @param style Line style\r\n * @returns Generated data buffers\r\n */\r\nfunction line(vertices, data, style) {\r\n    if (vertices.length < 2)\r\n        return;\r\n    let seg1, seg2;\r\n    for (let i = 0; i < vertices.length - 1; i++) {\r\n        seg1 = seg2 ? seg2 : lineSegment(vertices[i], vertices[i + 1], data, style);\r\n        if (i === 0) {\r\n            let vertex = vertices[i].join('|');\r\n            if (data.cups[vertex]) {\r\n                delete data.cups[vertex].normal;\r\n                data.cups[vertex].push(seg1.back);\r\n            }\r\n            else {\r\n                let line = sub([], vertices[i + 1], vertices[i]);\r\n                let normal = normalize([], line);\r\n                let cup = seg1.back;\r\n                cup.normal = normal;\r\n                data.cups[vertex] = [cup];\r\n            }\r\n        }\r\n        if (i === vertices.length - 2) {\r\n            let vertex = vertices[i + 1].join('|');\r\n            if (data.cups[vertex]) {\r\n                delete data.cups[vertex].normal;\r\n                data.cups[vertex].push(seg1.front);\r\n            }\r\n            else {\r\n                let line = sub([], vertices[i], vertices[i + 1]);\r\n                let normal = normalize([], line);\r\n                let cup = seg1.front;\r\n                cup.normal = normal;\r\n                data.cups[vertex] = [cup];\r\n            }\r\n        }\r\n        if (vertices[i + 2]) {\r\n            seg2 = lineSegment(vertices[i + 1], vertices[i + 2], data, style);\r\n            data.vecData.push(...seg1.front.right, ...seg1.front.left, ...seg2.back.right);\r\n            data.vecData.push(...seg1.front.right, ...seg1.front.left, ...seg2.back.left);\r\n            for (let i = 0; i < 6; i++) {\r\n                data.colData.push(style.color_tmp[0] / 255, style.color_tmp[1] / 255, style.color_tmp[2] / 255);\r\n            }\r\n        }\r\n    }\r\n    //console.log('lineString', data.vecData);\r\n    return data;\r\n}\r\n//# sourceMappingURL=linestring.js.map","map":"{\"version\":3,\"file\":\"linestring.js\",\"sourceRoot\":\"\",\"sources\":[\"../src/constructor/linestring.ts\"],\"names\":[],\"mappings\":\"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\"}"}
