mirror of
https://github.com/cyberboy666/r_e_c_u_r.git
synced 2025-12-05 16:00:06 +01:00
fixed tabbed banner, shader setting
This commit is contained in:
@@ -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{
|
||||
|
||||
@@ -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;
|
||||
|
||||
14
actions.py
14
actions.py
@@ -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']
|
||||
|
||||
@@ -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'))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1 +1 @@
|
||||
"1-9"
|
||||
"0-0"
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user