This commit is contained in:
SatyrDiamond 2023-10-19 21:40:20 -04:00
parent 55bde74ff2
commit 8f09adceac
4 changed files with 74 additions and 50 deletions

View File

@ -1,21 +1,48 @@
# SPDX-FileCopyrightText: 2023 SatyrDiamond
# SPDX-License-Identifier: GPL-3.0-or-later
from functions import xtramath
def reverse(regions, num_len):
return [[((num_len-region[0])-region[1])-1, region[1]] for region in regions]
def get_used_areas(regionsdata, num_len):
def split(regionsdata, splitnum, mindur):
out_regionsdata = []
for region in regionsdata:
if region[0] < splitnum < region[1]:
if splitnum-region[0] >= mindur: out_regionsdata.append([region[0], splitnum])
if region[1]-splitnum >= mindur: out_regionsdata.append([splitnum, region[1]])
else: out_regionsdata.append(region)
return out_regionsdata
def get_startendpoints(regionsdata, startpoints, endpoints, mindur):
for region in regionsdata:
if (region[1]-region[0]) >= mindur:
if region[0] not in startpoints: startpoints[region[0]] = 0
startpoints[region[0]] += 1
if region[1] not in endpoints: endpoints[region[1]] = 0
endpoints[region[1]] += 1
def boollist_get(regionsdata, num_len):
used_areas = [False for _ in range(num_len)]
for s_reg in regionsdata:
for num in range(s_reg[0], s_reg[0]+s_reg[1]):
used_areas[num] = True
return used_areas
def get_endpoints(endpoints, regionsdata):
for s_reg in regionsdata:
endpointval = s_reg[0]+s_reg[1]
if endpointval not in endpoints: endpoints[endpointval] = 0
endpoints[endpointval] += 1
def merge_used_areas(used1, used2):
def boollist_merge(used1, used2):
return [(used1[x] or used2[x]) for x in range(len(used1))]

View File

@ -75,6 +75,23 @@ def list_to_reigons(i_list, offsetval):
mscount += 1
return output
def list_to_reigons_bool(i_list):
found_regs = []
i_list_p = None
mscount = 0
for i_list_e in i_list:
if i_list_e != i_list_p:
i_list_p = i_list_e
found_regs.append([i_list_p, mscount, mscount])
found_regs[-1][2] += 1
mscount += 1
output = []
for found_reg in found_regs:
if found_reg[0]: output.append(found_reg[1:])
return output
def list_findrepeat(i_list):
outdata = []
for part in i_list:
@ -172,4 +189,10 @@ def list_tab_closest(i_list, v_target, v_num):
closestnumlist[0] = list_part
closestnumlist[1] = num
closestnumlist[2] = howclose
return closestnumlist
return closestnumlist
def list_samesimilar(first, second):
out = 0
for x in range(len(first)):
if first[x] == second[x]: out += 1
return out/len(first)

View File

@ -5,41 +5,6 @@ from functions import xtramath
from functions import data_values
from functions import data_regions
# ---------------------------------------------------------------------------------------------------------------
# ---------------------------------------------------------------------------------------------------------------
# ---------------------------------------------------------------------------------------------------------------
# -------------------------------------------------- Print --------------------------------------------------
# ---------------------------------------------------------------------------------------------------------------
# ---------------------------------------------------------------------------------------------------------------
# ---------------------------------------------------------------------------------------------------------------
p_headersize = 20
p_partsize = 4
def print_usedlist(i_name, numlist):
print((i_name).rjust(p_headersize), end=' |')
for x in numlist:
if x == True: x = '###'
if x == False: x = ' '
print(str(x).rjust(p_partsize)+'|', end='')
print()
def print_numlist(i_name, numlist):
print((i_name).rjust(p_headersize), end=' |')
[print(str(x).rjust(p_partsize)+'|', end='') for x in numlist]
print()
def print_regions(i_length, i_name, regions):
usedparts = [' ' for _ in range(i_length*2)]
for region in regions:
for num in range(region[0], region[0]+region[1]):
usedparts[num] = '####'
usedparts[region[0]+region[1]] = '##\\ '
print((i_name).rjust(p_headersize), end=' |')
[print(str(x).rjust(p_partsize)+'|', end='') for x in usedparts]
print()
# ---------------------------------------------------------------------------------------------------------------
# ---------------------------------------------------------------------------------------------------------------
# ---------------------------------------------------------------------------------------------------------------
@ -103,8 +68,6 @@ def find(in_numberlist, in_reversed):
for x in lst_numberlist:
if x != None: lst_existing.append(x)
#print_numlist('NUMLIST', lst_numberlist)
len_numberlist = len(lst_numberlist)
numbdone = []
@ -126,7 +89,6 @@ def find(in_numberlist, in_reversed):
used_areas = [False for _ in range(len_numberlist) ]
d_endpoints = {}
for s_regionsdata in regionsdata:
#print_regions(len_numberlist, 'FOUND '+str(s_regionsdata[0]), s_regionsdata[1])
for s_reg in s_regionsdata[1]:
endpointval = s_reg[0]+s_reg[1]
@ -142,6 +104,4 @@ def find(in_numberlist, in_reversed):
else:
if d_endpoints[d_endpoint] > 0: used_areas[d_endpoint] = False
#print_usedlist('USED', used_areas)
return used_areas

View File

@ -119,4 +119,18 @@ def add_info_msg(cvpj_l, i_datatype, i_value):
data_values.nested_dict_add_value(cvpj_l, ['info', 'message'], {'type': i_datatype, 'text': i_value})
def add_param(cvpj_l, p_id, p_value, **kwargs):
params.add(cvpj_l, [], p_id, p_value, 'float', **kwargs)
params.add(cvpj_l, [], p_id, p_value, 'float', **kwargs)
def add_visual_window(cvpj_l, w_group, w_name, w_open, w_pos, w_size):
data_values.nested_dict_add_value(cvpj_l, ['visual_window', w_group, w_name], {'active': w_open, 'pos': w_pos, 'size': w_size})
def get_visual_window(cvpj_l, w_group, w_name):
out_open = False
out_pos = [0,0]
out_size = [100,100]
out_data = nested_dict_get_value(i_data, ['visual_window', w_group, w_name])
if out_data != None:
out_open = out_data['active']
out_pos = out_data['pos']
out_size = out_data['size']
return out_open, out_pos, out_size