Add smooth mosaic chars to box drawing
This commit is contained in:
parent
a935c80adc
commit
a508161265
@ -600,7 +600,7 @@ START_ALLOW_CASE_RANGE
|
||||
case 0xe0ba: //
|
||||
case 0xe0bc: //
|
||||
case 0xe0be: //
|
||||
case 0x1fb00 ... 0x1fb3b: // sextants
|
||||
case 0x1fb00 ... 0x1fb67: // symbols for legacy computing
|
||||
return BOX_FONT;
|
||||
default:
|
||||
ans = in_symbol_maps(fg, cpu_cell->ch);
|
||||
@ -638,7 +638,7 @@ START_ALLOW_CASE_RANGE
|
||||
return ch - 0x2500; // IDs from 0x00 to 0x9f
|
||||
case 0xe0b0 ... 0xe0d4:
|
||||
return 0xa0 + ch - 0xe0b0; // IDs from 0xa0 to 0xc4
|
||||
case 0x1fb00 ... 0x1fb3b:
|
||||
case 0x1fb00 ... 0x1fb67:
|
||||
return 0xc5 + ch - 0x1fb00;
|
||||
default:
|
||||
return 0xffff;
|
||||
|
||||
@ -611,6 +611,29 @@ def sextant(buf: BufType, width: int, height: int, level: int = 1, which: int =
|
||||
add_row(which // 16, 2)
|
||||
|
||||
|
||||
@supersampled()
|
||||
def smooth_mosaic(
|
||||
buf: BufType, width: int, height: int, level: int = 1,
|
||||
lower: bool = True, a: Tuple[float, float] = (0, 0), b: Tuple[float, float] = (0, 0)
|
||||
) -> None:
|
||||
ax, ay = int(a[0] * (width - 1)), int(a[1] * (height - 1))
|
||||
bx, by = int(b[0] * (width - 1)), int(b[1] * (height - 1))
|
||||
line = line_equation(ax, ay, bx, by)
|
||||
|
||||
def lower_condition(x: int, y: int) -> bool:
|
||||
return y >= line(x)
|
||||
|
||||
def upper_condition(x: int, y: int) -> bool:
|
||||
return y <= line(x)
|
||||
|
||||
condition = lower_condition if lower else upper_condition
|
||||
for y in range(height):
|
||||
offset = width * y
|
||||
for x in range(width):
|
||||
if condition(x, y):
|
||||
buf[offset + x] = 255
|
||||
|
||||
|
||||
box_chars: Dict[str, List[Callable]] = {
|
||||
'─': [hline],
|
||||
'━': [p(hline, level=3)],
|
||||
@ -710,6 +733,58 @@ box_chars: Dict[str, List[Callable]] = {
|
||||
'▝': [p(quad, x=1)],
|
||||
'▞': [p(quad, x=1), p(quad, y=1)],
|
||||
'▟': [p(quad, x=1), p(quad, y=1), p(quad, x=1, y=1)],
|
||||
|
||||
'🬼': [p(smooth_mosaic, a=(0, 0.75), b=(0.5, 1))],
|
||||
'🬽': [p(smooth_mosaic, a=(0, 0.75), b=(1, 1))],
|
||||
'🬾': [p(smooth_mosaic, a=(0, 0.5), b=(0.5, 1))],
|
||||
'🬿': [p(smooth_mosaic, a=(0, 0.5), b=(1, 1))],
|
||||
'🭀': [p(smooth_mosaic, a=(0, 0), b=(0.5, 1))],
|
||||
|
||||
'🭁': [p(smooth_mosaic, a=(0, 0.25), b=(0.5, 0))],
|
||||
'🭂': [p(smooth_mosaic, a=(0, 0.25), b=(1, 0))],
|
||||
'🭃': [p(smooth_mosaic, a=(0, 0.75), b=(0.5, 0))],
|
||||
'🭄': [p(smooth_mosaic, a=(0, 0.75), b=(1, 0))],
|
||||
'🭅': [p(smooth_mosaic, a=(0, 1), b=(0.5, 0))],
|
||||
'🭆': [p(smooth_mosaic, a=(0, 0.75), b=(1, 0.25))],
|
||||
|
||||
'🭇': [p(smooth_mosaic, a=(0.5, 1), b=(1, 0.75))],
|
||||
'🭈': [p(smooth_mosaic, a=(0, 1), b=(1, 0.75))],
|
||||
'🭉': [p(smooth_mosaic, a=(0.5, 1), b=(1, 0.25))],
|
||||
'🭊': [p(smooth_mosaic, a=(0, 1), b=(1, 0.25))],
|
||||
'🭋': [p(smooth_mosaic, a=(0.5, 1), b=(1, 0))],
|
||||
|
||||
'🭌': [p(smooth_mosaic, a=(0.5, 0), b=(1, 0.25))],
|
||||
'🭍': [p(smooth_mosaic, a=(0, 0), b=(1, 0.25))],
|
||||
'🭎': [p(smooth_mosaic, a=(0.5, 0), b=(1, 0.75))],
|
||||
'🭏': [p(smooth_mosaic, a=(0, 0), b=(1, 0.75))],
|
||||
'🭐': [p(smooth_mosaic, a=(0.5, 0), b=(1, 1))],
|
||||
'🭑': [p(smooth_mosaic, a=(0, 0.25), b=(1, 0.75))],
|
||||
|
||||
'🭒': [p(smooth_mosaic, lower=False, a=(0, 0.75), b=(0.5, 1))],
|
||||
'🭓': [p(smooth_mosaic, lower=False, a=(0, 0.75), b=(1, 1))],
|
||||
'🭔': [p(smooth_mosaic, lower=False, a=(0, 0.25), b=(0.5, 1))],
|
||||
'🭕': [p(smooth_mosaic, lower=False, a=(0, 0.25), b=(1, 1))],
|
||||
'🭖': [p(smooth_mosaic, lower=False, a=(0, 0), b=(0.5, 1))],
|
||||
|
||||
'🭗': [p(smooth_mosaic, lower=False, a=(0, 0.25), b=(0.5, 0))],
|
||||
'🭘': [p(smooth_mosaic, lower=False, a=(0, 0.25), b=(1, 0))],
|
||||
'🭙': [p(smooth_mosaic, lower=False, a=(0, 0.75), b=(0.5, 0))],
|
||||
'🭚': [p(smooth_mosaic, lower=False, a=(0, 0.75), b=(1, 0))],
|
||||
'🭛': [p(smooth_mosaic, lower=False, a=(0, 1), b=(0.5, 0))],
|
||||
|
||||
'🭜': [p(smooth_mosaic, lower=False, a=(0, 0.75), b=(1, 0.25))],
|
||||
'🭝': [p(smooth_mosaic, lower=False, a=(0.5, 1), b=(1, 0.75))],
|
||||
'🭞': [p(smooth_mosaic, lower=False, a=(0, 1), b=(1, 0.75))],
|
||||
'🭟': [p(smooth_mosaic, lower=False, a=(0.5, 1), b=(1, 0.25))],
|
||||
'🭠': [p(smooth_mosaic, lower=False, a=(0, 1), b=(1, 0.25))],
|
||||
'🭡': [p(smooth_mosaic, lower=False, a=(0.5, 1), b=(1, 0))],
|
||||
|
||||
'🭢': [p(smooth_mosaic, lower=False, a=(0.5, 0), b=(1, 0.25))],
|
||||
'🭣': [p(smooth_mosaic, lower=False, a=(0, 0), b=(1, 0.25))],
|
||||
'🭤': [p(smooth_mosaic, lower=False, a=(0.5, 0), b=(1, 0.75))],
|
||||
'🭥': [p(smooth_mosaic, lower=False, a=(0, 0), b=(1, 0.75))],
|
||||
'🭦': [p(smooth_mosaic, lower=False, a=(0.5, 0), b=(1, 1))],
|
||||
'🭧': [p(smooth_mosaic, lower=False, a=(0, 0.25), b=(1, 0.75))],
|
||||
}
|
||||
|
||||
t, f = 1, 3
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user