Skip to content

Commit

Permalink
DiagramGrid: Factor out the generic laying out functionality.
Browse files Browse the repository at this point in the history
In the future, the constructor of DiagramGrid will live through further
enhancements, like hints, which makes it important to push what it does
to a higher level of abstraction.
  • Loading branch information
scolobb committed Aug 4, 2012
1 parent fab82b6 commit 43a9dc5
Showing 1 changed file with 20 additions and 15 deletions.
35 changes: 20 additions & 15 deletions sympy/categories/diagram_drawing.py
Expand Up @@ -661,17 +661,11 @@ def group_size(group):

return grid

def __init__(self, diagram, groups=None):
premises = DiagramGrid._simplify_morphisms(diagram.premises)
conclusions = DiagramGrid._simplify_morphisms(diagram.conclusions)
merged_morphisms = DiagramGrid._merge_premises_conclusions(
premises, conclusions)

if groups and (groups != diagram.objects):
# Lay out the diagram according to the groups.
self._grid = DiagramGrid._handle_groups(diagram, groups, merged_morphisms)
return

@staticmethod
def _generic_layout(diagram, merged_morphisms):
"""
Produces the generic layout for the supplied diagram.
"""
skeleton = DiagramGrid._build_skeleton(merged_morphisms)

all_objects = diagram.objects
Expand All @@ -684,9 +678,7 @@ def __init__(self, diagram, groups=None):
grid[0, 0] = objects[0]
grid[0, 1] = objects[1]

self._grid = grid

return
return grid

triangles = DiagramGrid._list_triangles(skeleton)
triangles = DiagramGrid._drop_redundant_triangles(triangles, skeleton)
Expand Down Expand Up @@ -729,7 +721,20 @@ def __init__(self, diagram, groups=None):
triangles = DiagramGrid._drop_irrelevant_triangles(
triangles, placed_objects)

self._grid = grid
return grid

def __init__(self, diagram, groups=None):
premises = DiagramGrid._simplify_morphisms(diagram.premises)
conclusions = DiagramGrid._simplify_morphisms(diagram.conclusions)
merged_morphisms = DiagramGrid._merge_premises_conclusions(
premises, conclusions)

if groups and (groups != diagram.objects):
# Lay out the diagram according to the groups.
self._grid = DiagramGrid._handle_groups(diagram, groups, merged_morphisms)
return

self._grid = DiagramGrid._generic_layout(diagram, merged_morphisms)

@property
def width(self):
Expand Down

0 comments on commit 43a9dc5

Please sign in to comment.