Skip to content

Commit

Permalink
* Added Libra easter egg pattern
Browse files Browse the repository at this point in the history
* Removed unused example patterns
  • Loading branch information
Smooth-Pineapple committed Sep 14, 2020
1 parent 27d4837 commit 31afe5e
Show file tree
Hide file tree
Showing 12 changed files with 186 additions and 204 deletions.
4 changes: 3 additions & 1 deletion display/control/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from display.control.bottom_up import BottomUp
from display.control.block import Block
from display.control.sparkle import Sparkle
from display.control.libra import Libra
from display.control.network_notification import NetworkNotification

from display.audio.input_stream import InputStream
Expand Down Expand Up @@ -100,7 +101,8 @@ def load_display(self, parse_ip):
self.display_pattern = Block(colour=colour, brightness=brightness, input_stream=self.input_stream, audio_spectrum=self.audio_spectrum, spectrum_analysis=self.spectrum_analysis, display_spectrum=self.display_spectrum, log_path=log_path)
elif pattern == '3':
self.display_pattern = Sparkle(colour=colour, brightness=brightness, input_stream=self.input_stream, audio_spectrum=self.audio_spectrum, spectrum_analysis=self.spectrum_analysis, display_spectrum=self.display_spectrum, log_path=log_path)

elif pattern == '4':
self.display_pattern = Libra(colour=colour, brightness=brightness, input_stream=self.input_stream, audio_spectrum=self.audio_spectrum, spectrum_analysis=self.spectrum_analysis, display_spectrum=self.display_spectrum, log_path=log_path)

if self.display_pattern is not None:
self.display_pattern.process()
Expand Down
39 changes: 0 additions & 39 deletions display/control/grayscale-block.py

This file was deleted.

53 changes: 53 additions & 0 deletions display/control/libra.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import math
import re
import time
import random
from display.control.samplebase import SampleBase
from serv_logging.serv_logging import Logging


class Libra(SampleBase):
def __init__(self, colour, brightness, input_stream, audio_spectrum, spectrum_analysis, display_spectrum, log_path, *args, **kwargs):
super(Libra, self).__init__(colour, brightness, input_stream, audio_spectrum, spectrum_analysis, display_spectrum, *args, **kwargs)

self.__logger = Logging.getInstance(Logging.DEB)
self.__logger.open(log_path)

self.direction = 1

self.__logger.write(Logging.DEB, "Starting Libra display")

def drawLibra(self, matrix, offset_canvas, r, g, b, width, height):
if self.matrix.brightness < 1:
self.direction = 1
if self.matrix.brightness > 99:
self.direction = -1

self.matrix.brightness += self.direction

libraCoOrd = [(20, 9), (22, 12), (31, 10), (39, 3), (46, 11), (42, 23), (28, 26), (27, 28)]
for x, y in libraCoOrd:
offset_canvas.SetPixel(x, y, r, g, b)

offset_canvas = matrix.SwapOnVSync(offset_canvas)

time.sleep(0.5)

def run(self):
super(Libra, self).run()

try:
didLibra = False
while not SampleBase.STOP_LOOP:
if self.colour == [0, 0, 0, 0]:
self.drawLibra(self.matrix, self.offset_canvas, random.randint(0, 255), random.randint(0, 255), random.randint(0, 255), self.width, self.height)
else:
self.drawLibra(self.matrix, self.offset_canvas, self.colour[0], self.colour[1], self.colour[2], self.width, self.height)

except KeyboardInterrupt:
SampleBase.stop()
raise KeyboardInterrupt()
except ValueError as e:
logger.write(Logging.ERR, "Exception with displaying Libra style: " + str(e))
SampleBase.stop()
raise KeyboardInterrupt()
36 changes: 0 additions & 36 deletions display/control/pulsing-brightness.py

This file was deleted.

42 changes: 0 additions & 42 deletions display/control/pulsing-colors.py

This file was deleted.

60 changes: 0 additions & 60 deletions display/control/rotating-block-generator.py

This file was deleted.

