104 lines
3.5 KiB
Python
104 lines
3.5 KiB
Python
|
import sys, os
|
||
|
import pygame
|
||
|
from pygame.locals import *
|
||
|
|
||
|
try:
|
||
|
import pygame.freetype as freetype
|
||
|
except ImportError:
|
||
|
print ("No FreeType support compiled")
|
||
|
sys.exit ()
|
||
|
|
||
|
colors = {
|
||
|
"grey_light" : pygame.Color(200, 200, 200),
|
||
|
"grey_dark" : pygame.Color(100, 100, 100),
|
||
|
"green" : pygame.Color(50, 255, 63),
|
||
|
"red" : pygame.Color(220, 30, 30),
|
||
|
"blue" : pygame.Color(50, 75, 245)
|
||
|
}
|
||
|
|
||
|
def run():
|
||
|
pygame.init()
|
||
|
|
||
|
fontdir = os.path.dirname(os.path.abspath (__file__))
|
||
|
font = freetype.Font(os.path.join (fontdir, "data", "sans.ttf"))
|
||
|
|
||
|
screen = pygame.display.set_mode((800, 600))
|
||
|
screen.fill (colors["grey_light"])
|
||
|
|
||
|
font.underline_adjustment = 0.5
|
||
|
font.pad = True
|
||
|
font.render_to(screen, (32, 32), "Hello World", colors["red"],
|
||
|
colors['grey_dark'], size=64,
|
||
|
style=freetype.STYLE_UNDERLINE|freetype.STYLE_OBLIQUE)
|
||
|
font.pad = False
|
||
|
|
||
|
font.render_to(screen, (32, 128), "abcdefghijklm", colors["grey_dark"],
|
||
|
colors["green"], size=64)
|
||
|
|
||
|
font.vertical = True
|
||
|
font.render_to(screen, (32, 200), "Vertical?", colors["blue"],
|
||
|
None, size=32)
|
||
|
font.vertical = False
|
||
|
|
||
|
font.render_to(screen, (64, 190), "Let's spin!", colors["red"],
|
||
|
None, size=48, rotation=55)
|
||
|
|
||
|
font.render_to(screen, (160, 290), "All around!", colors["green"],
|
||
|
None, size=48, rotation=-55)
|
||
|
|
||
|
font.render_to(screen, (250, 220), "and BLEND",
|
||
|
pygame.Color(255, 0, 0, 128), None, size=64)
|
||
|
|
||
|
font.render_to(screen, (265, 237), "or BLAND!",
|
||
|
pygame.Color(0, 0xCC, 28, 128), None, size=64)
|
||
|
|
||
|
# Some pinwheels
|
||
|
font.origin = True
|
||
|
for angle in range(0, 360, 45):
|
||
|
font.render_to(screen, (150, 420), ")", pygame.Color('black'),
|
||
|
size=48, rotation=angle)
|
||
|
font.vertical = True
|
||
|
for angle in range(15, 375, 30):
|
||
|
font.render_to(screen, (600, 400), "|^*", pygame.Color('orange'),
|
||
|
size=48, rotation=angle)
|
||
|
font.vertical = False
|
||
|
font.origin = False
|
||
|
|
||
|
utext = pygame.compat.as_unicode(r"I \u2665 Unicode")
|
||
|
font.render_to(screen, (298, 320), utext, pygame.Color(0, 0xCC, 0xDD),
|
||
|
None, size=64)
|
||
|
|
||
|
utext = pygame.compat.as_unicode(r"\u2665")
|
||
|
font.render_to(screen, (480, 32), utext, colors["grey_light"],
|
||
|
colors["red"], size=148)
|
||
|
|
||
|
font.render_to(screen, (380, 380), "...yes, this is an SDL surface",
|
||
|
pygame.Color(0, 0, 0),
|
||
|
None, size=24, style=freetype.STYLE_STRONG)
|
||
|
|
||
|
font.origin = True
|
||
|
r = font.render_to(screen, (100, 530), "stretch",
|
||
|
pygame.Color('red'),
|
||
|
None, size=(24, 24), style=freetype.STYLE_NORMAL)
|
||
|
font.render_to(screen, (100 + r.width, 530), " VERTICAL",
|
||
|
pygame.Color('red'),
|
||
|
None, size=(24, 48), style=freetype.STYLE_NORMAL)
|
||
|
|
||
|
r = font.render_to(screen, (100, 580), "stretch",
|
||
|
pygame.Color('blue'),
|
||
|
None, size=(24, 24), style=freetype.STYLE_NORMAL)
|
||
|
font.render_to(screen, (100 + r.width, 580), " HORIZONTAL",
|
||
|
pygame.Color('blue'),
|
||
|
None, size=(48, 24), style=freetype.STYLE_NORMAL)
|
||
|
|
||
|
pygame.display.flip()
|
||
|
|
||
|
while 1:
|
||
|
if pygame.event.wait().type in (QUIT, KEYDOWN, MOUSEBUTTONDOWN):
|
||
|
break
|
||
|
|
||
|
pygame.quit()
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
run ()
|