From cc0fb8a7fd819927572eff54481a2e73f52c5282 Mon Sep 17 00:00:00 2001 From: David Miles Date: Sun, 2 Sep 2018 07:09:26 +0100 Subject: [PATCH] Add a home screen with spinning squares --- square_home/main.py | 96 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 square_home/main.py diff --git a/square_home/main.py b/square_home/main.py new file mode 100644 index 0000000..0a50b29 --- /dev/null +++ b/square_home/main.py @@ -0,0 +1,96 @@ +"""A home screen with squares that spin""" + +___name___ = "Squares home" +___license___ = "MIT" +___dependencies___ = ["sleep", "app", "ugfx_helper", "buttons", "homescreen"] +___categories___ = ["Homescreens"] + +import ugfx, os, time, sleep, ugfx_helper, math +from tilda import Buttons +from homescreen import * + +width = 240 +height = 320 +ugfx_helper.init() + +s = ugfx.Style() +s.set_background(ugfx.BLACK) +s.set_enabled([ugfx.WHITE, ugfx.html_color(0x800080), ugfx.html_color(0x800080), ugfx.html_color(0x800080)]) +ugfx.set_default_style(s) + +# This was taken from the stock home app +def draw_name(): + intro_text = "Hi! I'm" + intro_height = 30 + name_height = 60 + max_name = 8 + + ugfx.orientation(90) + ugfx.set_default_font(ugfx.FONT_TITLE) + # Process name + name_setting = name("Set your name in the settings app") + if len(name_setting) <= max_name: + ugfx.set_default_font(ugfx.FONT_NAME) + else: + ugfx.set_default_font(ugfx.FONT_MEDIUM_BOLD) + + ugfx.Label(0, ugfx.height() - name_height - intro_height, ugfx.width(), intro_height, intro_text, justification=ugfx.Label.CENTER) + ugfx.Label(0, ugfx.height() - name_height, ugfx.width(), name_height, name_setting, justification=ugfx.Label.CENTER) + + ugfx.orientation(270) + +def go(): + ugfx.clear(ugfx.BLACK) + draw_name() + + colors = [ugfx.WHITE, ugfx.GREEN, ugfx.YELLOW, ugfx.BLUE] + + ci = 0 + r = 70 + dr = 2 + d = 0.0 + dd = 0.1 + + hOffset = 40 + + while True: + if (math.fabs(d) > 4): + ugfx.clear(ugfx.BLACK) + draw_name() + + dd = -dd + d = 0 + ci += 1 + + if (ci >= len(colors)): + ci = 0 + + px1 = math.floor(width / 2 + r * math.sin(d)) + py1 = math.floor(height / 2 + r * math.cos(d) + hOffset) + + px2 = math.floor(width / 2 + r * math.sin(d + math.pi / 2)) + py2 = math.floor(height / 2 + r * math.cos(d + math.pi / 2) + hOffset) + + px3 = math.floor(width / 2 + r * math.sin(d + math.pi)) + py3 = math.floor(height / 2 + r * math.cos(d + math.pi) + hOffset) + + px4 = math.floor(width / 2 + r * math.sin(d + (math.pi * 1.5))) + py4 = math.floor(height / 2 + r * math.cos(d + (math.pi * 1.5)) + hOffset) + + ugfx.line(px1, py1, px2, py2, colors[ci]) + ugfx.line(px3, py3, px2, py2, colors[ci]) + ugfx.line(px3, py3, px4, py4, colors[ci]) + ugfx.line(px1, py1, px4, py4, colors[ci]) + + d += dd + r += dr + + if (r > 100): + dr = -dr + + if (r < 30): + dr = -dr + + sleep_or_exit(0.1) + +go()