split edge color in multiple edges
This commit is contained in:
parent
f2f654854a
commit
28a3e1d460
@ -246,25 +246,56 @@ class Harness:
|
||||
# connections
|
||||
for connection_color in cable.connections:
|
||||
if isinstance(connection_color.via_port, int): # check if it's an actual wire and not a shield
|
||||
dot.attr('edge', color=':'.join(['#000000'] + wv_colors.get_color_hex(cable.colors[connection_color.via_port - 1], pad=pad) + ['#000000']))
|
||||
colors = wv_colors.get_color_hex(cable.colors[connection_color.via_port - 1])
|
||||
isShield=False
|
||||
#dot.attr('edge', color=':'.join(['#000000'] + wv_colors.get_color_hex(cable.colors[connection_color.via_port - 1], pad=pad) + ['#000000']))
|
||||
else: # it's a shield connection
|
||||
# shield is shown as a thin tinned wire
|
||||
dot.attr('edge', color=':'.join(['#000000', wv_colors.get_color_hex('SN', pad=False)[0], '#000000']))
|
||||
if connection_color.from_port is not None: # connect to left
|
||||
colors = wv_colors.get_color_hex('SN', pad=False)
|
||||
isShield=True
|
||||
#dot.attr('edge', color=':'.join(['#000000', wv_colors.get_color_hex('SN', pad=False)[0], '#000000']))
|
||||
|
||||
|
||||
leftConn = connection_color.from_port is not None
|
||||
rightConn = connection_color.to_port is not None
|
||||
|
||||
|
||||
if leftConn: # connect to left
|
||||
from_port = f':p{connection_color.from_port}r' if self.connectors[connection_color.from_name].style != 'simple' else ''
|
||||
code_left_1 = f'{connection_color.from_name}{from_port}:e'
|
||||
code_left_2 = f'{cable.name}:w{connection_color.via_port}:w'
|
||||
dot.edge(code_left_1, code_left_2)
|
||||
from_string = f'{connection_color.from_name}:{connection_color.from_port}' if self.connectors[connection_color.from_name].show_name else ''
|
||||
html = html.replace(f'<!-- {connection_color.via_port}_in -->', from_string)
|
||||
if connection_color.to_port is not None: # connect to right
|
||||
|
||||
if rightConn: # connect to right
|
||||
code_right_1 = f'{cable.name}:w{connection_color.via_port}:e'
|
||||
to_port = f':p{connection_color.to_port}l' if self.connectors[connection_color.to_name].style != 'simple' else ''
|
||||
code_right_2 = f'{connection_color.to_name}{to_port}:w'
|
||||
dot.edge(code_right_1, code_right_2)
|
||||
to_string = f'{connection_color.to_name}:{connection_color.to_port}' if self.connectors[connection_color.to_name].show_name else ''
|
||||
html = html.replace(f'<!-- {connection_color.via_port}_out -->', to_string)
|
||||
|
||||
#black cable borders
|
||||
if not isShield:
|
||||
dot.attr('edge', style="solid", penwidth="6.0", color='#000000')
|
||||
if leftConn:
|
||||
dot.edge(code_left_1, code_left_2)
|
||||
if rightConn:
|
||||
dot.edge(code_right_1, code_right_2)
|
||||
|
||||
#invis cable to break graphviz edge ordering
|
||||
dot.attr('edge', style='invis')
|
||||
if leftConn:
|
||||
dot.edge (connection_color.from_name, cable.name)
|
||||
if rightConn:
|
||||
dot.edge (cable.name, connection_color.to_name)
|
||||
|
||||
#cable color
|
||||
dot.attr('edge', style="solid", penwidth="2.0", color=colors[0])
|
||||
if leftConn:
|
||||
dot.edge(code_left_1, code_left_2)
|
||||
if rightConn:
|
||||
dot.edge(code_right_1, code_right_2)
|
||||
|
||||
dot.node(cable.name, label=f'<{html}>', shape='box',
|
||||
style='filled,dashed' if cable.category == 'bundle' else '', margin='0', fillcolor='white')
|
||||
|
||||
|
||||
@ -104,11 +104,11 @@ color_default = '#ffffff'
|
||||
def get_color_hex(input, pad=False):
|
||||
if input is None or input == '':
|
||||
return [color_default]
|
||||
if len(input) == 4: # give wires with EXACTLY 2 colors that striped/banded look
|
||||
input = input + input[:2]
|
||||
#if len(input) == 4: # give wires with EXACTLY 2 colors that striped/banded look
|
||||
# input = input + input[:2]
|
||||
# hacky style fix: give single color wires a triple-up so that wires are the same size
|
||||
if pad and len(input) == 2:
|
||||
input = input + input + input
|
||||
#if pad and len(input) == 2:
|
||||
# input = input + input + input
|
||||
try:
|
||||
output = [_color_hex[input[i:i + 2]] for i in range(0, len(input), 2)]
|
||||
except KeyError:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user