Now all dependencies on GUI library are in xdot.ui
... | ... |
@@ -16,15 +16,9 @@ |
16 | 16 |
import colorsys |
17 | 17 |
import sys |
18 | 18 |
|
19 |
-import gi |
|
20 |
-gi.require_version('Gtk', '3.0') |
|
21 |
-gi.require_version('PangoCairo', '1.0') |
|
22 |
- |
|
23 |
-from gi.repository import Gdk |
|
24 |
- |
|
25 | 19 |
from .lexer import ParseError, DotLexer |
26 | 20 |
|
27 |
-from ..ui.colours import brewer_colors |
|
21 |
+from ..ui.colours import lookup_color |
|
28 | 22 |
from ..ui.pen import Pen |
29 | 23 |
from ..ui import elements |
30 | 24 |
|
... | ... |
@@ -166,36 +160,7 @@ class XDotAttrParser: |
166 | 160 |
sys.stderr.write('warning: color gradients not supported yet\n') |
167 | 161 |
return None |
168 | 162 |
else: |
169 |
- return self.lookup_color(c) |
|
170 |
- |
|
171 |
- def lookup_color(self, c): |
|
172 |
- try: |
|
173 |
- color = Gdk.color_parse(c) |
|
174 |
- except ValueError: |
|
175 |
- pass |
|
176 |
- else: |
|
177 |
- s = 1.0/65535.0 |
|
178 |
- r = color.red*s |
|
179 |
- g = color.green*s |
|
180 |
- b = color.blue*s |
|
181 |
- a = 1.0 |
|
182 |
- return r, g, b, a |
|
183 |
- |
|
184 |
- try: |
|
185 |
- dummy, scheme, index = c.split('/') |
|
186 |
- r, g, b = brewer_colors[scheme][int(index)] |
|
187 |
- except (ValueError, KeyError): |
|
188 |
- pass |
|
189 |
- else: |
|
190 |
- s = 1.0/255.0 |
|
191 |
- r = r*s |
|
192 |
- g = g*s |
|
193 |
- b = b*s |
|
194 |
- a = 1.0 |
|
195 |
- return r, g, b, a |
|
196 |
- |
|
197 |
- sys.stderr.write("warning: unknown color '%s'\n" % c) |
|
198 |
- return None |
|
163 |
+ return lookup_color(c) |
|
199 | 164 |
|
200 | 165 |
def parse(self): |
201 | 166 |
s = self |
... | ... |
@@ -303,3 +303,46 @@ brewer_colors = { |
303 | 303 |
'ylorrd7': [(255, 255, 178), (254, 217, 118), (254, 178, 76), (253, 141, 60), (252, 78, 42), (227, 26, 28), (177, 0, 38)], |
304 | 304 |
'ylorrd8': [(255, 255, 204), (255, 237, 160), (254, 217, 118), (254, 178, 76), (253, 141, 60), (252, 78, 42), (227, 26, 28), (177, 0, 38)], |
305 | 305 |
} |
306 |
+ |
|
307 |
+ |
|
308 |
+def lookup_color(c): |
|
309 |
+ """Return RGBA values of colour c |
|
310 |
+ |
|
311 |
+ c should be either an X11 colour or a brewer colour set and index |
|
312 |
+ e.g. "navajowhite", "greens3/2" |
|
313 |
+ |
|
314 |
+ """ |
|
315 |
+ import sys |
|
316 |
+ import gi |
|
317 |
+ gi.require_version('Gtk', '3.0') |
|
318 |
+ gi.require_version('PangoCairo', '1.0') |
|
319 |
+ |
|
320 |
+ from gi.repository import Gdk |
|
321 |
+ |
|
322 |
+ try: |
|
323 |
+ color = Gdk.color_parse(c) |
|
324 |
+ except ValueError: |
|
325 |
+ pass |
|
326 |
+ else: |
|
327 |
+ s = 1.0/65535.0 |
|
328 |
+ r = color.red*s |
|
329 |
+ g = color.green*s |
|
330 |
+ b = color.blue*s |
|
331 |
+ a = 1.0 |
|
332 |
+ return r, g, b, a |
|
333 |
+ |
|
334 |
+ try: |
|
335 |
+ dummy, scheme, index = c.split('/') |
|
336 |
+ r, g, b = brewer_colors[scheme][int(index)] |
|
337 |
+ except (ValueError, KeyError): |
|
338 |
+ pass |
|
339 |
+ else: |
|
340 |
+ s = 1.0/255.0 |
|
341 |
+ r = r*s |
|
342 |
+ g = g*s |
|
343 |
+ b = b*s |
|
344 |
+ a = 1.0 |
|
345 |
+ return r, g, b, a |
|
346 |
+ |
|
347 |
+ sys.stderr.write("warning: unknown color '%s'\n" % c) |
|
348 |
+ return None |