@@ -101,7 +101,8 @@ class MarkerStyle:
101101filled_markers = (
102102'o' ,'v' ,'^' ,'<' ,'>' ,'8' ,'s' ,'p' ,'*' ,'h' ,'H' ,'D' ,'d' )
103103
104- fillstyles = ('full' ,'left' ,'right' ,'bottom' ,'top' )
104+ fillstyles = ('full' ,'left' ,'right' ,'bottom' ,'top' ,'none' )
105+ _half_fillstyles = ('left' ,'right' ,'bottom' ,'top' )
105106
106107# TODO: Is this ever used as a non-constant?
107108_point_size_reduction = 0.5
@@ -244,11 +245,16 @@ def _set_mathtext_path(self):
244245self ._path = text
245246self ._snap = False
246247
248+ def _half_fill (self ):
249+ fs = self .get_fillstyle ()
250+ result = fs in self ._half_fillstyles
251+ return result
252+
247253def _set_circle (self ,reduction = 1.0 ):
248254self ._transform = Affine2D ().scale (0.5 * reduction )
249255self ._snap_threshold = 3.0
250256fs = self .get_fillstyle ()
251- if fs == 'full' :
257+ if not self . _half_fill () :
252258self ._path = Path .unit_circle ()
253259else :
254260# build a right-half circle
@@ -290,7 +296,7 @@ def _set_triangle(self, rot, skip):
290296self ._snap_threshold = 5.0
291297fs = self .get_fillstyle ()
292298
293- if fs == 'full' :
299+ if not self . _half_fill () :
294300self ._path = self ._triangle_path
295301else :
296302mpaths = [self ._triangle_path_u ,
@@ -329,7 +335,7 @@ def _set_square(self):
329335self ._transform = Affine2D ().translate (- 0.5 ,- 0.5 )
330336self ._snap_threshold = 2.0
331337fs = self .get_fillstyle ()
332- if fs == 'full' :
338+ if not self . _half_fill () :
333339self ._path = Path .unit_rectangle ()
334340else :
335341# build a bottom filled square out of two rectangles, one
@@ -349,7 +355,7 @@ def _set_diamond(self):
349355self ._transform = Affine2D ().translate (- 0.5 ,- 0.5 ).rotate_deg (45 )
350356self ._snap_threshold = 5.0
351357fs = self .get_fillstyle ()
352- if fs == 'full' :
358+ if not self . _half_fill () :
353359self ._path = Path .unit_rectangle ()
354360else :
355361self ._path = Path ([[0.0 ,0.0 ], [1.0 ,0.0 ], [1.0 ,1.0 ], [0.0 ,0.0 ]])
@@ -374,7 +380,7 @@ def _set_pentagon(self):
374380polypath = Path .unit_regular_polygon (5 )
375381fs = self .get_fillstyle ()
376382
377- if fs == 'full' :
383+ if not self . _half_fill () :
378384self ._path = polypath
379385else :
380386verts = polypath .vertices
@@ -404,7 +410,7 @@ def _set_star(self):
404410fs = self .get_fillstyle ()
405411polypath = Path .unit_regular_star (5 ,innerCircle = 0.381966 )
406412
407- if fs == 'full' :
413+ if not self . _half_fill () :
408414self ._path = polypath
409415else :
410416verts = polypath .vertices
@@ -433,7 +439,7 @@ def _set_hexagon1(self):
433439fs = self .get_fillstyle ()
434440polypath = Path .unit_regular_polygon (6 )
435441
436- if fs == 'full' :
442+ if not self . _half_fill () :
437443self ._path = polypath
438444else :
439445verts = polypath .vertices
@@ -465,7 +471,7 @@ def _set_hexagon2(self):
465471fs = self .get_fillstyle ()
466472polypath = Path .unit_regular_polygon (6 )
467473
468- if fs == 'full' :
474+ if not self . _half_fill () :
469475self ._path = polypath
470476else :
471477verts = polypath .vertices
@@ -497,7 +503,7 @@ def _set_octagon(self):
497503fs = self .get_fillstyle ()
498504polypath = Path .unit_regular_polygon (8 )
499505
500- if fs == 'full' :
506+ if not self . _half_fill () :
501507self ._transform .rotate_deg (22.5 )
502508self ._path = polypath
503509else :