feat: add ProcessDock process and port manager
This commit is contained in:
54
tools/generate_icon.py
Normal file
54
tools/generate_icon.py
Normal file
@@ -0,0 +1,54 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from PIL import Image, ImageDraw, ImageFont
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
ASSETS = ROOT / "assets"
|
||||
|
||||
|
||||
def load_font(size: int) -> ImageFont.FreeTypeFont | ImageFont.ImageFont:
|
||||
candidates = (
|
||||
Path(r"C:\Windows\Fonts\arialbd.ttf"),
|
||||
Path(r"C:\Windows\Fonts\segoeuib.ttf"),
|
||||
)
|
||||
for candidate in candidates:
|
||||
if candidate.exists():
|
||||
return ImageFont.truetype(str(candidate), size)
|
||||
return ImageFont.load_default()
|
||||
|
||||
|
||||
def main() -> None:
|
||||
ASSETS.mkdir(parents=True, exist_ok=True)
|
||||
size = 1024
|
||||
image = Image.new("RGBA", (size, size), (0, 0, 0, 0))
|
||||
draw = ImageDraw.Draw(image)
|
||||
|
||||
# Soft shadow and the same violet visual language used by the GUI.
|
||||
draw.rounded_rectangle((76, 84, 948, 956), radius=220, fill=(28, 34, 67, 52))
|
||||
draw.rounded_rectangle((52, 52, 924, 924), radius=220, fill=(91, 91, 214, 255))
|
||||
draw.rounded_rectangle((82, 82, 894, 894), radius=190, outline=(130, 130, 235, 255), width=10)
|
||||
|
||||
font = load_font(540)
|
||||
label = "P"
|
||||
bounds = draw.textbbox((0, 0), label, font=font)
|
||||
width = bounds[2] - bounds[0]
|
||||
height = bounds[3] - bounds[1]
|
||||
position = ((size - width) / 2 - 14, (size - height) / 2 - bounds[1] - 4)
|
||||
draw.text(position, label, font=font, fill=(255, 255, 255, 255))
|
||||
|
||||
png_path = ASSETS / "processdock.png"
|
||||
ico_path = ASSETS / "processdock.ico"
|
||||
image.save(png_path, optimize=True)
|
||||
image.save(
|
||||
ico_path,
|
||||
format="ICO",
|
||||
sizes=[(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (256, 256)],
|
||||
)
|
||||
print(f"Generated {ico_path}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user