micetools/src/micetools/render.py

93 lines
2.9 KiB
Python

import pygame
import pygame.gfxdraw as gfx
from PIL import Image, ImageDraw
import math
# surf = pygame.Surface((1080, 1080))
# surf.fill((0, 0, 0))
surf = Image.new("RGB", (720 * 2, 1080))
draw = ImageDraw.Draw(surf)
def region(rX, rY, rW, rH):
# # Out of region
# if (mX < rX || mY < rY || mX > rX + rW || mY > rY + rH) return 0;
# # i is now a position in a region from (-1,-1) to (1,1)
# float iX = ((mX - rX) / (rW / 2)) - 1;
# float iY = ((mY - rY) / (rH / 2)) - 1;
# float r2 = iX * iX + iY * iY;
# # Bound to a unit circle
# if (r2 > 1) return 0;
mid = (rX + rW // 2, rY + rH // 2)
scale = min(rW, rH) / 2
outer = (rX, rY, rX + rW, rY + rH)
innerR = 298 / 540
inner = (
rX + (rW / 2) * (1 - innerR),
rY + (rH / 2) * (1 - innerR),
rX + rW - (rW / 2) * (1 - innerR),
rY + rH - (rW / 2) * (1 - innerR),
)
centreR = 121 / 540
centre = (
rX + (rW / 2) * (1 - centreR),
rY + (rH / 2) * (1 - centreR),
rX + rW - (rW / 2) * (1 - centreR),
rY + rH - (rW / 2) * (1 - centreR),
)
draw.pieslice(outer, 0, 45, fill=(0, 255, 0))
draw.pieslice(outer, 45, 90, fill=(127, 255, 127))
draw.pieslice(outer, 90, 135, fill=(0, 255, 0))
draw.pieslice(outer, 135, 180, fill=(127, 255, 127))
draw.pieslice(outer, 180, 225, fill=(0, 255, 0))
draw.pieslice(outer, 225, 270, fill=(127, 255, 127))
draw.pieslice(outer, 270, 315, fill=(0, 255, 0))
draw.pieslice(outer, 315, 360, fill=(127, 255, 127))
draw.pieslice(inner, 0, 45, fill=(255, 0, 0))
draw.pieslice(inner, 45, 90, fill=(255, 127, 127))
draw.pieslice(inner, 90, 135, fill=(255, 0, 0))
draw.pieslice(inner, 135, 180, fill=(255, 127, 127))
draw.pieslice(inner, 180, 225, fill=(255, 0, 0))
draw.pieslice(inner, 225, 270, fill=(255, 127, 127))
draw.pieslice(inner, 270, 315, fill=(255, 0, 0))
draw.pieslice(inner, 315, 360, fill=(255, 127, 127))
draw.pieslice(centre, 0, 360, (0, 0, 255))
# gfx.arc(s, *mid, 500, 0, 90, (0, 255, 0))
# pygame.draw.arc(s, (0, 255, 0), (0, 0, 500, 500), 0, math.radians(90), 100)
# pygame.draw.circle(s, (255, 0, 0), mid, (121/540) * scale)
# # Centre button
# if (r2 < (121.0f / 540.0f) * (121.0f / 540.0f)) return BUTTON_C;
# WORD button = 0;
# # Four quadrants
# if (iX > 0 && iY < 0) button = -iY > iX ? BUTTON_A1 : BUTTON_A2;
# if (iX > 0 && iY > 0) button = iX > iY ? BUTTON_A3 : BUTTON_A4;
# if (iX < 0 && iY > 0) button = iY > -iX ? BUTTON_A5 : BUTTON_A6;
# if (iX < 0 && iY < 0) button = -iX > -iY ? BUTTON_A7 : BUTTON_A8;
# # Inner ring of buttons
# if (r2 < (298.0f / 540.0f) * (298.0f / 540.0f))
# button = (button & 0xff00) | ((button & 0xff) << 1);
# return button;
region(0, 360, 720, 720)
region(720, 360, 720, 720)
surf.save("out.png")
# pygame.image.save(surf, "out.png")