diff --git a/nyan/__main__.py b/nyan/__main__.py index 4a6a1f2..24af9f7 100644 --- a/nyan/__main__.py +++ b/nyan/__main__.py @@ -2,14 +2,16 @@ from collections import namedtuple import math +import os import os.path as path import random import sys import time from PIL import Image # Requires the Pillow library -DISP_WIDTH = 150 -DISP_HEIGHT = 16 +_geometry = os.getenv('LEDCAT_GEOMETRY', '150x16').split('x') +DISP_WIDTH = int(_geometry[0]) +DISP_HEIGHT = int(_geometry[1]) tail_colors = [ @@ -28,8 +30,7 @@ def read_image(filename): anim_cat = [] for i in range(0, 6): frame = read_image('%s/cat/%d.png' % (path.dirname(__file__), i)) - assert frame.size[0] == DISP_WIDTH - assert frame.size[1] == DISP_HEIGHT + assert (32, 16) == frame.size anim_cat.append(frame) anim_sparkle = [] for i in range(0, 5): @@ -57,17 +58,21 @@ while True: i = y * DISP_WIDTH + x t = time.time() col_y = y - (DISP_HEIGHT // 2 - len(tail_colors) // 2) + int(math.sin(x / 6 + t * math.pi) * 4 * math.sin(t * 8)) - if x < 130 and 0 <= col_y < len(tail_colors): + if x < (DISP_WIDTH - 10) and 0 <= col_y < len(tail_colors): color = tail_colors[col_y] else: color = (0x0f, 0x4d, 0x8f) frame[i*3:i*3+3] = color - # Paste animated frame - for i in range(DISP_WIDTH * DISP_HEIGHT): - pix = anim_frame.getpixel((i % DISP_WIDTH, i / DISP_WIDTH)) - if pix[3] != 0: - frame[i*3:i*3+3] = pix[:3] + # Copy animated frame + for anim_x in range(anim_frame.size[0]): + for anim_y in range(anim_frame.size[1]): + pix = anim_frame.getpixel((anim_x, anim_y)) + if pix[3] != 0: # Test for alpha + x = (DISP_WIDTH - anim_frame.size[0]) + anim_x + y = (DISP_HEIGHT // 2 - anim_frame.size[1] // 2) + anim_y + i = ((y * DISP_WIDTH) + x) * 3 + frame[i:i+3] = pix[:3] # Render and update the sparkles for sp in sparkles: diff --git a/nyan/cat/0.png b/nyan/cat/0.png index 97fb7da..e53746c 100644 Binary files a/nyan/cat/0.png and b/nyan/cat/0.png differ diff --git a/nyan/cat/1.png b/nyan/cat/1.png index 949d6e6..5d26c82 100644 Binary files a/nyan/cat/1.png and b/nyan/cat/1.png differ diff --git a/nyan/cat/2.png b/nyan/cat/2.png index ebde06f..9beb49f 100644 Binary files a/nyan/cat/2.png and b/nyan/cat/2.png differ diff --git a/nyan/cat/3.png b/nyan/cat/3.png index 63c6ea4..7b879dd 100644 Binary files a/nyan/cat/3.png and b/nyan/cat/3.png differ diff --git a/nyan/cat/4.png b/nyan/cat/4.png index 0b0c5f0..adf5210 100644 Binary files a/nyan/cat/4.png and b/nyan/cat/4.png differ diff --git a/nyan/cat/5.png b/nyan/cat/5.png index 42be713..b89a8f0 100644 Binary files a/nyan/cat/5.png and b/nyan/cat/5.png differ