Compare commits

...
2 Commits
Author SHA1 Message Date
Hannes fe9072221b rainbow 2026-06-25 23:25:49 +02:00
Hannes b78b24d679 added stuff 2026-06-25 01:55:44 +02:00
6 changed files with 826 additions and 71 deletions

No files matched your search

+66
View File
@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="169.33333mm"
height="127mm"
viewBox="0 0 169.33333 127"
version="1.1"
id="svg1"
sodipodi:docname="480p.svg"
inkscape:version="1.4.4 (dcaf3e7d9e, 2026-05-05)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showguides="false"
inkscape:zoom="2.7665553"
inkscape:cx="225.73198"
inkscape:cy="268.56503"
inkscape:window-width="3433"
inkscape:window-height="2076"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1">
<inkscape:page
x="0"
y="0"
width="169.33333"
height="127"
id="page2"
margin="0"
bleed="0" />
</sodipodi:namedview>
<defs
id="defs1" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:#808080;stroke-width:0.264583"
id="rect1"
width="63.5"
height="127"
x="17.991667"
y="0" />
<rect
style="fill:#808080;stroke-width:0.264583"
id="rect1-3"
width="63.5"
height="127"
x="87.841667"
y="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

+370 -65
View File
@@ -9,79 +9,175 @@ n0 = [
[1,1,1] [1,1,1]
] ]
n1 = [ n_x = [
[0,0,0],
[0,0,0],
[1,0,1],
[0,1,0],
[1,0,1]
]
hexnumbers = [
[ # 0
[1,1,1],
[1,0,1],
[1,0,1],
[1,0,1],
[1,1,1]
],
[ # 1
[0,1,0], [0,1,0],
[1,1,0], [1,1,0],
[0,1,0], [0,1,0],
[0,1,0], [0,1,0],
[1,1,1] [1,1,1]
] ],
n2 = [ [ # 2
[1,1,1], [1,1,1],
[0,0,1], [0,0,1],
[1,1,1], [1,1,1],
[1,0,0], [1,0,0],
[1,1,1] [1,1,1]
] ],
n3 = [ [ # 3
[1,1,1], [1,1,1],
[0,0,1], [0,0,1],
[1,1,1], [1,1,1],
[0,0,1], [0,0,1],
[1,1,1] [1,1,1]
] ],
n4 = [ [ # 4
[1,0,1], [1,0,1],
[1,0,1], [1,0,1],
[1,1,1], [1,1,1],
[0,0,1], [0,0,1],
[0,0,1] [0,0,1]
] ],
n5 = [ [ # 5
[1,1,1], [1,1,1],
[1,0,0], [1,0,0],
[1,1,1], [1,1,1],
[0,0,1], [0,0,1],
[1,1,1] [1,1,1]
] ],
n6 = [ [ # 6
[1,1,1], [1,1,1],
[1,0,0], [1,0,0],
[1,1,1], [1,1,1],
[1,0,1], [1,0,1],
[1,1,1] [1,1,1]
] ],
n7 = [ [ # 7
[1,1,1], [1,1,1],
[0,0,1], [0,0,1],
[0,0,1], [0,0,1],
[0,0,1], [0,0,1],
[0,0,1] [0,0,1]
] ],
n8 = [ [ # 8
[1,1,1], [1,1,1],
[1,0,1], [1,0,1],
[1,1,1], [1,1,1],
[1,0,1], [1,0,1],
[1,1,1] [1,1,1]
] ],
n9 = [ [ # 9
[1,1,1], [1,1,1],
[1,0,1], [1,0,1],
[1,1,1], [1,1,1],
[0,0,1], [0,0,1],
[1,1,1] [1,1,1]
],
[ # A (10)
[1,1,1],
[1,0,1],
[1,1,1],
[1,0,1],
[1,0,1]
],
[ # B (11)
[1,1,0],
[1,0,1],
[1,1,0],
[1,0,1],
[1,1,0]
],
[ # C (12)
[1,1,1],
[1,0,0],
[1,0,0],
[1,0,0],
[1,1,1]
],
[ # D (13)
[1,1,0],
[1,0,1],
[1,0,1],
[1,0,1],
[1,1,0]
],
[ # E (14)
[1,1,1],
[1,0,0],
[1,1,1],
[1,0,0],
[1,1,1]
],
[ # F (15)
[1,1,1],
[1,0,0],
[1,1,1],
[1,0,0],
[1,0,0]
]
] ]
### FONT: https://github.com/teryror/pixel-fonts/tree/master ### FONT: https://github.com/teryror/pixel-fonts/tree/master
a_p = [
[1,1,1,1,1,0],
[1,1,0,0,1,1],
[1,1,0,0,1,1],
[1,1,0,0,1,1],
[1,1,1,1,1,0],
[1,1,0,0,0,0],
[1,1,0,0,0,0],
[1,1,0,0,0,0]
]
a_1 = [
[0,0,0,1,1,0],
[0,0,1,1,1,0],
[0,1,1,1,1,0],
[1,1,0,1,1,0],
[0,0,0,1,1,0],
[0,0,0,1,1,0],
[0,0,0,1,1,0],
[0,0,0,1,1,0]
]
a_2 = [
[0,1,1,1,1,0],
[1,1,0,0,1,1],
[0,0,0,0,1,1],
[0,0,0,1,1,0],
[0,0,1,1,0,0],
[0,1,1,0,0,0],
[1,1,0,0,0,0],
[1,1,1,1,1,1]
]
a_s = [ a_s = [
[0,1,1,1,1,0], [0,1,1,1,1,0],
@@ -94,6 +190,28 @@ a_s = [
[0,1,1,1,1,0] [0,1,1,1,1,0]
] ]
a_h = [
[1,1,0,0,1,1],
[1,1,0,0,1,1],
[1,1,0,0,1,1],
[1,1,1,1,1,1],
[1,1,0,0,1,1],
[1,1,0,0,1,1],
[1,1,0,0,1,1],
[1,1,0,0,1,1]
]
a_w = [
[1,1,0,0,1,0,0,1,1],
[1,1,0,0,1,0,0,1,1],
[1,1,0,1,1,1,0,1,1],
[1,1,1,1,1,1,1,1,1],
[0,1,1,1,0,1,1,1,0],
[0,1,1,1,0,1,1,1,0],
[0,1,1,0,0,0,1,1,0],
[0,0,1,0,0,0,1,0,0]
]
a_c = [ a_c = [
[0,1,1,1,1,0], [0,1,1,1,1,0],
[1,1,1,0,1,1], [1,1,1,0,1,1],
@@ -229,6 +347,7 @@ def make_board(n: int):
board.append(line) board.append(line)
return board_height, board_width, board return board_height, board_width, board
def make_sprite(): def make_sprite():
@@ -288,20 +407,34 @@ colors2 = [
text_bg = black text_bg = black
next_board = make_next_board() next_board = make_next_board()
nb1 = coord(88, 96, 128, 128) nb1 = coord(88, 104, 128, 128)
nb2 = coord(1064, 96, 128, 128) next_board1 = make_next_board()
nb2 = coord(1064, 104, 128, 128)
board_height, board_width, board = make_board(len(colors)) board_height, board_width, board = make_board(len(colors))
b1 = coord(304, 40, 320, 640) b1 = coord(304, 40, 320, 640)
board2_height, board2_width, board2 = make_board(len(colors2)) board2_height, board2_width, board2 = make_board(len(colors2))
b2 = coord(656, 40, 320, 640) b2 = coord(656, 40, 320, 640)
score0 = make_score()
s1 = coord(84, 332, 136, 32)
sn1 = coord(74, 368, 156, 20)
score1 = make_score() score1 = make_score()
s1 = coord(84, 454, 136, 32) s2 = coord(1060, 332, 136, 32)
sn1 = coord(74, 490, 156, 20) sn2 = coord(1050, 368, 156, 20)
score2 = make_score()
s2 = coord(1060, 454, 136, 32) mm0 = coord(576, 155, 128, 128)
sn2 = coord(1050, 490, 156, 20) mm1 = coord(576, 437, 128, 128)
lm0 = coord(120, 476, 58, 32)
lm1 = coord(120, 516, 58, 32)
lm2 = coord(120, 556, 64, 32)
lm3 = coord(120, 596, 64, 32)
rm0 = coord(1096, 476, 58, 32)
rm1 = coord(1096, 516, 58, 32)
rm2 = coord(1096, 556, 64, 32)
rm3 = coord(1096, 596, 64, 32)
width = 1280 width = 1280
height = 720 height = 720
@@ -310,22 +443,78 @@ img = Image.new("RGB", (width, height))
pixels = img.load() pixels = img.load()
menu = 1
for y in range(height): for y in range(height):
for x in range(width): for x in range(width):
####################### player 1 ### BG
if (x+y)&1:
pixels[x, y] = (0, 0, 255)
else:
pixels[x, y] = ((x+y)>>3, (((1280+720)>>3)-((x+y)>>3)), 0)
####################### MENU
if menu and x >= mm0.x and x < (mm0.x + mm0.width) and y >= mm0.y and y < (mm0.y + mm0.height):
xd = x-mm0.x
yd = y-mm0.y
xs = xd >> 3
ys = yd >> 3
if x > mm0.x+3 and y>mm0.y+3 and xd<mm0.width-4 and yd<mm0.height-4:
if xs <ys*2 and xs<((mm0.width-8 >> 3)-ys)<<1 and xs >2:
pixels[x, y] = (255,255,255)
elif (xs == ys*2 or xs==((mm0.width-8 >> 3)-ys)<<1) and xs >2 and xs <14:
pixels[x, y] = (32,32,32)
else:
pixels[x, y] = black.get()
else:
pixels[x, y] = (128,128,128)
elif menu and x >= mm1.x and x < (mm1.x + mm1.width) and y >= mm1.y and y < (mm1.y + mm1.height):
xd = x-mm1.x-4
yd = y-mm1.y-4
xs = xd >> 3
ys = yd >> 3
if x > mm1.x+3 and y>mm1.y+3 and xd<mm1.width-8 and yd<mm1.height-8:
# vert/horizontal
if xs == 2 and ys < 10 and ys > 4: # left
pixels[x, y] = white.get()
elif xs == 11 and ys < 8 and ys > 4: # right
pixels[x, y] = white.get()
elif ys == 2 and xs < 10 and xs > 4: # top
pixels[x, y] = white.get()
elif ys == 12 and xs < 10 and xs > 4: # bot
pixels[x, y] = white.get()
# Orthogonal
elif xs+ys == 7 and xs >1 and ys >1: # top left
pixels[x, y] = white.get()
elif xs+ys == 21 and xs >8 and ys >9: # bot right
pixels[x, y] = white.get()
elif ys-xs == 7 and xs < 6 and ys > 8: # bot left
pixels[x, y] = white.get()
elif xs-ys == 7 and xs > 8 and ys < 5: # top right
pixels[x, y] = white.get()
# Arrow Head
elif xs-ys == 4 and xs > 8 and xs < 12: # left
pixels[x, y] = white.get()
elif xs+ys == 18 and xs > 10 and xs <14: # right
pixels[x, y] = white.get()
# Aliasing
elif (xs==ys==11) or (xs==ys==3) or (xs==11 and ys==3) or (xs==3 and ys==11):
pixels[x, y] = (32,32,32)
else:
pixels[x, y] = black.get()
else:
pixels[x, y] = (128,128,128)
####################### Left Side
### Board ### Board
if x>=b1.x and x<b1.x+b1.width and y>=b1.y and y<b1.y+b1.height: elif x>=b1.x and x<b1.x+b1.width and y>=b1.y and y<b1.y+b1.height:
xd = x-b1.x xd = x-b1.x
yd = y-b1.y yd = y-b1.y
# pixels[x, y] = colors[board[yd>>5][xd>>5]].multiply(sprite_pixels[yd&0b0000000000011111, xd&0b0000000000011111])
xs = xd&0x1F xs = xd&0x1F
ys = yd&0x1F ys = yd&0x1F
if (xs > 7 and xs < 24) and (ys > 7 and ys < 24): # middle if (xs > 7 and xs < 24) and (ys > 7 and ys < 24): # middle
pixels[x, y] = colors[board[yd>>5][xd>>5]].get() pixels[x, y] = colors[board[yd>>5][xd>>5]].get()
elif (xs > 5 and xs < 26) and (ys > 5 and ys < 26): # mid boarder elif (xs > 5 and xs < 26) and (ys > 5 and ys < 26): # mid boarder
pixels[x, y] = colors[board[yd>>5][xd>>5]].mask(0xFFFFFFB0) pixels[x, y] = colors[board[yd>>5][xd>>5]].mask(0xFFFFFFB0)
# elif xs == ys or xs+ys==31:
# pixels[x, y] = colors[board[yd>>5][xd>>5]].shiftr(2)
elif xs+ys<31: # top left edge elif xs+ys<31: # top left edge
if xs>ys: if xs>ys:
pixels[x, y] = colors[board[yd>>5][xd>>5]].get() pixels[x, y] = colors[board[yd>>5][xd>>5]].get()
@@ -342,16 +531,21 @@ for y in range(height):
yd = y-nb1.y yd = y-nb1.y
xs = xd&0x1F xs = xd&0x1F
ys = yd&0x1F ys = yd&0x1F
if (xs == 31) or (ys==31): if (xs > 7 and xs < 24) and (ys > 7 and ys < 24): # middle
if (xs == 0) or (ys == 0): pixels[x, y] = colors[next_board[yd>>5][xd>>5]].get()
pixels[x, y] = colors[next_board[yd>>5][xd>>5]].shiftr(1) elif (xs > 5 and xs < 26) and (ys > 5 and ys < 26): # mid next_boarder
else: pixels[x, y] = colors[next_board[yd>>5][xd>>5]].mask(0xFFFFFFB0)
pixels[x, y] = colors[next_board[yd>>5][xd>>5]].shiftr(2) elif xs+ys<31: # top left edge
elif (not xs) or (not ys): if xs>ys:
pixels[x, y] = colors[next_board[yd>>5][xd>>5]].get() pixels[x, y] = colors[next_board[yd>>5][xd>>5]].get()
else:
pixels[x, y] = colors[next_board[yd>>5][xd>>5]].mask(0xFFFFFFEF)
else:
if xs>ys:
pixels[x, y] = colors[next_board[yd>>5][xd>>5]].mask(0xFFFFFFD7)
else: else:
pixels[x, y] = colors[next_board[yd>>5][xd>>5]].mask(0xFFFFFFC0) pixels[x, y] = colors[next_board[yd>>5][xd>>5]].mask(0xFFFFFFC0)
### Score ### Score text
elif x>=s1.x and x<s1.x+s1.width and y>=s1.y and y<s1.y+s1.height: elif x>=s1.x and x<s1.x+s1.width and y>=s1.y and y<s1.y+s1.height:
yd = y-s1.y yd = y-s1.y
if x < (24+s1.x) and a_s[yd>>2][(x-s1.x)>>2]: if x < (24+s1.x) and a_s[yd>>2][(x-s1.x)>>2]:
@@ -364,45 +558,107 @@ for y in range(height):
pixels[x, y] = white.get() pixels[x, y] = white.get()
elif x > (112+s1.x) and a_e[yd>>2][(x-(112+s1.x))>>2]: elif x > (112+s1.x) and a_e[yd>>2][(x-(112+s1.x))>>2]:
pixels[x, y] = white.get() pixels[x, y] = white.get()
else: ### Score num
pixels[x, y] = text_bg.get()
elif x>=sn1.x and x<sn1.x+sn1.width and y>=sn1.y and y<sn1.y+sn1.height: elif x>=sn1.x and x<sn1.x+sn1.width and y>=sn1.y and y<sn1.y+sn1.height:
pixels[x, y] = text_bg.get() yd = y-sn1.y
####################### player 2 if ((x >= 74 and x < 86) and n0[yd>>2][(x -74)>>2]):
pixels[x, y] = white.get()
elif ((x >= 90 and x < 102) and n_x[yd>>2][(x -90)>>2]):
pixels[x, y] = white.get()
elif ((x >= 106 and x < 118) and hexnumbers[score0>>28&0b1111][yd>>2][(x -106)>>2]):
pixels[x, y] = white.get()
elif ((x >= 122 and x < 134) and hexnumbers[score0>>24&0b1111][yd>>2][(x -122)>>2]):
pixels[x, y] = white.get()
elif ((x >= 138 and x < 150) and hexnumbers[score0>>20&0b1111][yd>>2][(x -138)>>2]):
pixels[x, y] = white.get()
elif ((x >= 154 and x < 166) and hexnumbers[score0>>16&0b1111][yd>>2][(x -154)>>2]):
pixels[x, y] = white.get()
elif ((x >= 170 and x < 182) and hexnumbers[score0>>12&0b1111][yd>>2][(x -170)>>2]):
pixels[x, y] = white.get()
elif ((x >= 186 and x < 198) and hexnumbers[score0>>8&0b1111][yd>>2][(x -186)>>2]):
pixels[x, y] = white.get()
elif ((x >= 202 and x < 214) and hexnumbers[score0>>4&0b1111][yd>>2][(x -202)>>2]):
pixels[x, y] = white.get()
elif ((x >= 218 and x < 230) and hexnumbers[score0&0b1111][yd>>2][(x -218)>>2]):
pixels[x, y] = white.get()
else:
pixels[x, y] = black.get()
# pixels[x, y] = text_bg.get()
### Menu
elif x >= lm0.x and x < (lm0.x + lm0.width) and y >= lm0.y and y < (lm0.y + lm0.height):
xd = x-lm0.x
yd = y-lm0.y
xs = xd-34
if xd < (24) and a_p[yd>>2][xd>>2]:
pixels[x, y] = white.get()
elif xd > (33) and a_1[yd>>2][xs>>2]:
pixels[x, y] = white.get()
elif x >= lm1.x and x < (lm1.x + lm1.width) and y >= lm1.y and y < (lm1.y + lm1.height):
xd = x-lm1.x
yd = y-lm1.y
xs = xd-34
if xd < (24) and a_p[yd>>2][xd>>2]:
pixels[x, y] = white.get()
elif xd > (33) and a_2[yd>>2][xs>>2]:
pixels[x, y] = white.get()
elif x >= lm2.x and x < (lm2.x + lm2.width) and y >= lm2.y and y < (lm2.y + lm2.height):
xd = x-lm2.x
yd = y-lm2.y
xs = xd-28
if xd < (24) and a_s[yd>>2][xd>>2]:
pixels[x, y] = white.get()
elif xd > (27) and a_w[yd>>2][xs>>2]:
pixels[x, y] = white.get()
elif x >= lm3.x and x < (lm3.x + lm3.width) and y >= lm3.y and y < (lm3.y + lm3.height):
xd = x-lm3.x
yd = y-lm3.y
xs = xd-28
if xd < (24) and a_h[yd>>2][xd>>2]:
pixels[x, y] = white.get()
elif xd > (27) and a_w[yd>>2][xs>>2]:
pixels[x, y] = white.get()
####################### Right Board
### Board ### Board
elif x>=b2.x and x<b2.x+b2.width and y>=b2.y and y<b2.y+b2.height: elif x>=b2.x and x<b2.x+b2.width and y>=b2.y and y<b2.y+b2.height:
# xd = x-b2.x
# yd = y-b2.y
# pixels[x, y] = colors2[board2[yd>>5][xd>>5]].multiply(sprite_pixels[yd&0b0000000000011111, xd&0b0000000000011111])
xd = x-b2.x xd = x-b2.x
yd = y-b2.y yd = y-b2.y
xs = xd&0x1F xs = xd&0x1F
ys = yd&0x1F ys = yd&0x1F
if (xs == 31) or (ys == 31): if (xs > 7 and xs < 24) and (ys > 7 and ys < 24): # middle
if (xs == 0) or (ys == 0): pixels[x, y] = colors[board2[yd>>5][xd>>5]].get()
pixels[x, y] = colors2[board2[yd>>5][xd>>5]].shiftr(1) elif (xs > 5 and xs < 26) and (ys > 5 and ys < 26): # mid boarder
pixels[x, y] = colors[board2[yd>>5][xd>>5]].mask(0xFFFFFFB0)
elif xs+ys<31: # top left edge
if xs>ys:
pixels[x, y] = colors[board2[yd>>5][xd>>5]].get()
else: else:
pixels[x, y] = colors2[board2[yd>>5][xd>>5]].shiftr(2) pixels[x, y] = colors[board2[yd>>5][xd>>5]].mask(0xFFFFFFEF)
elif (not xs) or (not ys):
pixels[x, y] = colors2[board2[yd>>5][xd>>5]].get()
else: else:
pixels[x, y] = colors2[board2[yd>>5][xd>>5]].mask(0xFFFFFFC0) if xs>ys:
pixels[x, y] = colors[board2[yd>>5][xd>>5]].mask(0xFFFFFFD7)
else:
pixels[x, y] = colors[board2[yd>>5][xd>>5]].mask(0xFFFFFFC0)
### Next Piece ### Next Piece
elif x>=nb2.x and x<nb2.x+nb2.width and y>=nb2.y and y<nb2.y+nb2.height: elif x>=nb2.x and x<nb2.x+nb2.width and y>=nb2.y and y<nb2.y+nb2.height:
xd = x-nb2.x xd = x-nb2.x
yd = y-nb2.y yd = y-nb2.y
xs = xd&0x1F xs = xd&0x1F
ys = yd&0x1F ys = yd&0x1F
if (xs == 31) or (ys==31): if (xs > 7 and xs < 24) and (ys > 7 and ys < 24): # middle
if (xs == 0) or (ys == 0): pixels[x, y] = colors[next_board1[yd>>5][xd>>5]].get()
pixels[x, y] = colors[next_board[yd>>5][xd>>5]].shiftr(1) elif (xs > 5 and xs < 26) and (ys > 5 and ys < 26): # mid next_boarder
pixels[x, y] = colors[next_board1[yd>>5][xd>>5]].mask(0xFFFFFFB0)
elif xs+ys<31: # top left edge
if xs>ys:
pixels[x, y] = colors[next_board1[yd>>5][xd>>5]].get()
else: else:
pixels[x, y] = colors[next_board[yd>>5][xd>>5]].shiftr(2) pixels[x, y] = colors[next_board1[yd>>5][xd>>5]].mask(0xFFFFFFEF)
elif (not xs) or (not ys):
pixels[x, y] = colors[next_board[yd>>5][xd>>5]].get()
else: else:
pixels[x, y] = colors[next_board[yd>>5][xd>>5]].mask(0xFFFFFFC0) if xs>ys:
### Score pixels[x, y] = colors[next_board1[yd>>5][xd>>5]].mask(0xFFFFFFD7)
else:
pixels[x, y] = colors[next_board1[yd>>5][xd>>5]].mask(0xFFFFFFC0)
### Score Text
elif x>=s2.x and x<s2.x+s2.width and y>=s2.y and y<s2.y+s2.height: elif x>=s2.x and x<s2.x+s2.width and y>=s2.y and y<s2.y+s2.height:
yd = y-s2.y yd = y-s2.y
if x < (24+s2.x) and a_s[yd>>2][(x-s2.x)>>2]: if x < (24+s2.x) and a_s[yd>>2][(x-s2.x)>>2]:
@@ -415,15 +671,64 @@ for y in range(height):
pixels[x, y] = white.get() pixels[x, y] = white.get()
elif x > (112+s2.x) and a_e[yd>>2][(x-(112+s2.x))>>2]: elif x > (112+s2.x) and a_e[yd>>2][(x-(112+s2.x))>>2]:
pixels[x, y] = white.get() pixels[x, y] = white.get()
else: ### Score Num
pixels[x, y] = text_bg.get()
elif x>=sn2.x and x<sn2.x+sn2.width and y>=sn2.y and y<sn2.y+sn2.height: elif x>=sn2.x and x<sn2.x+sn2.width and y>=sn2.y and y<sn2.y+sn2.height:
pixels[x, y] = text_bg.get() yd = y-sn2.y
if ((x >= 1050 and x < 1062) and n0[yd>>2][(x -1050)>>2]):
pixels[x, y] = white.get()
elif ((x >= 1066 and x < 1078) and n_x[yd>>2][(x -1066)>>2]):
pixels[x, y] = white.get()
elif ((x >= 1082 and x < 1094) and hexnumbers[score1>>28&0b1111][yd>>2][(x -1082)>>2]):
pixels[x, y] = white.get()
elif ((x >= 1098 and x < 1110) and hexnumbers[score1>>24&0b1111][yd>>2][(x -1098)>>2]):
pixels[x, y] = white.get()
elif ((x >= 1114 and x < 1126) and hexnumbers[score1>>20&0b1111][yd>>2][(x -1114)>>2]):
pixels[x, y] = white.get()
elif ((x >= 1130 and x < 1142) and hexnumbers[score1>>16&0b1111][yd>>2][(x -1130)>>2]):
pixels[x, y] = white.get()
elif ((x >= 1146 and x < 1158) and hexnumbers[score1>>12&0b1111][yd>>2][(x -1146)>>2]):
pixels[x, y] = white.get()
elif ((x >= 1162 and x < 1174) and hexnumbers[score1>>8&0b1111][yd>>2][(x -1162)>>2]):
pixels[x, y] = white.get()
elif ((x >= 1178 and x < 1190) and hexnumbers[score1>>4&0b1111][yd>>2][(x -1178)>>2]):
pixels[x, y] = white.get()
elif ((x >= 1194 and x < 1206) and hexnumbers[score1&0b1111][yd>>2][(x -1194)>>2]):
pixels[x, y] = white.get()
else: else:
if (x+y)&1: pixels[x, y] = black.get()
pixels[x, y] = (0, 0, 255) ### Menu
else: elif x >= rm0.x and x < (rm0.x + rm0.width) and y >= rm0.y and y < (rm0.y + rm0.height):
pixels[x, y] = ((x+y)>>3, (((1280+720)>>3)-((x+y)>>3)), 0) xd = x-rm0.x
yd = y-rm0.y
xs = xd-34
if xd < (24) and a_p[yd>>2][xd>>2]:
pixels[x, y] = white.get()
elif xd > (33) and a_1[yd>>2][xs>>2]:
pixels[x, y] = white.get()
elif x >= rm1.x and x < (rm1.x + rm1.width) and y >= rm1.y and y < (rm1.y + rm1.height):
xd = x-rm1.x
yd = y-rm1.y
xs = xd-34
if xd < (24) and a_p[yd>>2][xd>>2]:
pixels[x, y] = white.get()
elif xd > (33) and a_2[yd>>2][xs>>2]:
pixels[x, y] = white.get()
elif x >= rm2.x and x < (rm2.x + rm2.width) and y >= rm2.y and y < (rm2.y + rm2.height):
xd = x-rm2.x
yd = y-rm2.y
xs = xd-28
if xd < (24) and a_s[yd>>2][xd>>2]:
pixels[x, y] = white.get()
elif xd > (27) and a_w[yd>>2][xs>>2]:
pixels[x, y] = white.get()
elif x >= rm3.x and x < (rm3.x + rm3.width) and y >= rm3.y and y < (rm3.y + rm3.height):
xd = x-rm3.x
yd = y-rm3.y
xs = xd-28
if xd < (24) and a_h[yd>>2][xd>>2]:
pixels[x, y] = white.get()
elif xd > (27) and a_w[yd>>2][xs>>2]:
pixels[x, y] = white.get()
img.save("output/alpha.png") img.save("output/alpha.png")
img.show() img.show()
+91 -5
View File
@@ -25,10 +25,10 @@
inkscape:deskcolor="#d1d1d1" inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm" inkscape:document-units="mm"
inkscape:zoom="1.6528621" inkscape:zoom="1.6528621"
inkscape:cx="653.41204" inkscape:cx="653.10954"
inkscape:cy="251.68464" inkscape:cy="396.88731"
inkscape:window-width="3824" inkscape:window-width="3433"
inkscape:window-height="2104" inkscape:window-height="2076"
inkscape:window-x="0" inkscape:window-x="0"
inkscape:window-y="0" inkscape:window-y="0"
inkscape:window-maximized="1" inkscape:window-maximized="1"
@@ -97,4 +97,90 @@
height="5.2916665" height="5.2916665"
x="-319.08749" x="-319.08749"
y="129.64583" y="129.64583"
transform="scale(-1,1)" /></g></svg> transform="scale(-1,1)" /><text
xml:space="preserve"
style="font-size:3.175px;writing-mode:lr-tb;direction:ltr;fill:#808080;stroke-width:0.264583"
x="31.855097"
y="83.879761"
id="text1"><tspan
sodipodi:role="line"
id="tspan1"
style="stroke-width:0.264583"
x="31.855097"
y="83.879761">sw - Player</tspan></text><text
xml:space="preserve"
style="font-size:3.175px;writing-mode:lr-tb;direction:ltr;fill:#808080;stroke-width:0.264583"
x="7.0433388"
y="57.787392"
id="text2"><tspan
sodipodi:role="line"
id="tspan2"
style="stroke-width:0.264583"
x="7.0433388"
y="57.787392">hw - player</tspan></text><text
xml:space="preserve"
style="font-size:3.175px;writing-mode:lr-tb;direction:ltr;fill:#808080;stroke-width:0.264583"
x="33.936081"
y="91.883545"
id="text3"><tspan
sodipodi:role="line"
id="tspan3"
style="stroke-width:0.264583"
x="33.936081"
y="91.883545">human</tspan></text><text
xml:space="preserve"
style="font-size:3.175px;writing-mode:lr-tb;direction:ltr;fill:#808080;stroke-width:0.264583"
x="289.6492"
y="86.61039"
id="text1-3"><tspan
sodipodi:role="line"
id="tspan1-5"
style="stroke-width:0.264583"
x="289.6492"
y="86.61039">sw - Player</tspan></text><text
xml:space="preserve"
style="font-size:3.175px;writing-mode:lr-tb;direction:ltr;fill:#808080;stroke-width:0.264583"
x="269.15948"
y="66.280746"
id="text2-6"><tspan
sodipodi:role="line"
id="tspan2-2"
style="stroke-width:0.264583"
x="269.15948"
y="66.280746">hw - player</tspan></text><text
xml:space="preserve"
style="font-size:3.175px;writing-mode:lr-tb;direction:ltr;fill:#808080;stroke-width:0.264583"
x="292.37048"
y="94.454094"
id="text3-9"><tspan
sodipodi:role="line"
id="tspan3-1"
style="stroke-width:0.264583"
x="292.37048"
y="94.454094">human</tspan></text><rect
style="fill:#808080;stroke-width:0.264583"
id="rect3"
width="39.378666"
height="36.817448"
x="149.83101"
y="47.542519" /><image
width="43.583111"
height="43.583111"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AABG2UlEQVR4nO3dCXxdZZ3/8V/uvUna&#10;JulCW+iGpG2QtWmTm5BWSom2LAUpiEZQYP4VBR1HEEbBbdTqjIz77qjgUhVRDAoUsK2ClrbQpMlN&#10;2lRgwK5AF2ihTbqR5N6b//epgQFsaZv1Pud83q/XeZ2TFGeSm3Oe5/v8nnOeEzEAABA6EQMAAKFD&#10;AAAAIIQIAAAAhBABAACAECIAAAAQQgQAAABCiAAAAEAIEQAAAAghAgAAACFEAAAAIIQIAAAAhBAB&#10;AACAECIAAAAQQgQAAABCiAAAAEAIEQAAAAghAgAAACFEAAAAIIQIAAAAhBABAACAECIAAAAQQgQA&#10;AABCiAAAAEAIEQAAAAghAgAAACFEAAAAIIQIAAAAhBABAACAECIAAAAQQgQAAABCiAAAAEAIEQAA&#10;AAghAgAAACFEAAAAIIQIAAAAhBABAACAECIAAAAQQgQAAABCiAAAAEAIEQAAAAghAgAAACEUMwCB&#10;EY/Hs9va2vKzsrKyBw8enO++t3///ryOjo4cd6z90FgslqV9trYD/67/do+29mQy2aH9rs7vtQ0c&#10;OHCvO25padmj/7Y9JydnTyKRaDcAgZBlADJWUVFR7jHHHHNCKpUaqy9HuC2dTg+PRCIj1CkP19fD&#10;3d597f5Nx4OtFykYtGi3Qz/DDh2/4I71//sF/XwvuL372m36+tkTTzxxU3V1dZsByEgEAKAfuRG7&#10;OtOR6kxHa5ug4wlur396eX+COvWo+WuntvX6XdYrIKxXMFgfjUbX5+bmrp81a9bT8+bNSxqAfkEA&#10;APqAOrrYokWLTlR5fpI6wsnq6N3+dHXux2sL5VScQoHr/J/W7/837ddoa9L3miZMmPB3VQ5SBqBX&#10;EQCAHjZp0qRhmi8/TR18XCPeU9XBueMS7QcZDsvdj6DP6u86TGj/WCwWe1yBqT6RSGw1AD2GAAB0&#10;Q1VVVfSpp546WWXtM/XldG1xbacaepyCgQsAyxWmHlEgSOi4lpsSga4jAABHobi4OC87O7tEHdCZ&#10;6oima4TqOv5hhv7gnk5YrQrBch0/kpeXt2zJkiW7DMARIQAAb0Aj/IHr1q2boc7+fHU2Z+tbxZ7f&#10;lBdY7p4CFwh0uFTHizQVs3T+/PkvGYCDIgAArzN9+vQJ+/btm6VOZJa+dB1/gcE7+vvt19/uEW0P&#10;5uTk3FdbW/u4AXgFAQCh50b5GzdudKX8WalU6iJjDj+Q3KOILgxo/+DYsWMXLViwYLcBIUYAQChV&#10;VlYObWlpuUQdQpXK+2/TfoAhNFx1QLu/aKvWdk8ikWg2IGQIAAiNeDw+SJ39zHQ6fZU6/Dn6Vq4B&#10;Zq0KBH/WVj1y5Mh7Fi5c2GJACBAAEGid5X1X2q/Sl5dqyzPgEBQC3E2DbpqgesyYMXczTYAgIwAg&#10;cNzyuhrhv12j/fdqf6G2gQYcJYWAfdrdr/B4xyWXXPIAyxYjaAgACIxp06YVtbe3X6kO/2q3xK4B&#10;PURhYJsC5S80fXRbIpFYZ0AAEADgNfe2vCFDhsxRh3+tvpxpnNPofW4VwlsnTpz4q+rq6v0GeIrG&#10;El4qKys7SaOy96k8e7W+HGlA33OrDv4uOzv7B7W1tU0GeIYAAG+4N+rde++979LhR9T5n2lAhtD5&#10;uFxVqO/NmTPnD9wrAF8QAJDxKisr8/fu3ft+jfZv1JcnGJC5NioI/EjTUj/mvQTIdAQAZKzy8vJR&#10;akw/pI7/Oo2wjjHAEzpfW9Lp9PyCgoKvL1269BkDMhABABmnoqKiuL29/d/UiP4LK/TBc206j+9V&#10;iP3aqlWr6gzIIAQAZAx1/Oeo479Zh7MMCJYOBYE/KdB+taGh4S8GZAACAPpdPB6frt0X1Ti+1YDg&#10;e1TbZwkC6G8EAPSbkpKSaZFI5NNu1T4DQsa9qjgWi32mrq7uYQP6AQEAfc7N8SeTyf9wb+IzAA/q&#10;WvhUY2NjvQF9iACAPlNWVna6GrrPaXPP8nPuAa/lXkL0iUQi0WBAH6ARRq+bPn36hP3793+Zjh84&#10;rLS23+Xk5HyqpqZmowG9iMYYvaa4uDhPDdlN6vg/weN8wFFpcwsKjRo16rMLFy5sMaAXEADQG7JU&#10;7r9KDdhXtI0yAF21RdsXGhoafmL/qA4APYYAgB41bdq0M1pbW7/tDg1AT0lkZWXdkEgklhvQQwgA&#10;6BGTJ08eG41G/1uHVxrnFdAb3GJCd6XT6ZsaGxs3GdBNNNTolqKiotyhQ4d+SqX+m7UNNAC9ba+u&#10;tS/r2vtqdXV1mwFdRABAl02ZMuUtkUjkNh2eagD62t9zcnKurampWWJAFxAAcNTc3f25ubmfTaVS&#10;N+nLiAHoLx3abhs3btzHFyxYsNuAo0AAwFGpqKi4IJlM/lAlyDcZgEzhnhb4SENDw90GHCECAI6I&#10;Ov7j2tvbv6bDqwxARsrKyqrWdfqRpqam5w04jKgBhxGPx6vS6fQDxqN9QKY7LRKJfGD06NE7t27d&#10;ypLCeENUAHBI5eXlozTP/zMdzjYAXlE14AFVA66mGoBDIQDgoDTqP1e7+ZrrH20AfLVd29UNDQ33&#10;G/A6TAHgNebOnTtAI4dv6PB72goMgM/ytL1HUwJj5C+aFmg3oBMVALxi8uTJp0Wj0Tt0WGwAguYJ&#10;Xd/vraurW2WAUQHAP2Rpvv+j2ldrG2sAgmikpvTeN2rUqPZt27atsH+sIYAQowIQcp2P9/3cuNEP&#10;CJMHU6nU3NWrV282hBYBIMQ06p+VTqd/o1HBCIO3srKykvo7vqD9gU3fekFf74jFYu7Y9PfdrcY+&#10;qfJvh76/q/N/06rdvs7/E4P03+S6g0gkMlT/rWsXsvW/z3fH+t5w/ftwfe/A3m2d34sZfPa8zoPL&#10;E4nEXw2hRAAIp6ySkpKb1Yh/SY0400CZzb3sZZP+Thv193LbBnecTCbd2+C2Dx06dPuSJUt2WT+o&#10;rKwcumvXrpE6HKmwcILCxXh1KIXaF2o/Xt93q0XmGDKWC4/afVIh4JvGlEDoEABCZs6cOQXPPvvs&#10;fB1easgkO7U1aVvTuf/f7OzsDbW1tW6J17T5KTJjxoyxe/bsKdTxyfaPm0vdNknbMEPGUBD4XUFB&#10;wfsVJvcYQoMAECJTp049RfP9f9AI8mRDf3HvdH9Sf4NV2q/W12vy8vKali5d+oyFSDwed9UBFwQm&#10;6bOYrM9iivYnGW1Sf3pcFaZL6+vrnzSEAhdbSKjkP0cX9y/VyA4x9BlXYtVnvlrbI/r8lw8aNGjJ&#10;smXLthv+yezZswfv2LHjDH1W0zWNcKY+uzN1PNDQZ/SZ79Z2tULAXYbAIwAEXFVVVXTdunW36NC9&#10;upe/dy9T49miTmtJNBpdpmrLoyeeeGJ9dXV1m+GoFRUV5Y4YMaKsra3tLfpyuj7bt+qzZXGq3teh&#10;sPrf48eP/5zO3ZQhsOgQAszdpNXS0uKe7Z9l6E1uzn5RTk7OQnX6jyQSCVZb6wUKsznr1693lYHZ&#10;CgLna5tk6DX6nBdrd5nO52ZDIBEAAkrz/YUaObk3+J1q6Gl71Tj+VR3QfdovUgP5tKHPuTUsUqnU&#10;efo7vF3bOfrWUEOPUiXgMX3GFzY2Nm4yBA4BIICmTJlSrhL0AjWKoww9Qh19sz7PBfpcqwsLCxdT&#10;1s8sbqpL1YFp+htdpb/VZdzr0nP0eW5Np9NzFALqDYFCAAgYdf4Xu/X81QAOMnSLGr792j2kfbU+&#10;z7s00t9nyHju3oFhw4adq5Frlf52F+tvN9jQXXvVrrynrq7uPkNgEAACJB6PX6/dN1ncp1ta1Wnc&#10;q9LnnRrpL9RIf7/BW6oMDFy7du0F6rwu1yj2In0r19Alui5Sals+2tDQ8ANDIBAAAsCVP9XIfVMX&#10;6PWGLnHP5quD+Hl+fv7PeEwvmDpvin23/tYf4QbCrtNn911NB9xo/i5QhU4EAM8VFxfn5eTk/Fqd&#10;18WGo+VG+ws02r9Vpc2HjKVQQ6O0tDSu3bXartCWZzgqum7u1u5KpsX8RgDwmBvR7N69e6ES+VTD&#10;Eeu8s/nHQ4YM+VV/raOPzDBp0qRhsVjsSk0RfFAh+jTDEetc3OpCHhP0FwHAU+edd94x27dvX6TD&#10;csMRcQ2WGvuvaLR/vzHax+vE4/Hp2n1C58mFRtt4RFQJaBg0aND5TJv5iZPcQ+Xl5aM0WvkT85iH&#10;pwbKLcpzj6ZJvr5ixYqVBhzGGWecMTmZTH7MvSpX11i24XCeUEXtnNWrV282eIUA4Bn3EhU1Sm6+&#10;ushwSG5Nc3dTX0FBwdfD9qId9AwXtHWtfUjnkbu5lrcXvgH3muoBAwbMWr58+XqDNwgAHpkyZcqJ&#10;mqt8UI3SmwyHslON0TfGjBnz3QULFuw2oJvcS4qef/75j+q6+3djtcE3sik3N3eWKm1rDV4gAHjC&#10;vcq3ra3tQR2OMRzMHoWjH+Tl5X2ZG/vQG+bMmVPwzDPPfFgB81OsNHhw+lye0+dzTiKRWGPIeAQA&#10;D6jsX6rdYl1cIwyvt1efy081x39LbW3tcwb0spkzZw5vbm6+zlUEeDvhQe10L2xSCKg1ZDQCQIZz&#10;zyvrYnqIEcdruWV69Zn8KJlMfrmpqel5A/pY5824n9ThB3UuDjC82i5dozMVAhoMGYsAkMHKyspO&#10;d++W1zbc8Ao1LPe3tLine truncated
id="image1"
x="146.81685"
y="44.554131" /><rect
style="fill:#808080;stroke-width:0.264583"
id="rect3-6"
width="39.378666"
height="36.817448"
x="149.88287"
y="84.480057" /><image
width="43.583111"
height="43.583111"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,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&#10;d++W1zbc8Ao1LPe3tLine truncated
id="image1-2"
x="148.14932"
y="81.651741" /></g></svg>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 67 KiB

+247
View File
@@ -0,0 +1,247 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="338.66666mm"
height="190.50002mm"
viewBox="0 0 338.66666 190.50002"
version="1.1"
id="svg1"
sodipodi:docname="layout_menu.svg"
xml:space="preserve"
inkscape:version="1.4.4 (dcaf3e7d9e, 2026-05-05)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="2"
inkscape:cx="235.5"
inkscape:cy="459.5"
inkscape:window-width="3820"
inkscape:window-height="2076"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer4"><inkscape:page
x="0"
y="0"
width="338.66666"
height="190.50002"
id="page2"
margin="0"
bleed="0" /></sodipodi:namedview><defs
id="defs1" /><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"><image
width="338.66666"
height="190.5"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAIAAABAH0oBAAD0uklEQVR4nOz9Z5gb15Xui6/NS997&#10;zpnxDEe2TNlWpAJFMeecc86ZyjlH59TOsiVKVKAyFZgz0cyxmXNsKhSVKIlyatNDcMQTfO//Q/0/&#10;AGyk1QCa2C+qduN9HzzveMTuVYWFtXetH1eBJfL/iYif6eb/1b3eP3X/v/6P7vX/t+5f+1+6/9//&#10;U/f/55zu/+0r3f/7f+n+P87q/i9R3f/1jO5f/0/d/+0fuv/7ad0b/F33/6jS/aK/6f6Nv+r+zb/o&#10;fvGfdf/Wn3Rv+KXul5zS/dtf6P6dz3X/7me6X3pS98s+1f3yT3S/4mPdr/xI96s+1L3RCd2v9nS/&#10;5gPdr31f9+ve073xu7pff1z3JpW633BM96ZHdW92RPfmh3VvcUj3lgd1b3VA99b7dW+zT/e2e3Vv&#10;t0f39rt177BL9447de+0Q/fO23Xvsk33rlt171ahe/ctuvfYrHvPTbr32qh77w2691mve991uvdb&#10;q3v/NboPWK37wFW6D1qp++By3YdEdB+6Qvdhy3Ufvkz3EUt1H7lE91GLdR+9SPcxC3Ufu0D3cfN1&#10;Hz9P9wlzdZ84R/dJs3Wf/I7uU97Wfepbuk97U/cbZ+l+0xu63/y67re8pvutr+p+2yu63/6y7ne8&#10;pPudM3W/60Xd735B93ue1/3e53S/b4bu9z+r+wPP6P7gdN0felr3h5/S/ZE/6v7oH3R/7EndH/+9&#10;7k/8Tvfv/Vb37/9G9x/8Wvcf/kr3H/1S9x+X6f6TX+j+05/r/rOf6f7zn+r+i5/oXvZj3X/5I91/&#10;9UPdf/0D3X/zfd1/+z3df/eE7r9/XPcnH9P9D4/q/sdHdH/qYd2ffkj36Q/q/swDuj97v+4z7tP9&#10;uXt1f/4e3V+4W/cX79J95p26v3SH7i/frvsrt+n+6q26v3aL7q/frPsbN+k+60bd35ym+1tTdRch&#10;/ZJ+Sb+kX9Iv6Zf0S/ol/ZJ+Sb+kX9Iv6beu0+/bU0RIv6Rf0i/pl/RL+iX9kn5Jv6Rf0i/pl/RL&#10;+i0B+s2YAJN+Sb+kX9Iv6Zf0S/ol/ZJ+Sb+kX9Iv6Zf0W/foN30CTPol/ZJ+Sb+kX9Iv6Zf0S/ol&#10;/ZJ+Sb+kX9JvHaXfpAkw6Zf0S/ol/ZJ+Sb+kX9Iv6Zf0S/ol/ZJ+Sb91lX4TE2DSL+mX9Ev6Jf2S&#10;fkm/pF/SL+mX9Ev6Jf2Sfus0/foipF/SL+mX9Ev6Jf2Sfkm/pF/SL+mX9Ev6Jf3Wdfp9e4oI6Zf0&#10;S/ol/ZJ+Sb+kX9Iv6Zf0S/ol/ZJ+Sb91n35rmgCTfkm/pF/SL+mX9Ev6Jf2Sfkm/pF/SL+mX9FuX&#10;6PedydoEmPRL+iX9kn5Jv6Rf0i/pl/RL+iX9kn5Jv6Tfuka/mRNg0i/pl/RL+iX9kn5Jv6Rf0i/p&#10;l/RL+iX9kn7rHv2mT4BJv6Rf0i/pl/RL+iX9kn5Jv6Rf0i/pl/RL+q2b9Js8ASb9kn5Jv6Rf0i/p&#10;l/RL+iX9kn5Jv6Rf0i/pt67Sb2ICTPol/ZJ+Sb+kX9Iv6Zf0S/ol/ZJ+Sb+kX9JvXabf2ASY9Ev6&#10;Jf2Sfkm/pF/SL+mX9Ev6Jf2Sfkm/pN+6Tb/vTBYh/ZJ+Sb+kX9Iv6Zf0S/ol/ZJ+Sb+kX9Iv6bfu&#10;029NE2DSL+mX9Ev6Jf2Sfkm/pF/SL+mX9Ev6Jf2SfusS/c6epE2ASb+kX9Iv6Zf0S/ol/ZJ+Sb+k&#10;X9Iv6Zf0S/qta/SbOQEm/ZJ+Sb+kX9Iv6Zf0S/ol/ZJ+Sb+kX9Iv6bfu0W/6BJj0S/ol/ZJ+Sb+k&#10;X9Iv6Zf0S/ol/ZJ+Sb+k37pJv8kTYNIv6Zf0S/ol/ZJ+Sb+kX9Iv6Zf0S/ol/ZJ+6yr9JibApF/S&#10;L+mX9Ev6Jf2Sfkm/pF/SL+mX9Ev6Jf3WZfqNTYBJv6Rf0i/pl/RL+iX9kn5Jv6Rf0i/pl/RL+q3b&#10;9Dt7kgjpl/RL+iX9kn5Jv6Rf0i/pl/RL+iX9kn5Jv3WffmuaAJN+Sb+kX9Iv6Zf0S/ol/ZJ+Sb+k&#10;X9Iv6Zf0W5fod85EbQJM+iX9kn5Jv6Rf0i/pl/RL+iX9kn5Jv6Rf0m9do9/MCTDpl/RL+iX9kn5J&#10;v6Rf0i/pl/RL+iX9kn5Jv3WPftMnwKRf0i/pl/RL+iX9kn5Jv6Rf0i/pl/RL+iX91k36TZ4Ak35J&#10;v6Rf0i/pl/RL+iX9kn5Jv6Rf0i/pl/RbV+k3MQEm/ZJ+Sb+kX9Iv6Zf0S/ol/ZJ+Sb+kX9Iv6bcu&#10;029sAkz6Jf2Sfkm/pF/SL+mX9Ev6Jf2Sfkm/pF/Sb92m3zkTRUi/pF/SL+mX9Ev6Jf2Sfkm/pF/S&#10;L+mX9Ev6rfv0W9MEmPRL+iX9kn5Jv6Rf0i/pl/RL+iX9kn5Jv6TfukS/cydoE2DSL+mX9Ev6Jf2S&#10;fkm/pF/SL+mX9Ev6Jf2Sfusa/WZOgEm/pF/SL+mX9Ev6Jf2Sfkm/pF/SL+mX9Ev6rXv0mz4BJv2S&#10;fkm/pF/SL+mX9Ev6Jf2Sfkm/pF/SL+m3btJv8gSY9Ev6Jf2Sfkm/pF/SL+mX9Ev6Jf2Sfkm/pN+6&#10;Sr+JCTDpl/RL+iX9kn5Jv6Rf0i/pl/RL+iX9kn5Jv3WZfmMTYNIv6Zf0S/ol/ZJ+Sb+kX9Iv6Zf0&#10;S/ol/ZJ+6zb9zp0gQvol/ZJ+w0O/AtZ0ic4SH/SaKZ5ERXzYy5PoKfG/Qr284xItEx/28spE4AmK&#10;iu+jXp7H+syefjT9ousfnn+43F5f8P0HnR5sePj+j65/0i/pl/QbFvoVX4T0S/ol/YaDfpseFbSm&#10;SxR0jZ8pXhwwQE2QFwdgUA/kHY8DMKgH9RIADE1QFNWje15xANjp+hTw7Bdd//D8w+X2+oLvP+j0&#10;gJeX+/VP+iX9kn5DQb/zxmsTYNIv6Zf0G9SdzwJW7AJv/Rofu7onAMN6E+SlALD1HijW/VQDsPUe&#10;1EsHYFyCopAePUa/xQJgd+sTfeczuv7h+YfL7fUF33/Q6cGGh+//6Pon/ZJ+Sb9hoV/xRUi/pF/S&#10;bzjot2gTYLvX+OqrewpgWGyCPAWALfZA1d1PMgBb7EE9HYBBCYra79Gr6beIAOxofQr4e7/o+ofn&#10;Hy631xd8/0GnB7y83K9/0i/pl/QbCvpNnwCTfkm/pN9g/9UrASv5Am/lGp98dU8HDCtNkCc1AbCV&#10;Hii5+0kDYCs9qFeWBYARCYpa7tGT6be4AOxifaL/1St0/cPzD5fb6wu+/6DTgw0P3//R9U/6Jf2S&#10;fsNCv+KLkH5Jv6TfcNBvkSfAhV/j067uCmAU2AR5GQ3WKZs9UFr3kwnABfagXmYDCk9Q1GaPnka/&#10;RQdg5+pTwP/mM7r+4fmHy+31Bd9/0OkBLy/365/0S/ol/YaCfueNl/pf+1/m//cv/v/9P83/96+K&#10;/z/nzP/7dcX/21fmn/+m+H//L/N//l3x/3HW/O8Giv9L1Pyv/1D8X8+Y/3mR4l//T3PuG4r/2z/M&#10;V99U/N9Pm/+6WPEGfzdnv6X4f1SZaEPFL/qbOXOJ4t/4q/nPbyv+zb+Yf3xH8Yv/bE5/V/Fv/cn8&#10;/VLFG35pqi5T/JJT5m+XK/7tL8xfr1D8O5+bv1yp+Hc/M3++SvFLT5o/NVL8sk/Nl1crfvkn5tQ1&#10;il/xsfniWsWv/Mh8fp3iV31oPmuseKMT5uT1il/tmU+bKH7NB+aTGxS/9n3zcVPFr3vPfNRM8cbv&#10;mg+bK379cXOiheJNKo3XUvEbjpkPWine9Kh5v3WKixgprs5J+QX/7tekce4fuvDwklf4igLCN8oj&#10;/oWHz+f08UcoLyB+4/zeAVJu1efYBWbZZH/cfLN0iuLj55klUxWfMNcsnqb4xDlm0Y0p/sqp9P0B&#10;Xf/w/MPl9vqC7z/o9GDDO1b/v/iJ+eVv/bIfm7LfKf7LH5lf/F7xX/3Q/PxJxX/9A/OzPyj+m++b&#10;n/5R8d9+z/zkKcV/94T58dOK//5x86Ppij/5mPnhM4r/4VHzg2cV/+Mj5vszFH/qYfO95xR/+iHz&#10;xPOKT3/QPP6C4s88YB57UfFn7zePzlR8xn3mkZcUf+5e8/DLij9/j3noFcVfuNs8+KriL95lHnhN&#10;8Zl3mvtfV/ylO8x9byj+8u3m3lmKv3KbuedNxV+91dz9luKv3WLuelvx1282d76j+Bs3mTtmKz7r&#10;RnP7HMXfnGZum6v4W1PNrfMUf3uKuWW+4u9MNjcvUHz2JHPTQsXnTDQ3LlJ87gQzbbHi88abqUtS&#10;vB7pl/RL+g0J/TY9Wmz6pSjKoqD0O3EO9weKclikX9Iv6Tck9DtvvBHe+cw7n3nncwjufA7mO8DT&#10;JTpDIjMkUtubu2K/ldctphGRiNT67rfYb+VxC3QkIpFIrW9+i/1WPrdAR8okUlbrmw9jv5XfLdB2&#10;E5Rxi2Y8QbW8OTOeoOBvgXarPkF3PksN3wG2Xv/w/MPl9vqC7z/o9GDDw/d/dP3zzmfe+cw7nwO/&#10;81mSvwNM+iX9kn7DQL/NjghargMGAThXggjAQdanIOl30mznAQBdP66vLwJw9uXlfv2Tfkm/pN9Q&#10;0O/8caJMgEm/pF/Sb0D06wtYrgMGAThXggjA4ZoAW6Rf4QQ4t9xeXwTgrOGdB2DSL+mX9BsW+hVf&#10;hPRL+iX9hoN+OQEmALine truncated
id="image1"
x="0"
y="0" /><image
width="338.66666"
height="190.5"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,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&#10;Yr+B2O+Hz0r2YL/YLLine truncated
id="image1-0"
x="0"
y="0"
style="display:inline" /><image
width="338.66669"
height="190.5"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAIAAABAH0oBAAD/Q0lEQVR4nOz9ZZgcZ5bti+9XV33v&#10;OWemZzSedqvJDLIsZmZmZjMzN1M1u9uWLYPMMkgWU5YYS8xYMoRMarcaqzWj1FgH+t7/h/h/iFRl&#10;ZuROqoyVEW/VWk8+q91S1o6InTve2D/tyAqR/09E3Ew3/6/ujf6h+//1f3Rv/L91/9L/0v3//p+6&#10;/z/ndf9vX+j+3/9L9/9xTvd/iuv+z2d1//J/6v4v/6H7v57Rvcnfdf+3Gt0v+pvu//5X3b/yF90v&#10;/rPuX/2T7k3/qPvXTuv+9T/o/o3Pdf/m73X/1indL/lM90s/1f2yT3S//GPdr/hI9ytP6n6Vo/vV&#10;H+p+zQe6X/u+7s3e0/26E7o3r9b9+uO6tzime8ujurc6onvrw7q3OaR724O6tzuge/v9unfYp3vH&#10;vbp32qN75926d9mle9edunfboXv37br32KZ7zyrde23VvfcW3fts1r3vJt37bdS9/wbdB6zXfeA6&#10;3Qet1X3wGt2HrNZ96Crdh1XqPjym+4iVuo9cofuo5bqPXqb7mKW6j12i+7jFuo9fpPuEhbpPXKD7&#10;pPm6T35X9ynzdJ86V/dp7+g+/W3dZ7yl+w1v6n7jHN1vekP3m1/X/ZbXdL/1Vd1ve0X321/W/Y6X&#10;dL9ztu53vaj73S/ofs/zut/7nO73zdL9/md1f+AZ3R+cqftDT+v+8FO6P/I73R/9re6PPan747/R&#10;/Ylf6/7tX+n+nV/q/t1f6P69n+v+/Z/p/oMK3X/4U91/9BPdf/xj3X/yI91/+kPdK36g+8++r/vP&#10;v6f7L76r+y+/o/uvvq37r5/Q/TeP6/7kY7r/9lHdf/eI7k89rPvTD+k+80Hdn3lA92fv133Wfbo/&#10;d6/uz9+j+wt36/7iXbrPvlP3l+7Q/eXbdX/lNt1fvVX3127R/fWbdX/jJt3n3Kj7mzfo/tYM3UVI&#10;v6Rf0i/pl/RL+iX9kn5Jv6Rf0i/pl/RL+q3v9Pv2dBHSL+mX9Ev6Jf2Sfkm/pF/SL+mX9Ev6Jf2S&#10;fhsA/WZMgEm/pF/SL+mX9Ev6Jf2Sfkm/pF/SL+mX9Ev6rX/0658Ak35Jv6Rf0i/pl/RL+iX9kn5J&#10;v6Rf0i/pl/RbT+k3ZQJM+iX9kn5Jv6Rf0i/pl/RL+iX9kn5Jv6Rf0m99pd/kBJj0S/ol/ZJ+Sb+k&#10;X9Iv6Zf0S/ol/ZJ+Sb+k33pNv64I6Zf0S/ol/ZJ+Sb+kX9Iv6Zf0S/ol/ZJ+Sb/1nX7fni5C+iX9&#10;kn5Jv6Rf0i/pl/RL+iX9kn5Jv6Rf0m/9p99sE2DSL+mX9Ev6Jf2Sfkm/pF/SL+mX9Ev6Jf2SfusT&#10;/b4zTZsAk35Jv6Rf0i/pl/RL+iX9kn5Jv6Rf0i/pl/Rb3+g3cwJM+iX9kn5Jv6Rf0i/pl/RL+iX9&#10;kn5Jv6Rf0m/9o1//BJj0S/ol/ZJ+Sb+kX9Iv6Zf0S/ol/ZJ+Sb+k3/pJv6kTYNIv6Zf0S/ol/ZJ+&#10;Sb+kX9Iv6Zf0S/ol/ZJ+6yv9JifApF/SL+mX9Ev6Jf2Sfkm/pF/SL+mX9Ev6Jf3WZ/r1JsCkX9Iv&#10;6Zf0S/ol/ZJ+Sb+kX9Iv6Zf0S/ol/dZv+n1nmgjpl/RL+iX9kn5Jv6Rf0i/pl/RL+iX9kn5Jv/Wf&#10;frNNgEm/pF/SL+mX9Ev6Jf2Sfkm/pF/SL+mX9Ev6rU/0O3eqNgEm/ZJ+Sb+kX9Iv6Zf0S/ol/ZJ+&#10;Sb+kX9Iv6be+0W/mBJj0S/ol/ZJ+Sb+kX9Iv6Zf0S/ol/ZJ+Sb+k3/pHv/4JMOmX9Ev6Jf2Sfkm/&#10;pF/SL+mX9Ev6Jf2Sfkm/9ZN+UyfApF/SL+mX9Ev6Jf2Sfkm/pF/SL+mX9Ev6Jf3WV/pNToBJv6Rf&#10;0i/pl/RL+iX9kn5Jv6Rf0i/pl/RL+q3P9OtNgEm/pF/SL+mX9Ev6Jf2Sfkm/pF/SL+mX9Ev6rd/0&#10;O3eqCOmX9Ev6Jf2Sfkm/pF/SL+mX9Ev6Jf2Sfkm/9Z9+s02ASb+kX9Iv6Zf0S/ol/ZJ+Sb+kX9Iv&#10;6Zf0S/qtT/Q7b4o2ASb9kn5Jv6Rf0i/pl/RL+iX9kn5Jv6Rf0i/pt77Rb+YEmPRL+iX9kn5Jv6Rf&#10;0i/pl/RL+iX9kn5Jv6Tf+ke//gkw6Zf0S/ol/ZJ+Sb+kX9Iv6Zf0S/ol/ZJ+Sb/1k35TJ8CkX9Iv&#10;6Zf0S/ol/ZJ+Sb+kX9Iv6Zf0S/ol/dZX+k1OgEm/pF/SL+mX9Ev6Jf2Sfkm/pF/SL+mX9Ev6rc/0&#10;602ASb+kX9Iv6Zf0S/ol/ZJ+Sb+kX9Iv6Zf0S/qt3/Q7b4oI6Zf0S/ol/ZJ+Sb+kX9Iv6Zf0S/ol&#10;/ZJ+Sb/1n36zTYBJv6Rf0i/pl/RL+iX9kn5Jv6Rf0i/pl/RL+q1P9PvuZG0CTPol/ZJ+Sb+kX9Iv&#10;6Zf0S/ol/ZJ+Sb+kX9JvfaPfzAkw6Zf0S/ol/ZJ+Sb+kX9Iv6Zf0S/ol/ZJ+Sb/1j379E2DSL+mX&#10;9Ev6Jf2Sfkm/pF/SL+mX9Ev6Jf2Sfusn/aZOgEm/pF/SL+mX9Ev6Jf2Sfkm/pF/SL+mX9Ev6ra/0&#10;m5wAk35Jv6Rf0i/pl/RL+iX9kn5Jv6Rf0i/pl/Rbn+nXmwCTfkm/pF/SL+mX9Ev6Jf2Sfkm/pF/S&#10;L+mX9Fu/6ffdySKkX9Iv6Tc69CtgzZT4HHFBr9niSFzEhb0ciZ8W9wvUyzkh8QpxYS+nQgSeoLi4&#10;LurlOKzP3OlH0y+6/uH5h8vu8wu+/qDTgw0PX//R9U/6Jf2SfqNCv+KKkH5Jv6TfaNBvi2OC1kyJ&#10;g67xs8VJAAaoCXISAAzqgZwTCQAG9aBOEoChCYqjenTHKQ8AW12fAp79ousfnn+47D6/4OsPOj3g&#10;08v++if9kn5Jv5Gg3/mTtAkw6Zf0S/oN685nAcu7wAd+jfeu7knACLwJctIAOPAeyOt+agE48B7U&#10;8QMwLkFxSI/u0W+5ANje+kTf+Yyuf3j+4bL7/IKvP+j0YMPD1390/ZN+Sb+k36jQr7gipF/SL+k3&#10;GvRbtglwsNf42qt7GmAE2AQ5CgAH2APVdj+pABxgD+roAAxKUDz4Hr2WfssIwJbWp4C/94uuf3j+&#10;4bL7/IKvP+j0gE8v++uf9Ev6Jf1Ggn79E2DSL+mX9Bvub70SsFIv8IFc41Ov7n7ACKQJciQbAAfS&#10;A6V2Pz4ADqQHdSpyADAiQfGAe/RU+i0vANtYn+jfeoWuf3j+4bL7/IKvP+j0YMPD1390/ZN+Sb+k&#10;36jQr7gipF/SL+k3GvRb5glw6dd439VdAYwSmyAno8E6HWQP5Ot+MgG4xB7UyWxA4QmKB9mj++i3&#10;7ABsXX0K+Hc+o+sfnn+47D6/4OsPOj3g08v++if9kn5Jv5Gg3/mTpPGX/pf5//2T+3//T/P//bPi&#10;/8958/9+WfH/9oX5x78o/t//y/yff1X8f5wz/7uJ4v8UN//r3xT/57Pmf16k+Jf/05z/d8X/5T/M&#10;F19R/F/PmP+6WPEmfzfnvqr4v9WYeFPFL/qbOfs1xf/9r+Y/v674V/5i/uMbil/8Z3Pmm4p/9U/m&#10;799SvOkfTc0lin/ttPnbpYp//Q/mr5cp/o3PzV8uV/ybvzd/vkLxb50yf7pS8Us+M3+8SvFLPzWn&#10;r1b8sk/MH65R/PKPzefXKn7FR+b3zRS/8qQ5dZ3iVznms+aKX/2h+fR6xa/5wHzSQvFr3zcft1S8&#10;2Xvmo1aKX3fCnGytePNq47RR/Prj5sO2irc4Zj5ol+YiRsqr81JZ55/9kjTL/6a6h5eCwleVEP7K&#10;AuLXPXwhu4/fQmUJ8ZsVdgRI2VWfExaa5dPciQvMsumKT5pvls5QfPK7ZskNik+ZZxbfmOavnPav&#10;D+j6h+cfLrvPL/j6g04PNrxl9f/TH5qf/cqt+IGp+LXiP/u++elvFP/598xPnlT8F981P/6t4r/8&#10;jvnR7xT/1bfND59S/NdPmB88rfhvHjffn6n4k4+Z7z2j+G8fNd99VvHfPWK+M0vxpx42335O8acf&#10;Mk88r/jMB83jLyj+zAPmsRcVf/Z+8+hsxWfdZx55SfHn7jUPv6z48/eYh15R/IW7zYOvKv7iXeaB&#10;1xSffae5/3XFX7rD3PeG4i/fbu6do/grt5l73lT81VvN3W8p/tot5q63FX/9ZnPnO4q/cZO5Y67i&#10;c240t89T/M0bzG3vKv7WDHPrfMXfnm5uWaD4O9PMzQsVnzvV3LRI8XlTzI2LFX93srlhieLzJ5kZ&#10;S9O8EemX9Ev6jQj9tjhWbvqlKCpAQel3yjyuDxRlsUi/pF/Sb0Tod/4kI7zzmXc+887nCNz5HM53&#10;gGdKfJbEZkms2Ju7vJ8q6BbTmEhMir77zfupAm6BjsUkFiv65jfvpwq5BTpWIbGKom8+9H6qsFug&#10;g01Qxi2aiQQVeXNmIkHh3wJtV32C7nyWLN8BDrz+4fmHy+7zC77+oNODDQ9f/9H1zzufeecz73wO&#10;/c5nSf0OMOmX9Ev6jQL9tjwqaNkOGATgfAkiAIdZn4Kk36lzrQcAdP3Yfn4RgHOfXvbXP+mX9Ev6&#10;jQT9LpgoygSY9Ev6Jf2GRL+ugGU7YBCA8yWIABytCXCA9CucAOeX3ecXAThneOsBmPRL+iX9RoV+&#10;xRUh/ZJ+Sb/RoF9OgLine truncated
id="image1-06"
x="-2.8421709e-14"
y="0"
style="display:inline" /><rect
style="fill:#808080;stroke-width:0.140008"
id="rect1"
width="33.866665"
height="33.866665"
x="152.39999"
y="41.010418" /><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.131257"
id="rect1-7"
width="31.75"
height="31.75"
x="153.45833"
y="42.068748" /><rect
style="fill:#3a3a3a;stroke-width:0.140008;fill-opacity:1"
id="rect1-6"
width="33.866665"
height="33.866665"
x="152.39999"
y="115.62292" /></g><g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="Layer 4"><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:16.9333px;font-family:PXSansBold;-inkscape-font-specification:'PXSansBold Bold';word-spacing:0px;writing-mode:lr-tb;direction:ltr;fill:#ffffff;fill-opacity:1;stroke-width:0;stroke-dasharray:none"
x="28.886824"
y="112.89774"
id="text6"><tspan
sodipodi:role="line"
id="tspan6"
style="font-size:16.9333px;letter-spacing:1.05833px;word-spacing:0px;writing-mode:lr-tb;direction:ltr;stroke-width:0"
x="28.886824"
y="112.89774"
dx="0">HW</tspan><tspan
sodipodi:role="line"
style="font-size:16.9333px;letter-spacing:1.05833px;word-spacing:0px;writing-mode:lr-tb;direction:ltr;stroke-width:0"
x="28.886824"
y="134.06436"
id="tspan9">SW</tspan><tspan
sodipodi:role="line"
style="font-size:16.9333px;letter-spacing:2.11667px;word-spacing:0px;writing-mode:lr-tb;direction:ltr;stroke-width:0"
x="28.886824"
y="155.23099"
id="tspan12">P1</tspan><tspan
sodipodi:role="line"
style="font-size:16.9333px;letter-spacing:2.11667px;word-spacing:0px;writing-mode:lr-tb;direction:ltr;stroke-width:0"
x="28.886824"
y="176.39761"
id="tspan13">P2</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35px;font-family:PXSansBold;-inkscape-font-specification:'PXSansBold Bold';letter-spacing:0.264583px;writing-mode:lr-tb;direction:ltr;fill:#ffffff;fill-opacity:1;stroke-width:0;stroke-dasharray:none"
x="37.113716"
y="90.013023"
id="text10"><tspan
sodipodi:role="line"
style="font-size:6.35px;letter-spacing:0.264583px;stroke-width:0"
x="37.113716"
y="90.013023"
id="tspan11" /></text></g><g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Layer 3"
style="display:inline"><g
id="g5"
transform="matrix(-13.333334,0,0,13.333333,185.20833,116.68125)"
inkscape:label="restart"
style="display:inline"><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
id="rect3"
width="0.26458332"
height="1.0583333"
x="0"
y="0" /><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
id="rect4"
width="0.79374999"
height="0.26458332"
x="0.26458332"
y="0.79374999" /><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
id="rect4-8"
width="0.26458332"
height="0.79374999"
x="2.1166666"
y="0.79374999" /><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
id="rect4-1"
width="0.79374999"
height="0.26458332"
x="0.79374999"
y="4.3368087e-19" /><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
id="rect4-1-1"
width="0.79374999"
height="0.26458332"
x="0.79374999"
y="2.1166668" /><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
id="rect5"
width="0.26458332"
height="0.26458332"
x="0.26458332"
y="0.52916664" /><rect
style="display:inline;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
id="rect5-0"
width="0.26458332"
height="0.26458332"
x="-0.0066148322"
y="1.3295313" /><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
id="rect5-3"
width="0.26458332"
height="0.26458332"
x="0.52916664"
y="0.26458332" /><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
id="rect5-2"
width="0.26458332"
height="0.26458332"
x="1.5875"
y="1.8520833" /><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
id="rect5-3-3"
width="0.26458332"
height="0.26458332"
x="1.8520832"
y="1.5875" /><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
id="rect5-36"
width="0.26458332"
height="0.26458332"
x="-0.79374993"
y="1.8520833"
transform="rotate(-90)" /><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
id="rect5-3-0"
width="0.26458332"
height="0.26458332"
x="-0.52916664"
y="1.5875"
transform="rotate(-90)" /><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
id="rect5-36-2"
width="0.26458332"
height="0.26458332"
x="-2.1166666"
y="0.52916652"
transform="rotate(-90)" /><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
id="rect5-3-0-8"
width="0.26458332"
height="0.26458332"
x="-1.8520833"
y="0.26458332"
transform="rotate(-90)" /></g><g
id="g6"
inkscape:label="play"
style="display:inline" /></g><g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
style="display:none"><rect
style="fill:#808080;stroke-width:0.258208"
id="rect2"
width="13.766536"
height="41.010418"
x="160.23593"
y="0" /><rect
style="fill:#808080;stroke-width:0.231279"
id="rect2-3"
width="11.116428"
height="40.745834"
x="162.66666"
y="74.877083" /><rect
style="fill:#808080;stroke-width:0.258208"
id="rect2-7"
width="13.766524"
height="41.010418"
x="160.99565"
y="149.48958" /></g></svg>

After

Width:  |  Height:  |  Size: 257 KiB

+52
View File
@@ -0,0 +1,52 @@
import random
from PIL import Image
width = 1280
height = 720
img = Image.new("RGB", (width, height))
pixels = img.load()
colors = (
(0xFF, 0x00, 0x00),
(0xFF, 0x7F, 0x00),
(0xFF, 0xFF, 0x00),
(0x00, 0xFF, 0x00),
(0x00, 0xFF, 0xFF),
(0x00, 0x00, 0xFF),
(0x8B, 0x00, 0xFF),
(0xFF, 0x00, 0xFF)
)
colors2 = (
(0xFF,0x00,0x00),
(0xFF,0x40,0x00),
(0xFF,0x80,0x00),
(0xFF,0xBF,0x00),
(0xFF,0xFF,0x00),
(0xBF,0xFF,0x00),
(0x80,0xFF,0x00),
(0x00,0xFF,0x00),
(0x00,0xFF,0x80),
(0x00,0xFF,0xFF),
(0x00,0x80,0xFF),
(0x00,0x00,0xFF),
(0x40,0x00,0xFF),
(0x80,0x00,0xFF),
(0xFF,0x00,0xFF),
(0xFF,0x00,0x80)
)
for y in range(height):
for x in range(width):
pixels[x, y] = colors[((x+y)>>4)&7]
img.save("output/rainbow.png")
img.show()
for y in range(height):
for x in range(width):
pixels[x, y] = colors2[((x+y)>>4)&15]
img.save("output/rainbow2.png")
img.show()
Submodule tet-cpu-plan deleted from 9d3abbb8e2.