fixed tabbed banner, shader setting

This commit is contained in:
langolierz
2019-08-03 15:50:31 +00:00
parent 638bde828f
commit 50fc94cccb
8 changed files with 68 additions and 30 deletions

View File

@@ -5,25 +5,26 @@
precision mediump float;
#endif
uniform float u_time;
uniform float ftime;
uniform vec4 fparams
uniform float u_x0;
uniform float u_x1;
void main() {
vec3 colour = vec3(0.0,0.0,0.0);
if(u_x0 < (1.0 / 3.0)){
if(fparams[0] < (1.0 / 3.0)){
colour[0] = 1.0;
}
else if(u_x0 > (2.0 / 3.0)){
else if(fparams[0] > (2.0 / 3.0)){
colour[1] = 1.0;
}
else{
colour[2] = 1.0;
}
if(u_x1 < (1.0 / 3.0)){
if(fparams[1] < (1.0 / 3.0)){
colour[1] = 1.0;
}
else if(u_x1 > (2.0 / 3.0)){
else if(fparams[1] > (2.0 / 3.0)){
colour[2] = 1.0;
}
else{

View File

@@ -9,6 +9,8 @@ uniform mat4 modelViewProjectionMatrix;
varying vec4 v_position;
varying vec4 v_color;
varying vec3 v_normal;
varying vec2 tcoord;
// twice because supporting two shader formats
varying vec2 v_texcoord;
uniform mat4 u_modelViewProjectionMatrix;
@@ -17,6 +19,7 @@ void main() {
v_position = position;
v_color = color;
v_normal = normal;
tcoord = texcoord;
v_texcoord = texcoord;
gl_Position = modelViewProjectionMatrix * position;

View File

@@ -136,17 +136,21 @@ class Actions(object):
def cycle_display_mode(self):
display_modes = [["BROWSER",'NAV_BROWSER'],["SETTINGS",'NAV_SETTINGS'],[ "SAMPLER",'PLAYER']]
if self.data.settings['video']['VIDEOPLAYER_BACKEND']['value'] != 'omxplayer':
display_modes.append(["SHADERS",'NAV_SHADERS'])
if self.data.settings['detour']['TRY_DEMO']['value'] == 'enabled':
display_modes.append(["DETOUR",'NAV_DETOUR'])
display_modes = self.data.get_display_modes_list(with_nav_mode=True)
current_mode_index = [index for index, i in enumerate(display_modes) if self.data.display_mode in i][0]
next_mode_index = (current_mode_index + 1) % len(display_modes)
self.data.display_mode = display_modes[next_mode_index][0]
self.data.control_mode = display_modes[next_mode_index][1]
def cycle_display_mode_back(self):
display_modes = self.data.get_display_modes_list(with_nav_mode=True)
current_mode_index = [index for index, i in enumerate(display_modes) if self.data.display_mode in i][0]
next_mode_index = (current_mode_index - 1) % len(display_modes)
self.data.display_mode = display_modes[next_mode_index][0]
self.data.control_mode = display_modes[next_mode_index][1]
def toggle_action_on_player(self):
play = 'play' in self.data.settings['sampler']['ON_ACTION']['value']

View File

@@ -30,7 +30,7 @@ class Data(object):
#self.EMPTY_BANK = [self.EMPTY_SLOT for i in range(10)]
self.PATHS_TO_BROWSER = [self.PATH_TO_EXTERNAL_DEVICES, '/home/pi/Videos' ]
self.PATHS_TO_SHADERS = [self.PATH_TO_EXTERNAL_DEVICES, '/home/pi/Shaders' ]
self.PATHS_TO_SHADERS = [self.PATH_TO_EXTERNAL_DEVICES, '/home/pi/r_e_c_u_r/Shaders', '/home/pi/Shaders' ]
### state data
self.auto_repeat_on = True
@@ -66,6 +66,8 @@ class Data(object):
self.midi_mappings = self._read_json(self.MIDI_MAPPING_JSON)
self.analog_mappings = self._read_json(self.ANALOG_MAPPING_JSON)
@staticmethod
def create_empty_bank():
@@ -174,6 +176,7 @@ class Data(object):
else:
bankslot_number = self.next_bankslot
bank_num , slot_num = self.split_bankslot_number(bankslot_number)
next_slot_details = self.bank_data[bank_num][slot_num]
start_value = next_slot_details['start']
end_value = next_slot_details['end']
@@ -306,9 +309,18 @@ class Data(object):
elif colour_name == "none":
colour_argb = (0,0,0,0)
colour_hex = '%02x%02x%02x%02x' % colour_argb
print(colour_hex)
return colour_hex
def get_display_modes_list(self, with_nav_mode=False):
display_modes = [[ "SAMPLER",'PLAYER'], ["BROWSER",'NAV_BROWSER'],["SETTINGS",'NAV_SETTINGS']]
if self.settings['video']['VIDEOPLAYER_BACKEND']['value'] != 'omxplayer':
display_modes.append(["SHADERS",'NAV_SHADERS'])
if self.settings['detour']['TRY_DEMO']['value'] == 'enabled':
display_modes.append(["DETOUR",'NAV_DETOUR'])
if not with_nav_mode:
return [mode[0] for mode in display_modes]
return display_modes
@staticmethod
def _get_mb_free_diskspace(path):
st = os.statvfs(path)
@@ -328,8 +340,8 @@ class Data(object):
@staticmethod
def get_list_of_two_input_shaders():
if os.path.exists('/home/pi/Shaders/2-input'):
(_, _, filenames) = next(os.walk('/home/pi/Shaders/2-input'))
if os.path.exists('/home/pi/r_e_c_u_r/Shaders/2-input'):
(_, _, filenames) = next(os.walk('/home/pi/r_e_c_u_r/Shaders/2-input'))
return filenames
#elif os.path.exists('/home/pi/r_e_c_u_r/Shaders/2-input'):
#(_, _, filenames) = next(os.walk('/home/pi/r_e_c_u_r/Shaders/2-input'))

View File

@@ -20,9 +20,7 @@ class Display(object):
self.settings_menu = menu.SettingsMenu(self.data, self.message_handler, self.MENU_HEIGHT)
self.shaders_menu = self.shaders.shaders_menu
#self.top_menu_index = 0
#self.selected_list_index = self.top_menu_index
self.body_title = ''
self.display_text = self._create_display_text(self.tk)
self._add_tags()
self._update_screen_every_second()
@@ -54,7 +52,6 @@ class Display(object):
def _load_title(self):
self.display_text.insert(END, self.TITLE + ' \n')
self.display_text.tag_add("TITLE", 1.19, 1.28)
def _load_player(self):
if self.data.player_mode == 'now':
@@ -73,6 +70,7 @@ class Display(object):
self.display_text.tag_add("NEXT_ALPHA", 3.29, 3.47)
def _load_display_body(self):
self.body_title = self._generate_body_title()
if self.data.display_mode == 'BROWSER':
self._load_browser()
elif self.data.display_mode == 'SETTINGS':
@@ -87,9 +85,12 @@ class Display(object):
def _load_sampler(self):
self.TITLE = '================== r_e_c_u_r =================='
self.display_text.tag_add("TITLE", 1.19, 1.28)
bank_data = self.data.bank_data[self.data.bank_number]
self.display_text.insert(END, '------------------ <SAMPLER> ------------------ \n')
self.display_text.tag_add("DISPLAY_MODE", 4.19, 4.29)
self.display_text.insert(END, '{} \n'.format(self.body_title))
self.display_text.insert(END, '{:>6} {:<17} {:>5} {:<5} {:<5} \n'.format(
'{}-slot'.format(self.data.bank_number), 'name', 'length', 'start', 'end'))
for index, slot in enumerate(bank_data):
@@ -105,10 +106,12 @@ class Display(object):
self._highlight_this_row(current_slot)
def _load_browser(self):
self.TITLE = '================== r_e_c_u_r =================='
self.display_text.tag_add("TITLE", 1.19, 1.28)
browser_list = self.browser_menu.menu_list
number_of_lines_displayed = 0
self.display_text.insert(END, '------------------ <BROWSER> ------------------ \n')
self.display_text.tag_add("DISPLAY_MODE", 4.19, 4.29)
self.display_text.insert(END, '{} \n'.format(self.body_title))
self.display_text.insert(END, '{:40} {:5} \n'.format('path', 'slot'))
number_of_browser_items = len(browser_list)
@@ -126,10 +129,12 @@ class Display(object):
self._highlight_this_row(self.browser_menu.selected_list_index - self.browser_menu.top_menu_index)
def _load_settings(self):
self.TITLE = '================== r_e_c_u_r =================='
self.display_text.tag_add("TITLE", 1.19, 1.28)
line_count = 0
settings_list = self.settings_menu.menu_list
self.display_text.insert(END, '------------------ <SETTINGS> ----------------- \n')
self.display_text.tag_add("DISPLAY_MODE", 4.19, 4.29)
self.display_text.insert(END, '{} \n'.format(self.body_title))
self.display_text.insert(END, '{:^23} {:^22} \n'.format('SETTING', 'VALUE'))
number_of_settings_items = len(settings_list)
for index in range(number_of_settings_items):
@@ -147,9 +152,10 @@ class Display(object):
def _load_shaders(self):
self.TITLE = '================== c_o_n_j_u_r ================'
self.display_text.tag_add("TITLE", 1.19, 1.31)
line_count = 0
self.display_text.insert(END, '------------------ <SHADERS> ------------------ \n')
self.display_text.tag_add("DISPLAY_MODE", 4.19, 4.28)
self.display_text.insert(END, '{} \n'.format(self.body_title))
## showing current shader info:
shader = self.shaders.selected_shader
self.display_text.insert(END, '{:<1}:{:<1}{:<2} {:<17} '.format \
@@ -181,9 +187,9 @@ class Display(object):
def _load_detour(self):
self.TITLE = '================== d_e_t_o_u_r ================'
self.display_text.tag_add("TITLE", 1.19, 1.31)
line_count = 0
self.display_text.insert(END, '------------------ <FRAME-SAMPLER> ------------ \n')
self.display_text.tag_add("DISPLAY_MODE", 4.19, 4.28)
self.display_text.insert(END, '{} \n'.format(self.body_title))
## showing current detour info:
self.display_text.insert(END, '{:^23} {:^22} \n'.format('SETTING', 'VALUE'))
@@ -346,6 +352,16 @@ round(param_row + column_offset + (param_num+1)*param_length, 2))
self.display_text.tag_configure("CAPTURE_ALPHA", background="black", foreground=capture_colour)
self.display_text.tag_configure("NEXT_ALPHA", background="black", foreground=next_colour)
def _generate_body_title(self):
display_modes = self.data.get_display_modes_list()
current_mode = self.data.display_mode
selected_list = ['[{}]'.format(v) if v == current_mode else '<{}>'.format(v[:3].lower()) for v in display_modes ]
selected_string = '--'.join(selected_list)
pad = 47 - len(selected_string)
output = ('-' * (pad // 2)) + selected_string + ('-' * (pad // 2)) + ('-' * (pad % 2))
return output
@staticmethod
def hex_from_rgb(r, g, b):
return '#%02x%02x%02x' % (r, g, b)

View File

@@ -1 +1 @@
"1-9"
"0-0"

View File

@@ -41,7 +41,7 @@
"g": {
"DEFAULT": ["toggle_capture_preview", "toggle_capture_recording"]},
"h": {
"DEFAULT": ["cycle_display_mode"]
"DEFAULT": ["cycle_display_mode", "cycle_display_mode_back"]
},
"i": {
"DEFAULT": ["toggle_function"]

View File

@@ -61,6 +61,8 @@ class Shaders(object):
def determine_shader_parameter_number(self, path):
max_amount = 4
if True: # for now always assume 4 params
return max_amount
with open(path, 'r') as selected_shader:
shader_text = selected_shader.read()
for i in range(max_amount):