diff -r c02818d7e29f -r 7e61baa047f0 graphics/GraphicCommons.py --- a/graphics/GraphicCommons.py Mon Aug 14 22:30:41 2017 +0300 +++ b/graphics/GraphicCommons.py Mon Aug 14 23:27:15 2017 +0300 @@ -115,6 +115,7 @@ (2, 3) : 5 } + def round_scaling(x, n, constraint=0): fraction = float(x) / float(n) if constraint == -1: @@ -129,19 +130,28 @@ Basic vector operations for calculate wire points """ -# Create a vector from two points and define if vector must be normal + def vector(p1, p2, normal = True): + """ + Create a vector from two points and define if vector must be normal + """ vector = (p2.x - p1.x, p2.y - p1.y) if normal: return normalize(vector) return vector -# Calculate the norm of a given vector + def norm(v): + """ + Calculate the norm of a given vector + """ return sqrt(v[0] * v[0] + v[1] * v[1]) -# Normalize a given vector + def normalize(v): + """ + Normalize a given vector + """ v_norm = norm(v) # Verifie if it is not a null vector if v_norm > 0: @@ -149,24 +159,32 @@ else: return v -# Calculate the scalar product of two vectors + def is_null_vector(v): + """ + Calculate the scalar product of two vectors + """ return v == (0, 0) -# Calculate the scalar product of two vectors + def add_vectors(v1, v2): + """ + Calculate the scalar product of two vectors + """ return (v1[0] + v2[0], v1[1] + v2[1]) -# Calculate the scalar product of two vectors + def product(v1, v2): + """ + Calculate the scalar product of two vectors + """ return v1[0] * v2[0] + v1[1] * v2[1] -""" -Function that calculates the nearest point of the grid defined by scaling for the given point -""" - def GetScaledEventPosition(event, dc, scaling): + """ + Function that calculates the nearest point of the grid defined by scaling for the given point + """ pos = event.GetLogicalPosition(dc) if scaling: pos.x = round(float(pos.x) / float(scaling[0])) * scaling[0] @@ -174,11 +192,11 @@ return pos -""" -Function that choose a direction during the wire points generation -""" def DirectionChoice(v_base, v_target, dir_target): + """ + Function that choose a direction during the wire points generation + """ dir_product = product(v_base, v_target) if dir_product < 0: return (-v_base[0], -v_base[1]) @@ -186,6 +204,7 @@ return dir_target return v_base + def MiterPen(colour, width=1, style=wx.SOLID): pen = wx.Pen(colour, width, style) pen.SetJoin(wx.JOIN_MITER) @@ -196,21 +215,25 @@ # Helpers for highlighting text #------------------------------------------------------------------------------- + def AddHighlight(highlights, infos): RemoveHighlight(highlights, infos) highlights.append(infos) + def RemoveHighlight(highlights, infos): if infos in highlights: highlights.remove(infos) return True return False + def ClearHighlight(highlights, highlight_type=None): if highlight_type is not None: return [highlight for highlight in highlights if highlight[2] != highlight_type] return [] + def DrawHighlightedText(dc, text, highlights, x, y): current_pen = dc.GetPen() dc.SetPen(wx.TRANSPARENT_PEN) @@ -229,11 +252,11 @@ # Graphic element base class #------------------------------------------------------------------------------- -""" -Class that implements a generic graphic element -""" class Graphic_Element(ToolTipProducer): + """ + Class that implements a generic graphic element + """ # Create a new graphic element def __init__(self, parent, id = None): @@ -684,11 +707,11 @@ # Group of graphic elements #------------------------------------------------------------------------------- -""" -Class that implements a group of graphic elements -""" class Graphic_Group(Graphic_Element): + """ + Class that implements a group of graphic elements + """ # Create a new group of graphic elements def __init__(self, parent): @@ -1002,11 +1025,11 @@ # Connector for all types of blocks #------------------------------------------------------------------------------- -""" -Class that implements a connector for any type of block -""" class Connector(DebugDataConsumer, ToolTipProducer): + """ + Class that implements a connector for any type of block + """ # Create a new connector def __init__(self, parent, name, type, position, direction, negated = False, edge = "none", onlyone = False): @@ -1536,11 +1559,11 @@ # Common Wire Element #------------------------------------------------------------------------------- -""" -Class that implements a wire for connecting two blocks -""" class Wire(Graphic_Element, DebugDataConsumer): + """ + Class that implements a wire for connecting two blocks + """ # Create a new wire def __init__(self, parent, start = None, end = None): @@ -2716,6 +2739,7 @@ # Graphic comment element #------------------------------------------------------------------------------- + def FilterHighlightsByRow(highlights, row, length): _highlights = [] for start, end, highlight_type in highlights: @@ -2727,6 +2751,7 @@ _highlights.append((start, end, highlight_type)) return _highlights + def FilterHighlightsByColumn(highlights, start_col, end_col): _highlights = [] for start, end, highlight_type in highlights: @@ -2736,11 +2761,11 @@ _highlights.append((start, end, highlight_type)) return _highlights -""" -Class that implements a comment -""" class Comment(Graphic_Element): + """ + Class that implements a comment + """ # Create a new comment def __init__(self, parent, content, id = None):