Skip to content
This repository has been archived by the owner on Jan 30, 2023. It is now read-only.

Commit

Permalink
Trac #26508 tbc. move XY param. into tikz options
Browse files Browse the repository at this point in the history
  • Loading branch information
boussica committed Mar 21, 2019
1 parent e00c708 commit 74f7a42
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 24 deletions.
30 changes: 15 additions & 15 deletions src/sage/combinat/parallelogram_polyomino.py
Original file line number Diff line number Diff line change
Expand Up @@ -2218,13 +2218,13 @@ def _to_tikz_diagram(self):
(3.000000, 1.000000);
"""
tikz_options = self.get_tikz_options()
grid_width = self.width() + 1
grid_height = self.height() + 1
drawing_tool = TikzPainter(
tikz_options,
XY=lambda v: [v[0], grid_height-1-v[1]]
)
tikz_options = deepcopy(self.get_tikz_options())
tikz_options['coordinate_transformation'] = lambda v: [
v[0], grid_height-1-v[1]
]
drawing_tool = TikzPainter(tikz_options)
res = ""
if self.size() == 1:
res += drawing_tool.draw_line([0, 0], [1, 0])
Expand Down Expand Up @@ -2315,12 +2315,12 @@ def _to_tikz_bounce(self, directions=[0, 1]):
(4.000000, 0.000000);
"""
res = ""
tikz_options = self.get_tikz_options()
grid_height = self.height() + 1
drawing_tool = TikzPainter(
tikz_options,
XY=lambda v: [v[0], grid_height-1-v[1]]
)
tikz_options = deepcopy( self.get_tikz_options() )
tikz_options['coordinate_transformation'] = lambda v: [
v[0], grid_height-1-v[1]
]
drawing_tool = TikzPainter(tikz_options)

def draw_bounce(direction, color):
r"""
Expand Down Expand Up @@ -2413,14 +2413,14 @@ def _to_tikz_tree(self):
\filldraw[color=black] (0.500000, 3.500000) circle (3.5pt);
"""
res = ""
tikz_options = self.get_tikz_options()
if self.size() == 1:
return res
grid_height = self.height() + 1
drawing_tool = TikzPainter(
tikz_options,
XY=lambda v: [v[0] + .5, grid_height-1-v[1] - .5]
)
tikz_options = deepcopy(self.get_tikz_options())
tikz_options['coordinate_transformation'] = lambda v: [
v[0] + .5, grid_height-1-v[1] - .5
]
drawing_tool = TikzPainter(tikz_options)
for node in self.get_BS_nodes():
res += drawing_tool.draw_point([node[1], node[0]])
res += drawing_tool.draw_point([0, 0])
Expand Down
31 changes: 22 additions & 9 deletions src/sage/misc/tikz.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,22 +40,30 @@ class TikzPainter:
(-1.000000, -1.000000);'
sage: fct = lambda vec: [2*vec[0], vec[1]]
sage: dt = TikzPainter(options=None, XY=fct)
sage: import copy
sage: opt = copy.deepcopy(TikzPainter.default_options)
sage: opt['coordinate_transformation'] = fct
sage: dt = TikzPainter(options=opt)
sage: dt.draw_line([1, 1], [-1, -1])
u'\n \\draw[color=black, line width=1] (2.000000, 1.000000) --
(-2.000000, -1.000000);'
sage: import copy
sage: opt = copy.deepcopy(TikzPainter.default_options)
sage: opt['mirror'] = [0,1]
sage: dt = TikzPainter(opt)
sage: dt.draw_line([1, 1], [-1, -1])
u'\n \\draw[color=black, line width=1] (-1.000000, 1.000000) --
(1.000000, -1.000000);'
"""
class identity_transformation:
def __call__(self,v):
return v
def __repr__(self):
return "lambda v : v"
default_options = dict(
scale=1, line_size=1, point_size=3.5, color_line='black',
color_point='black', translation=[0, 0], rotation=0, mirror=None
color_point='black', translation=[0, 0], rotation=0, mirror=None,
coordinate_transformation=identity_transformation()
)
r"""
This is the default TIKZ options.
Expand All @@ -64,17 +72,14 @@ class TikzPainter:
TIKZ code generation.
"""

def __init__(self, options=None, XY=lambda v: v):
def __init__(self, options=None):
r"""
Construct a drawing tools to produce some TIKZ drawing.
INPUTS:
- ``options`` -- drawing options
- ``XY`` -- A user function to convert vector in other vector.
(default : identity function)
EXAMPLES::
sage: dt = TikzPainter()
Expand All @@ -99,19 +104,24 @@ def __init__(self, options=None, XY=lambda v: v):
sage: TikzPainter.default_options
{'color_line': u'black',
'color_point': u'black',
'coordinate_transformation': lambda v : v,
'line_size': 1,
'mirror': None,
'point_size': 3.5,
'rotation': 0,
'scale': 1,
'translation': [0, 0]}
"""
self._XY = lambda v: XY([float(v[0]), float(v[1])])
def get_option( key, options ):
if options is None or not key in options :
return TikzPainter.default_options[key]
else:
return options[key]
ct = get_option('coordinate_transformation', options)
def XY(v):
v = ct(v)
return [float(v[0]), float(v[1])]
self._XY = XY
self._translation = get_option('translation', options)
self._mirror = get_option('mirror', options)
self._rotation = get_option('rotation', options)
Expand Down Expand Up @@ -147,7 +157,10 @@ def XY(self, v):
[1.0, 1.0]
sage: fct = lambda vec: [2*vec[0], vec[1]]
sage: dt = TikzPainter(options=None, XY=fct)
sage: import copy
sage: opt = copy.deepcopy(TikzPainter.default_options)
sage: opt['coordinate_transformation'] = fct
sage: dt = TikzPainter(options=opt)
sage: dt.XY([1, 1])
[2.0, 1.0]
Expand Down

0 comments on commit 74f7a42

Please sign in to comment.