@@ -20,11 +20,18 @@ class Shape(Symbolizer):
20
20
"star", "cross", and "x".
21
21
"""
22
22
23
- def __init__ (self , color = None , size = 6 , type = 'circle' ):
23
+ def __init__ (self , color = None , size = 6 , type = 'circle' , opacity = 1.0 , rotation = 0 ):
24
24
Symbolizer .__init__ (self )
25
25
self .color = Color (color ) if color else None
26
26
self .size = Expression (size )
27
27
self .type = type
28
+ self .opacity = Expression (opacity )
29
+ self .rotation = Expression (rotation )
30
+ self ._stroke = None
31
+
32
+ def stroke (self , color = "#000000" , width = 1 , dash = None , cap = None , join = None ):
33
+ self ._stroke = Stroke (color , width , dash , cap , join )
34
+ return self
28
35
29
36
def _prepare (self , rule ):
30
37
syms = util .symbolizers (rule , PointSymbolizer )
@@ -35,15 +42,22 @@ def _apply(self, sym):
35
42
Symbolizer ._apply (self , sym )
36
43
g = util .graphic (sym )
37
44
g .setSize (self .size .expr )
45
+ if self .rotation != None and self .rotation .expr != None :
46
+ g .setRotation (self .rotation .expr )
38
47
g .graphicalSymbols ().clear ()
39
48
g .graphicalSymbols ().add (self ._mark ())
40
49
41
50
def _mark (self ):
42
51
f = self .factory
43
52
mark = f .createMark ()
44
-
45
- mark .setStroke (Stroke (self .color )._stroke ())
46
- mark .setFill (Fill (self .color )._fill ())
53
+ if self ._stroke != None :
54
+ mark .setStroke (self ._stroke ._stroke ())
55
+ else :
56
+ mark .setStroke (Stroke (self .color )._stroke ())
57
+ if self .color != None and self .color .expr != None :
58
+ mark .setFill (Fill (self .color , self .opacity )._fill ())
59
+ else :
60
+ mark .setFill (None )
47
61
mark .setWellKnownName (self .type )
48
62
49
63
return mark
0 commit comments