34
34
35
35
36
36
def hex2color (s ):
37
- "Convert hex string (like html uses, eg, #efefef) to a r,g,b tuple"
38
- return tuple ([int (n , 16 )/ 255.0 for n in (s [1 :3 ], s [3 :5 ], s [5 :7 ])])
37
+ "Convert hex string (like html uses, eg, #efefef) to a r,g,b tuple"
38
+ return tuple ([int (n , 16 )/ 255.0 for n in (s [1 :3 ], s [3 :5 ], s [5 :7 ])])
39
39
40
40
41
41
class RGBA (traits .HasTraits ):
42
- # r,g,b,a in the range 0-1 with default color 0,0,0,1 (black)
43
- r = traits .Range (0. , 1. , 0. )
44
- g = traits .Range (0. , 1. , 0. )
45
- b = traits .Range (0. , 1. , 0. )
46
- a = traits .Range (0. , 1. , 1. )
42
+ # r,g,b,a in the range 0-1 with default color 0,0,0,1 (black)
43
+ r = traits .Range (0. , 1. , 0. )
44
+ g = traits .Range (0. , 1. , 0. )
45
+ b = traits .Range (0. , 1. , 0. )
46
+ a = traits .Range (0. , 1. , 1. )
47
47
48
- def __init__ (self , r = 0. , g = 0. , b = 0. , a = 1. ):
49
- self .r = r
50
- self .g = g
51
- self .b = b
52
- self .a = a
48
+ def __init__ (self , r = 0. , g = 0. , b = 0. , a = 1. ):
49
+ self .r = r
50
+ self .g = g
51
+ self .b = b
52
+ self .a = a
53
53
54
- def __repr__ (self ):
55
- return 'r,g,b,a = (%1.2f, %1.2f, %1.2f, %1.2f)' % \
56
- (self .r , self .g , self .b , self .a )
54
+ def __repr__ (self ):
55
+ return 'r,g,b,a = (%1.2f, %1.2f, %1.2f, %1.2f)' % \
56
+ (self .r , self .g , self .b , self .a )
57
57
58
58
59
59
def tuple_to_rgba (ob , name , val ):
60
- tup = [float (x ) for x in val ]
61
- if len (tup )== 3 :
62
- r ,g ,b = tup
63
- return RGBA (r ,g ,b )
64
- elif len (tup )== 4 :
65
- r ,g ,b ,a = tup
66
- return RGBA (r ,g ,b ,a )
67
- else :
68
- raise ValueError
60
+ tup = [float (x ) for x in val ]
61
+ if len (tup )== 3 :
62
+ r ,g ,b = tup
63
+ return RGBA (r ,g ,b )
64
+ elif len (tup )== 4 :
65
+ r ,g ,b ,a = tup
66
+ return RGBA (r ,g ,b ,a )
67
+ else :
68
+ raise ValueError
69
69
tuple_to_rgba .info = 'a RGB or RGBA tuple of floats'
70
70
71
71
72
72
def hex_to_rgba (ob , name , val ):
73
- rgx = re .compile ('^#[0-9A-Fa-f]{6}$' )
74
-
75
- if not is_string_like (val ):
76
- raise TypeError
77
- if rgx .match (val ) is None :
78
- raise ValueError
79
- r ,g ,b = hex2color (val )
80
- return RGBA (r ,g ,b ,1.0 )
73
+ rgx = re .compile ('^#[0-9A-Fa-f]{6}$' )
74
+
75
+ if not is_string_like (val ):
76
+ raise TypeError
77
+ if rgx .match (val ) is None :
78
+ raise ValueError
79
+ r ,g ,b = hex2color (val )
80
+ return RGBA (r ,g ,b ,1.0 )
81
81
hex_to_rgba .info = 'a hex color string'
82
82
83
83
84
84
def colorname_to_rgba (ob , name , val ):
85
- hex = colors [val .lower ()]
86
- r ,g ,b = hex2color (hex )
87
- return RGBA (r ,g ,b ,1.0 )
85
+ hex = colors [val .lower ()]
86
+ r ,g ,b = hex2color (hex )
87
+ return RGBA (r ,g ,b ,1.0 )
88
88
colorname_to_rgba .info = 'a named color'
89
89
90
90
91
91
def float_to_rgba (ob , name , val ):
92
- val = float (val )
93
- return RGBA (val , val , val , 1. )
92
+ val = float (val )
93
+ return RGBA (val , val , val , 1. )
94
94
float_to_rgba .info = 'a grayscale intensity'
95
95
96
96
@@ -99,12 +99,9 @@ def float_to_rgba(ob, name, val):
99
99
100
100
101
101
def file_exists (ob , name , val ):
102
- fh = file (val , 'r' )
103
- return val
102
+ fh = file (val , 'r' )
103
+ return val
104
104
105
-
106
- def path_exists (ob , name , val ):
107
- os .path .exists (val )
108
105
linestyles = ('-' , '--' , '-.' , ':' , 'steps' , 'None' )
109
106
TICKLEFT , TICKRIGHT , TICKUP , TICKDOWN = range (4 )
110
107
linemarkers = (None , '.' , ',' , 'o' , '^' , 'v' , '<' , '>' , 's' ,
@@ -119,23 +116,23 @@ def path_exists(ob, name, val):
119
116
120
117
121
118
class LineRC (traits .HasTraits ):
122
- linewidth = traits .Float (0.5 )
123
- linestyle = traits .Trait (* linestyles )
124
- color = Color
125
- marker = traits .Trait (* linemarkers )
126
- markerfacecolor = Color
127
- markeredgecolor = Color
128
- markeredgewidth = traits .Float (0.5 )
129
- markersize = traits .Float (6 )
130
- antialiased = flexible_true_trait
131
- data_clipping = flexible_false_trait
119
+ linewidth = traits .Float (0.5 )
120
+ linestyle = traits .Trait (* linestyles )
121
+ color = Color
122
+ marker = traits .Trait (* linemarkers )
123
+ markerfacecolor = Color
124
+ markeredgecolor = Color
125
+ markeredgewidth = traits .Float (0.5 )
126
+ markersize = traits .Float (6 )
127
+ antialiased = flexible_true_trait
128
+ data_clipping = flexible_false_trait
132
129
133
130
134
131
class PatchRC (traits .HasTraits ):
135
- linewidth = traits .Float (1.0 )
136
- facecolor = Color
137
- edgecolor = Color
138
- antialiased = flexible_true_trait
132
+ linewidth = traits .Float (1.0 )
133
+ facecolor = Color
134
+ edgecolor = Color
135
+ antialiased = flexible_true_trait
139
136
140
137
timezones = 'UTC' , 'US/Central' , 'ES/Eastern' # fixme: and many more
141
138
backends = ('GTKAgg' , 'Cairo' , 'GDK' , 'GTK' , 'Agg' ,
@@ -144,51 +141,51 @@ class PatchRC(traits.HasTraits):
144
141
145
142
146
143
class RC (traits .HasTraits ):
147
- backend = traits .Trait (* backends )
148
- interactive = flexible_false_trait
149
- toolbar = traits .Trait ('toolbar2' , 'classic' , None )
150
- timezone = traits .Trait (* timezones )
151
- lines = traits .Trait (LineRC ())
152
- patch = traits .Trait (PatchRC ())
144
+ backend = traits .Trait (* backends )
145
+ interactive = flexible_false_trait
146
+ toolbar = traits .Trait ('toolbar2' , 'classic' , None )
147
+ timezone = traits .Trait (* timezones )
148
+ lines = traits .Trait (LineRC ())
149
+ patch = traits .Trait (PatchRC ())
153
150
154
151
rc = RC ()
155
152
rc .lines .color = 'r'
156
153
if doprint :
157
- print ('RC' )
158
- rc .print_traits ()
159
- print ('RC lines' )
160
- rc .lines .print_traits ()
161
- print ('RC patches' )
162
- rc .patch .print_traits ()
154
+ print ('RC' )
155
+ rc .print_traits ()
156
+ print ('RC lines' )
157
+ rc .lines .print_traits ()
158
+ print ('RC patches' )
159
+ rc .patch .print_traits ()
163
160
164
161
165
162
class Patch (Artist , traits .HasTraits ):
166
- linewidth = traits .Float (0.5 )
167
- facecolor = Color
168
- fc = facecolor
169
- edgecolor = Color
170
- fill = flexible_true_trait
171
-
172
- def __init__ (self ,
173
- edgecolor = None ,
174
- facecolor = None ,
175
- linewidth = None ,
176
- antialiased = None ,
177
- fill = 1 ,
178
- ** kwargs
179
- ):
180
- Artist .__init__ (self )
181
-
182
- if edgecolor is None : edgecolor = rc .patch .edgecolor
183
- if facecolor is None : facecolor = rc .patch .facecolor
184
- if linewidth is None : linewidth = rc .patch .linewidth
185
- if antialiased is None : antialiased = rc .patch .antialiased
186
-
187
- self .edgecolor = edgecolor
188
- self .facecolor = facecolor
189
- self .linewidth = linewidth
190
- self .antialiased = antialiased
191
- self .fill = fill
163
+ linewidth = traits .Float (0.5 )
164
+ facecolor = Color
165
+ fc = facecolor
166
+ edgecolor = Color
167
+ fill = flexible_true_trait
168
+
169
+ def __init__ (self ,
170
+ edgecolor = None ,
171
+ facecolor = None ,
172
+ linewidth = None ,
173
+ antialiased = None ,
174
+ fill = 1 ,
175
+ ** kwargs
176
+ ):
177
+ Artist .__init__ (self )
178
+
179
+ if edgecolor is None : edgecolor = rc .patch .edgecolor
180
+ if facecolor is None : facecolor = rc .patch .facecolor
181
+ if linewidth is None : linewidth = rc .patch .linewidth
182
+ if antialiased is None : antialiased = rc .patch .antialiased
183
+
184
+ self .edgecolor = edgecolor
185
+ self .facecolor = facecolor
186
+ self .linewidth = linewidth
187
+ self .antialiased = antialiased
188
+ self .fill = fill
192
189
193
190
194
191
p = Patch ()
@@ -202,6 +199,6 @@ def __init__(self,
202
199
if p .fill_ : print ('fill' )
203
200
else : print ('no fill' )
204
201
if doprint :
205
- print ()
206
- print ('Patch' )
207
- p .print_traits ()
202
+ print ()
203
+ print ('Patch' )
204
+ p .print_traits ()
0 commit comments