Make dashed line spacing even

This commit is contained in:
Kovid Goyal 2017-01-08 22:37:28 +05:30
parent 3e289a57f9
commit 935e7a975f

View File

@ -10,7 +10,7 @@ from kitty.utils import get_logical_dpi
def thickness(level=1, horizontal=True): def thickness(level=1, horizontal=True):
dpi = get_logical_dpi()[0 if horizontal else 1] dpi = get_logical_dpi()[0 if horizontal else 1]
pts = (0.001, 1, 1.2, 3)[level] pts = (0.001, 1, 1.5, 2)[level]
return int(math.ceil(pts * dpi / 72.0)) return int(math.ceil(pts * dpi / 72.0))
@ -35,18 +35,23 @@ def get_holes(sz, hole_sz, num):
if num == 1: if num == 1:
pts = [sz // 2] pts = [sz // 2]
elif num == 2: elif num == 2:
pts = (sz // 3, 2 * (sz // 3)) ssz = (sz - 2 * hole_sz) // 3
pts = (ssz + hole_sz // 2, 2 * ssz + hole_sz // 2 + hole_sz)
elif num == 3: elif num == 3:
pts = (sz // 4, sz // 2, 3 * (sz // 4)) ssz = (sz - 3 * hole_sz) // 4
pts = (ssz + hole_sz // 2, 2 * ssz + hole_sz // 2 + hole_sz, 3 * ssz + 2 * hole_sz + hole_sz // 2)
holes = [] holes = []
for c in pts: for c in pts:
holes.append(tuple(range(c - hole_sz // 2, c - hole_sz // 2 + hole_sz))) holes.append(tuple(range(c - hole_sz // 2, c - hole_sz // 2 + hole_sz)))
return holes return holes
def add_hholes(buf, width, height, level=1, num=1, hole_sz=3): hole_factor = 8
def add_hholes(buf, width, height, level=1, num=1):
line_sz = thickness(level=level, horizontal=True) line_sz = thickness(level=level, horizontal=True)
hole_sz = thickness(level=hole_sz, horizontal=False) hole_sz = width // hole_factor
start = height // 2 - line_sz // 2 start = height // 2 - line_sz // 2
holes = get_holes(width, hole_sz, num) holes = get_holes(width, hole_sz, num)
for y in range(start, start + line_sz): for y in range(start, start + line_sz):
@ -56,9 +61,9 @@ def add_hholes(buf, width, height, level=1, num=1, hole_sz=3):
buf[offset + x] = 0 buf[offset + x] = 0
def add_vholes(buf, width, height, level=1, num=1, hole_sz=3): def add_vholes(buf, width, height, level=1, num=1):
line_sz = thickness(level=level, horizontal=False) line_sz = thickness(level=level, horizontal=False)
hole_sz = thickness(level=hole_sz, horizontal=True) hole_sz = height // hole_factor
start = width // 2 - line_sz // 2 start = width // 2 - line_sz // 2
holes = get_holes(height, hole_sz, num) holes = get_holes(height, hole_sz, num)
for x in range(start, start + line_sz): for x in range(start, start + line_sz):