@@ -236,7 +236,7 @@ def __init__(self, marker=_unset, fillstyle=None,
236236
237237 fillstyle : str, default: :rc:`markers.fillstyle`
238238 One of 'full', 'left', 'right', 'bottom', 'top', 'none'.
239-
239+
240240 transform : Affine2D, default: None
241241 User supplied transformation that will be combined with the
242242 native transformation of selected marker.
@@ -319,10 +319,10 @@ def _set_fillstyle(self, fillstyle):
319319 self ._recache ()
320320
321321 def get_joinstyle (self ):
322- return self ._joinstyle
322+ return self ._user_joinstyle or self . _joinstyle
323323
324324 def get_capstyle (self ):
325- return self ._capstyle
325+ return self ._user_capstyle or self . _capstyle
326326
327327 def get_marker (self ):
328328 return self ._marker
@@ -414,6 +414,51 @@ def get_alt_transform(self):
414414 def get_snap_threshold (self ):
415415 return self ._snap_threshold
416416
417+ def get_user_transform (self ):
418+ """Return user supplied part of marker transform."""
419+ if self ._user_transform is not None :
420+ return self ._user_transform .frozen ()
421+
422+ def transformed (self , transform :Affine2D ):
423+ """
424+ Return new marker with combined transformation.
425+
426+ Parameters
427+ ----------
428+ transform : Affine2D, default: None
429+ - transform will be combined with current user supplied transform.
430+ """
431+ new_marker = MarkerStyle (self )
432+ if new_marker ._user_transform is not None :
433+ new_marker ._user_transform += transform
434+ else :
435+ new_marker ._user_transform = transform
436+ return new_marker
437+
438+ def rotated (self , deg = None , rad = None ):
439+ """
440+ Return new marker rotated by specified angle.
441+
442+ Parameters
443+ ----------
444+ deg : float, default: None
445+
446+ rad : float, default: None
447+ """
448+ if not ((deg is None ) ^ (rad is None )):
449+ raise Exception ("Only one of deg or rad shall be used." )
450+
451+ _transform = self ._user_transform or Affine2D ()
452+
453+ if deg is not None :
454+ _transform = _transform .rotate_deg (deg )
455+
456+ if rad is not None :
457+ _transform = _transform .rotate (rad )
458+
459+ new_marker = MarkerStyle (self )
460+ new_marker ._user_transform = _transform
461+
417462 def _set_nothing (self ):
418463 self ._filled = False
419464
0 commit comments