forked from ktye/ktye.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathraster.k
More file actions
128 lines (123 loc) · 7.07 KB
/
Copy pathraster.k
File metadata and controls
128 lines (123 loc) · 7.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
raster:{[wh;a]w:wh 0;h:wh 1;o:(w*h)#0;r:fg:0;r:0;pa:();(.'!a)@'.a;o}
strokeStyle:{fg::icolor x;}
beginPath: {[x]pa::();}
moveTo: {pa::,_0.+x;}
lineTo: {;pa::pa,,_0.+x;}
stroke: {[x]f:iline[;;w];o[$[0~r;,/1_f':pa;&(r)>+iarc[r;pa;w;h]]]::fg;r::0;}
fill: {[x]o[&0>iarc[r;pa;w;h]]::fg;r::0;}
rect: {dx:,/(x 2;0);dy:,/(0;x 3);a:x 0 1;pa::(a;a+dx;a+dx+dy;a+dy;a);}
arc: {pa::_x 0 1;r::_x 2;}
fillText: {o[istr[x 1;x 2;w;x 0]]::fg;}
fillStyle:strokeStyle
clip:lineWidth:textBaseline:font:{x;}
ihex: {[c]+/i*16\*\(n:#i:|"0123456789abcdef"?-c 4 5 2 3 0 1)#16}
irgb: {[rgb]+/1 256 65536*rgb}
icolor:{c:`white`black`gray`red`green`blue!irgb'(255;0;128;255 0 0;0 255 0;0 0 255);$[(#c)>i:(!c)?k:`$x;c k;ihex 1_x]}
iline: {[a;b;w]$[(+*d)<+dy:(d:b-a)1;yline.$[0>dy;(b;a-b;w);(a;b-a;w)];xline.$[0>*d;(b;a-b;w);(a;b-a;w)]]}
xline: {[a;d;w]dx:*d;m:(d 1)%0.+dx;(x+a 0)+w*y:_(a 1)+m*x:!dx}
yline: {[a;d;w]dy:d 1;m:(*d)%0.+dy;(w*y+a 1)+x:_(a 0)+m*y:!dy}
iarc: {[r;xy;w;h]`r`xy`w`h!(r;xy;w;h);x:(w/i:!w*h)-xy 0;y:(w\i)-xy 1;((x*x)+y*y)-r*r}
istr: {[x;y;w;s],/(10*!#s)+(x+w*y-20)+(10/i)+w*10\i:glyphs@0+s} /font.k (10x20)
/font.k
bits:{2/128 64 32 16 8 4 2 1\x}
glyphs:{&,/bits'x}'@[256#,0x00;0+":+-*%&|<>=!~,^#_$?@.0123456789'/\;`",(_34),"(){}[]abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";(0x0000000000000001c07000000000001c070000000000000000 /:
0x00000000000c0300c0307f9fe0c0300c030000000000000000 /+
0x000000000000000000007f9fe0000000000000000000000000 /-
0x0000000000000cc330787f9fe1e0cc33000000000000000000 /*
0x00000000e26d9b63b00c060180c0301806e36ddb6380000000 /%
0x0000000070360d8360f0180e06c19a6398c778f20000000000 /&
0x000300c0300c0300c0300c0300c0300c0300c0300c0300c000 /|
0x0000000004030180c06030180300600c018030040000000000 /<
0x0000000080300600c01803006030180c060300800000000000 />
0x0000000000000007f9fe00000001fe7f800000000000000000 /=
0x00000000300c0300c0300c0300c0300c0000c0300000000000 /!
0x00000000000000000000399b66700000000000000000000000 /~
0x000000000000000000000000000000000000e0381c07038000 /,
0x0000000000000000c078331860000000000000000000000000 /^
0x00000000360d8360d8ff1b06c1b1fe360d8360d80000000000 /#
0x00000000000000000000000000000000000000007f9fe00000 /_
0x000300c0783f1b66c1b06c0fc0d8360d9b63f0780c03000000 /$
0x00000000783318661986030180c0300c0000c0300000000000 /?
0x000000007833186679be6d9b66d9bc661803187c0000000000 /@
0x000000000000000000000000000000000701c0700000000000 /.
0x00000000301e0cc331866198661986330cc1e0300000000000 /0
0x00000000301c0f06c0300c0300c0300c0300c0300000000000 /1
0x00000000783f186618060180c0e060301807f9fe0000000000 /2
0x00000000783f186618060303803006619863f0780000000000 /3
0x00000000040301c0f06c3318c7f9fe0300c0300c0000000000 /4
0x00000001fe7f980601806e1fc01806019863f0780000000000 /5
0x00000000783f184601806e1fc61986619863f0780000000000 /6
0x00000001fe7f8060300c060180c03018060300c00000000000 /7
0x00000000783f186619863f07833186619863f0780000000000 /8
0x00000000783f18661986618fe1f806019863f0780000000000 /9
0x00000000300c0300c030000000000000000000000000000000 /'
0x00006018060300c03018060300c060180c0300c06018060000 //
0x0018060180300c030060180300c0180600c0300c0180601800 /\
0x00000000000000000000000701c00000000000701c0e000000 /;
0x00000180600c0180300c000000000000000000000000000000 /`
0x00000000cc330cc33000000000000000000000000000000000 /"
0x00006030180c030180601806018060180600c0300600c01800 /(
0x00180300600c030060180601806018060180c030180c060000 /)
0x0001c0f0601806018060701c01806018060180601803c07000 /{
0x000e03c01806018060180380e060180601806018060f038000 /}
0x000fc3f0c0300c0300c0300c0300c0300c0300c0300fc3f000 /[
0x000fc3f00c0300c0300c0300c0300c0300c0300c030fc3f000 /]
0x0000000000000000007c33806018fe61986738fa0000000000 /a
0x000000018060180601b8731866198661986731b80000000000 /b
0x0000000000000001f0e67198060180601c63987c0000000000 /c
0x00000000060180601876339866198661986338760000000000 /d
0x0000000000000000007833186619fe601803187c0000000000 /e
0x00000000381f064180607e0601806018060180600000000000 /f
0x000000000000000000fa6398c6318c630f8600fc61986618fc /g
0x000000018060180601b87f1866198661986619860000000000 /h
0x00000000000c030000700c0300c0300c0300c0780000000000 /i
0x00000000000300c0001c0300c0300c0300c0300c6318c630f8 /j
0x000000018060180631986c1e0701e06c198631860000000000 /k
0x00000000700c0300c0300c0300c0300c0300c0780000000000 /l
0x0000000000000000016c7f9b66d9b66d9b66d9b60000000000 /m
0x000000000000000001b87f1866198661986619860000000000 /n
0x000000000000000000783f18661986619863f0780000000000 /o
0x000000000000000001b87f18661986619867f1b86018060180 /p
0x000000000000000000763f98661986619863f8760180601806 /q
0x000000000000000000bc398c0300c0300c0300c00000000000 /r
0x000000000000000000783f186600fc019863f0780000000000 /s
0x000000006018060181f81806018060180660f0180000000000 /t
0x000000000000000001866198661986619863f8760000000000 /u
0x0000000000000000018661986330cc1e0780c0300000000000 /v
0x00000000000000000186619866d9b66d9b67f8cc0000000000 /w
0x00000000000000000186738cc1e0301e0cc739860000000000 /x
0x000000000000000001866198661986619863f8760198633078 /y
0x000000000000000000fe3f806030180c0603f8fe0000000000 /z
0x00000000301e0cc33186619fe7f98661986619860000000000 /A
0x00000001f07e18c6318c7e1f863186619867f1f80000000000 /B
0x00000000783f186619806018060180619863f0780000000000 /C
0x00000001f87f186619866198661986619867f1f80000000000 /D
0x00000001fe7f980601807e1f860180601807f9fe0000000000 /E
0x00000001fe7f980601807e1f86018060180601800000000000 /F
0x00000000783f186601806019e61986619863f87a0000000000 /G
0x000000018661986619867f9fe6198661986619860000000000 /H
0x00000000780c0300c0300c0300c0300c0300c0780000000000 /I
0x00000000fc3f00c0300c0300c0300c6318c3e0700000000000 /J
0x00000001866198c631987e1f0661986318c619860000000000 /K
0x000000018060180601806018060180601807f9fe0000000000 /L
0x0000000186619ce739fe6d9b66d9b661986619860000000000 /M
0x0000000186719c6799e66d9b66799e6398e619860000000000 /N
0x00000000783f186619866198661986619863f0780000000000 /O
0x00000001f87f18661986619fc7e18060180601800000000000 /P
0x00000000783f1866198661986619866d99e3b07c0180000000 /Q
0x00000001f87f18661986619fc7e1986318c619860000000000 /R
0x00000000783f186619803e07c01806619863f0780000000000 /S
0x00000001fe7f8300c0300c0300c0300c0300c0300000000000 /T
0x000000018661986619866198661986619863f0780000000000 /U
0x000000018661986618cc330cc1e0781e0300c0300000000000 /V
0x000000018661986619866d9b66d9b6739ce619860000000000 /W
0x0000000186618cc330781e0301e078330cc619860000000000 /X
0x0000000186618cc330781e0300c0300c0300c0300000000000 /Y
0x00000001fe7f806030180603018060301807f9fe0000000000)]
rasterT:,/(`beginPath`strokeStyle`lineWidth`rect`stroke!(();"red";2;(10 10 80 50);())
`fillText!,("text";10;30;40)
`beginPath`strokeStyle`arc`stroke!(();"red";80 50 10 0 2p;())
`beginPath`strokeStyle`arc`fill!(();"red";20 50 10 0 2p;()))
rasterTest:{[](*wh) 'draster[wh:200 100;rasterT]}
rasterT:`beginPath`lineWidth`strokeStyle`lineTo`lineTo`lineTo`lineTo`lineTo`lineTo`lineTo`stroke!(();2;"#8dd3c7";5.0 300.5379;25.52631 217.6333;46.05263 142.1343;66.57894 80.78503;87.10526 39.06561;107.6315 20.70275;128.1578 27.33673;())
/800 'draster[800 600;rasterT]