2 changes: 1 addition & 1 deletion file_management/data_extraction.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def verify_config_data(config_data, colour_key, pattern_key, brightness_key, log
elif not config_data[colour_key]:
config_data[colour_key] = 'rgba(0,0,0,0)'

if (pattern_key not in config_data or not config_data[pattern_key]) or DataExtraction.__is_config_int(config_data[pattern_key], pattern_key, 1, 3, log_path) is False:
if (pattern_key not in config_data or not config_data[pattern_key]) or DataExtraction.__is_config_int(config_data[pattern_key], pattern_key, 1, 4, log_path) is False:
config_data[pattern_key] = '1'
logger.write(Logging.WAR, "Pattern key not present, setting to default")
config_error = True
Expand Down
54 changes: 54 additions & 0 deletions webapp/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,60 @@ def index():

return render_template('/main.html', colour_key=colour_key, pattern_key=pattern_key, brightness_key=brightness_key, config_data=config_data, translations=translation_json, language_set=language_set, lang=config_data['lang'])

@app.route('/libra')
def libra():
logger.write(Logging.DEB, "Libra page")
config_data = DataExtraction.fix_config_data(FileManagement.read_json(config_path, log_path), colour_key, pattern_key, brightness_key, config_path, log_path)

if 'lang' not in config_data or not config_data['lang']:
config_data['lang'] = 'it'
FileManagement.update_json(config_path, config_data, log_path)

translation_json = {}
if config_data['lang'] in language_set:
translation_json = FileManagement.read_json(translations_dir_path + config_data['lang'] + '.json' , log_path)

return render_template('/libra.html', colour_key=colour_key, config_data=config_data, translations=translation_json)

@app.route('/config-mod-libra', methods = ['GET', 'POST'])
def submit_libra():
logger.write(Logging.INF, "Applying libra config")
if 'apply' in request.form:
try:
colour = request.form.get('colour-picker')
pattern_type = "4"
brightness = "50"

logger.write(Logging.DEB, "Config change libra: " + colour + ", " + pattern_type + ", " + brightness)
config_data = {colour_key: colour, pattern_key: pattern_type, 'brightness': brightness, 'ip': ip}

FileManagement.update_json(config_path, config_data, log_path)
except Exception as e:
logger.write(Logging.ERR, "Error when saving config change libra: " + str(e))
config_data = DataExtraction.fix_config_data(FileManagement.read_json(config_path, log_path), colour_key, pattern_key, brightness_key, config_path, log_path)

translation_json = {}
if config_data['lang'] in language_set:
translation_json = FileManagement.read_json(translations_dir_path + config_data['lang'] + '.json' , log_path)

translations_config_fail = {
'TITLE': "",
'MESSAGE': ""
}

if 'TITLE_CONFIG_FAIL' in translation_json:
translations_config_fail['TITLE'] = translation_json['TITLE_CONFIG_FAIL']

if 'MESSAGE_CONFIG_FAIL' in translation_json:
translations_config_fail['MESSAGE'] = translation_json['MESSAGE_CONFIG_FAIL']

return render_template('/sub_page.html', translations=translations_config_fail, lang=config_data['lang'], have_home=True), 500

elif 'cancel' in request.form:
logger.write(Logging.DEB, "Cancel clicked, so reseting page")

return redirect('/libra')

@app.route('/set_lang', methods = ['GET', 'POST'])
def set_lang():
lang = 'it'
Expand Down
14 changes: 14 additions & 0 deletions webapp/static/css/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -98,4 +98,18 @@ input[type=range]:focus::-webkit-slider-runnable-track {
color: #12ED9F;
text-align: center;
font-size: 25px;
}

.home_container {
width: 90px;
border: 2px solid transparent;
}

.home_container:hover {
border-color: #f0c49b;
}

.home_icon {
width: 90px;
height:60px;
}
34 changes: 34 additions & 0 deletions webapp/templates/libra.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<html>
<head>
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}">
<script src="{{ url_for('static', filename='js/jquery-3.5.1.min.js') }}"></script>
{{ colorpicker.loader() }}
{{ colorpicker.picker(ids=['.colorpicker'], color_format='rgb', showAlpha='false', showButtons='true', cancelText=translations.CANCEL, chooseText=translations.CHOOSE) }}

<title>{{translations.VISUALISER_CONFIGURATION}}</title>
</head>
<body>
<div class="home_container">
<a href="/"><img class="home_icon" src="{{url_for('static', filename='/../images/home.png')}}"></a>
</div>

<form action="/config-mod-libra" method="POST">
<h1 style="color: #12ED9F; text-align:center; font-size: 33px;">{{translations.LIBRA_CONFIGURATION}}</h1>

<h2 class="sub_header">{{translations.SET_COLOUR}}</h2>
<div style="text-align:center;">
<input class='colorpicker' name="colour-picker" value='{{config_data[colour_key]}}'/>
</div>

<p></p>

<div style="text-align:center;">
<input type="submit" name="apply" value="{{translations.APPLY}}" style="color: #12ED9F;">
<input type="submit" name="cancel" value="{{translations.CANCEL}}" style="color: #12ED9F;">
</div>
</form>
<form action="/shutdown" method="POST" style="text-align:center;">
<input type="submit" name="shutdown" value="{{translations.SHUTDOWN}}" style="color: #12ED9F; background: #f33333;">
</form>
</body>
</html>
Loading

0 comments on commit 31afe5e

Please sign in to comment.