diff --git a/levelup/generator/styles/default.py b/levelup/generator/styles/default.py index f2e41c3..67acc02 100644 --- a/levelup/generator/styles/default.py +++ b/levelup/generator/styles/default.py @@ -215,26 +215,27 @@ def generate_default_profile( stats_layer = Image.new("RGBA", desired_card_size, (0, 0, 0, 0)) draw = ImageDraw.Draw(stats_layer) - # Stats positioning - everything starts AFTER the profile picture - left_edge = pfp_x + pfp_size[0] + 30 # Start everything after profile picture + # Stats positioning - progress bar starts after profile, stats on right + left_edge = pfp_x + pfp_size[0] + 30 # Start progress bar after profile picture + stats_x = desired_card_size[0] - 400 # Right side stats position # Draw stats with consistent spacing title_font = ImageFont.truetype(str(font_path or imgtools.DEFAULT_FONT), 32) value_font = ImageFont.truetype(str(font_path or imgtools.DEFAULT_FONT), 32) - # Balance and Rank stats + # Balance and Rank stats - back on the right side balance_y = 40 - draw.text((left_edge, balance_y), "BALANCE:", font=title_font, fill=(200, 200, 200)) - draw.text((left_edge + 150, balance_y), f"{humanize_number(balance)} CREDITS", font=value_font, fill=stat_color or (255, 255, 255)) + draw.text((stats_x, balance_y), "BALANCE:", font=title_font, fill=(200, 200, 200)) + draw.text((stats_x + 150, balance_y), f"{humanize_number(balance)} CREDITS", font=value_font, fill=stat_color or (255, 255, 255)) rank_y = balance_y + 50 - draw.text((left_edge, rank_y), "RANK:", font=title_font, fill=(200, 200, 200)) - draw.text((left_edge + 150, rank_y), f"#{humanize_number(position)}", font=value_font, fill=stat_color or (255, 255, 255)) + draw.text((stats_x, rank_y), "RANK:", font=title_font, fill=(200, 200, 200)) + draw.text((stats_x + 150, rank_y), f"#{humanize_number(position)}", font=value_font, fill=stat_color or (255, 255, 255)) - # XP Text + # XP Text - back on the right xp_y = rank_y + 50 xp_text = f"XP: {humanize_number(current_xp)} / {humanize_number(next_xp)}" - draw.text((left_edge, xp_y), xp_text, font=value_font, fill=(255, 255, 255)) + draw.text((stats_x, xp_y), xp_text, font=value_font, fill=(255, 255, 255)) # Progress bar - starts after profile picture progress = (current_xp - previous_xp) / (next_xp - previous_xp) if next_xp > previous_xp else 0 @@ -263,12 +264,12 @@ def generate_default_profile( # Draw percentage draw.text((percent_x, percent_y), percent_text, font=percent_font, fill=(255, 255, 255)) - # Level text + # Level text - back at the left edge level_font = ImageFont.truetype(str(font_path or imgtools.DEFAULT_FONT), 48) level_text = f"LEVEL {level}" if prestige > 0: level_text = f"P{prestige} • {level_text}" - draw.text((left_edge, 15), level_text, font=level_font, fill=user_color or (255, 255, 255)) + draw.text((15, 15), level_text, font=level_font, fill=user_color or (255, 255, 255)) # Composite the layers if not render_gif or (not pfp_animated and not bg_animated):