AeThex-Engine-Core/engine/generate_branding.py
MrPiglr 2c337c0c1e
🎨 Replace all Godot branding with AeThex logos and icons
- Generated new icon.png, logo.png with hexagon 'A' design
- Updated app_icon.png and splash.png
- Created Windows .ico files with AeThex branding
- Added Python scripts to regenerate branding assets
- All assets use AeThex colors (cyan #00D9FF, purple #8B5CF6)

Rebuild the engine to see the new branding!
2026-02-23 19:24:23 +00:00

182 lines
6.1 KiB
Python

#!/usr/bin/env python3
"""
Generate AeThex Engine branding assets
"""
from PIL import Image, ImageDraw, ImageFont
import math
# AeThex brand colors
CYAN = (0, 217, 255)
PURPLE = (139, 92, 246)
DARK_BG = (30, 30, 46)
WHITE = (255, 255, 255)
def draw_hexagon(draw, center, size, fill, outline=None, width=1):
"""Draw a hexagon shape"""
x, y = center
angles = [i * 60 for i in range(6)]
points = []
for angle in angles:
rad = math.radians(angle - 30)
px = x + size * math.cos(rad)
py = y + size * math.sin(rad)
points.append((px, py))
if fill:
draw.polygon(points, fill=fill)
if outline:
draw.polygon(points, outline=outline, width=width)
return points
def create_icon(size=256, filename="icon.png"):
"""Create AeThex hexagon icon with 'A'"""
img = Image.new('RGBA', (size, size), (0, 0, 0, 0))
draw = ImageDraw.Draw(img)
center = (size // 2, size // 2)
hex_size = size * 0.38
# Draw hexagon with gradient effect
draw_hexagon(draw, center, hex_size + 4, None, CYAN, 8)
draw_hexagon(draw, center, hex_size, DARK_BG)
# Draw 'A' letter
try:
font_size = int(size * 0.5)
font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", font_size)
except:
font = ImageFont.load_default()
# Center the text
text = "A"
bbox = draw.textbbox((0, 0), text, font=font)
text_width = bbox[2] - bbox[0]
text_height = bbox[3] - bbox[1]
text_x = center[0] - text_width // 2
text_y = center[1] - text_height // 2 - (bbox[1] + bbox[3]) // 2
# Draw text with gradient colors
draw.text((text_x, text_y), text, font=font, fill=CYAN)
img.save(filename)
print(f"✓ Created {filename} ({size}x{size})")
return img
def create_logo(width=620, height=300, filename="logo.png"):
"""Create AeThex Engine logo with text"""
img = Image.new('RGBA', (width, height), (0, 0, 0, 0))
draw = ImageDraw.Draw(img)
# Draw hexagon icon on left
icon_size = int(height * 0.6)
icon_center_x = int(height * 0.4)
icon_center_y = height // 2
hex_size = icon_size * 0.4
draw_hexagon(draw, (icon_center_x, icon_center_y), hex_size + 3, None, CYAN, 6)
draw_hexagon(draw, (icon_center_x, icon_center_y), hex_size, DARK_BG)
# Draw 'A' in hexagon
try:
icon_font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", int(icon_size * 0.5))
except:
icon_font = ImageFont.load_default()
bbox = draw.textbbox((0, 0), "A", font=icon_font)
text_width = bbox[2] - bbox[0]
text_height = bbox[3] - bbox[1]
text_x = icon_center_x - text_width // 2
text_y = icon_center_y - text_height // 2 - (bbox[1] + bbox[3]) // 2
draw.text((text_x, text_y), "A", font=icon_font, fill=CYAN)
# Draw "AeThex Engine" text
try:
title_font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", int(height * 0.35))
subtitle_font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", int(height * 0.18))
except:
title_font = ImageFont.load_default()
subtitle_font = ImageFont.load_default()
# "AeThex" in cyan
text_x = int(height * 0.7)
title_y = height // 2 - int(height * 0.15)
draw.text((text_x, title_y), "AeThex", font=title_font, fill=CYAN)
# "Engine" in white
bbox = draw.textbbox((text_x, title_y), "AeThex ", font=title_font)
engine_x = bbox[2]
draw.text((engine_x, title_y), "Engine", font=title_font, fill=WHITE)
img.save(filename)
print(f"✓ Created {filename} ({width}x{height})")
return img
def create_splash(width=620, height=300, filename="splash.png"):
"""Create splash screen"""
img = Image.new('RGB', (width, height), DARK_BG)
draw = ImageDraw.Draw(img)
# Same as logo but with background
# Draw hexagon icon
icon_size = int(height * 0.6)
icon_center_x = int(height * 0.4)
icon_center_y = height // 2
hex_size = icon_size * 0.4
draw_hexagon(draw, (icon_center_x, icon_center_y), hex_size + 3, None, CYAN, 6)
draw_hexagon(draw, (icon_center_x, icon_center_y), hex_size, (20, 20, 30))
# Draw 'A'
try:
icon_font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", int(icon_size * 0.5))
title_font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", int(height * 0.35))
except:
icon_font = ImageFont.load_default()
title_font = ImageFont.load_default()
bbox = draw.textbbox((0, 0), "A", font=icon_font)
text_width = bbox[2] - bbox[0]
text_height = bbox[3] - bbox[1]
text_x = icon_center_x - text_width // 2
text_y = icon_center_y - text_height // 2 - (bbox[1] + bbox[3]) // 2
draw.text((text_x, text_y), "A", font=icon_font, fill=CYAN)
# Draw text
text_x = int(height * 0.7)
title_y = height // 2 - int(height * 0.15)
draw.text((text_x, title_y), "AeThex", font=title_font, fill=CYAN)
bbox = draw.textbbox((text_x, title_y), "AeThex ", font=title_font)
engine_x = bbox[2]
draw.text((engine_x, title_y), "Engine", font=title_font, fill=WHITE)
img.save(filename)
print(f"✓ Created {filename} ({width}x{height})")
return img
if __name__ == "__main__":
print("🎨 Generating AeThex Engine branding assets...\n")
# Main icons
create_icon(256, "icon.png")
create_icon(128, "icon_128.png")
create_icon(64, "icon_64.png")
create_icon(256, "main/app_icon.png")
# Logos
create_logo(620, 300, "logo.png")
# Splash
create_splash(620, 300, "main/splash.png")
print("\n✅ All branding assets generated!")
print("\n📝 Files created:")
print(" - icon.png (256x256)")
print(" - icon_128.png")
print(" - icon_64.png")
print(" - logo.png (620x300)")
print(" - main/app_icon.png (256x256)")
print(" - main/splash.png (620x300)")
print("\n🔧 Next step: Rebuild the engine to see the new branding!")