From 3d92807d2601f21a40d835d70557c71f4a15efd2 Mon Sep 17 00:00:00 2001
From: Emux <devemux86@gmail.com>
Date: Thu, 28 Sep 2017 12:55:44 +0300
Subject: [PATCH] Render themes: Cap modes, fix #417

---
 .../org/oscim/renderer/bucket/LineBucket.java | 21 +++++++++----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/vtm/src/org/oscim/renderer/bucket/LineBucket.java b/vtm/src/org/oscim/renderer/bucket/LineBucket.java
index 70f4f3a3..b437382f 100644
--- a/vtm/src/org/oscim/renderer/bucket/LineBucket.java
+++ b/vtm/src/org/oscim/renderer/bucket/LineBucket.java
@@ -306,10 +306,10 @@ public class LineBucket extends RenderBucket {
             float tx = vPrevX;
             float ty = vPrevY;
 
-            if (squared) {
+            if (!rounded && !squared) {
                 tx = 0;
                 ty = 0;
-            } else if (!outside) {
+            } else if (rounded) {
                 tx *= 0.5;
                 ty *= 0.5;
             }
@@ -475,10 +475,10 @@ public class LineBucket extends RenderBucket {
             dy = (short) (0 | ddy & DIR_MASK);
 
         } else {
-            if (squared) {
+            if (!rounded && !squared) {
                 vPrevX = 0;
                 vPrevY = 0;
-            } else if (!outside) {
+            } else if (rounded) {
                 vPrevX *= 0.5;
                 vPrevY *= 0.5;
             }
@@ -679,13 +679,12 @@ public class LineBucket extends RenderBucket {
                     }
 
                     /* Cap mode */
-                    //if (line.width < 1.5/* || line.fixed*/) {
-                    //    if (capMode != CAP_THIN) {
-                    //        capMode = CAP_THIN;
-                    //        gl.uniform1f(uLineMode, capMode);
-                    //    }
-                    //} else
-                    if (lb.roundCap) {
+                    if (lb.scale < 1.5/* || lb.line.fixed*/) {
+                        if (capMode != CAP_THIN) {
+                            capMode = CAP_THIN;
+                            gl.uniform1f(uLineMode, capMode);
+                        }
+                    } else if (lb.roundCap) {
                         if (capMode != CAP_ROUND) {
                             capMode = CAP_ROUND;
                             gl.uniform1f(uLineMode, capMode);