revert flatten changes for now
added rainbow colors, based on rainbow mod (no sync yet)
This commit is contained in:
		| @@ -13,6 +13,7 @@ import numpy as np | ||||
| import os | ||||
| import sys | ||||
| import time | ||||
| import random | ||||
|  | ||||
| # get screen size from parameters | ||||
| Nx = 80 | ||||
| @@ -40,8 +41,10 @@ except: | ||||
| class Layer: | ||||
|     def __init__(self, new_path): | ||||
|         self.path = new_path | ||||
|         # read png file and get gray scale map as 3 dimension rgb array | ||||
|         self.gray_scale_map_small_direct = png.Reader(self.path).asRGB8() | ||||
|         # read png file | ||||
|         self.png_reader = png.Reader(self.path) | ||||
|         # gray_scale_map_small = png_reader.read() | ||||
|         self.gray_scale_map_small_direct = self.png_reader.asRGB8() | ||||
|         # get png data from png object | ||||
|         self.png_width = self.gray_scale_map_small_direct[0] | ||||
|         self.png_height = self.gray_scale_map_small_direct[1] | ||||
| @@ -52,11 +55,16 @@ class Layer: | ||||
|         self.rgb_buffer_length = (self.png_width * self.png_height) * self.color_values | ||||
|         self.layer_buffer_current_color = np.zeros(self.color_values, np.uint8) | ||||
|         self.layer_buffer_array = np.zeros(self.rgb_buffer_length, np.uint8) | ||||
|         self.png_image_data_flatten = np.array(self.png_image_data).flatten() | ||||
|         self.png_image_data_flatten = np.array(self.flatten_rgb_array_from_png(self.png_image_data)) | ||||
|         # internal event states | ||||
|         self.layer_current_event_value = 0 | ||||
|         self.animation_finished = True | ||||
|         self.animation_current_brightness = self.max_brightness | ||||
|         # rainbow stuff :D | ||||
|         self.rainbow_mode = False | ||||
|         self.color_random_min = 15 | ||||
|         self.color_random_max = 31 | ||||
|         self.color_random_mult = 8 | ||||
|         # just debug stuff | ||||
|         # print("created layer for " + self.path) | ||||
|  | ||||
| @@ -72,7 +80,7 @@ class Layer: | ||||
|     def run_next_fade_color(self): | ||||
|         if not self.animation_finished and self.animation_current_brightness > 0: | ||||
|             # fade rgb values | ||||
|             self.animation_current_brightness -= 25 | ||||
|             self.animation_current_brightness -= 1 | ||||
|  | ||||
|             # set current layer color brightness to animation brightness | ||||
|             for i in range(3): | ||||
| @@ -118,6 +126,14 @@ class Layer: | ||||
|             output_rgb_array[1] = self.max_brightness | ||||
|             self.animation_finished = True | ||||
|  | ||||
|         if self.rainbow_mode and event_value != 0 and event_value != 8: | ||||
|             output_rgb_array[0] = np.uint8(random.randint(self.color_random_min, | ||||
|                                                           self.color_random_max) * self.color_random_mult) | ||||
|             output_rgb_array[1] = np.uint8(random.randint(self.color_random_min, | ||||
|                                                           self.color_random_max) * self.color_random_mult) | ||||
|             output_rgb_array[2] = np.uint8(random.randint(self.color_random_min, | ||||
|                                                           self.color_random_max) * self.color_random_mult) | ||||
|  | ||||
|         return output_rgb_array | ||||
|  | ||||
|     def render_rgb_layer(self, r=0, g=0, b=0): | ||||
| @@ -139,6 +155,19 @@ class Layer: | ||||
|         # print("new_color: " + str(current_value) + ":" + str(mapping_value) + "=" + str(new_value)) | ||||
|         return new_value | ||||
|  | ||||
|     # helper method to flatted the png array payload, called only once on init | ||||
|     def flatten_rgb_array_from_png(self, rgb_array): | ||||
|         output_array = np.zeros(self.rgb_buffer_length, np.uint8) | ||||
|         current_value_index = 0 | ||||
|         # got over every row of png | ||||
|         for current_row in rgb_array: | ||||
|             # go over value in payload | ||||
|             for current_value in current_row: | ||||
|                 # write current value to output array buffer | ||||
|                 output_array[current_value_index] = current_value | ||||
|                 current_value_index += 1 | ||||
|         return output_array | ||||
|  | ||||
|  | ||||
| # ------------------------------------ | ||||
| # Websocket event part start | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Elektrospy
					Elektrospy