File Coverage

lib/Graph/Easy/Attributes.pm
Criterion Covered Total %
statement 576 620 92.9
branch 382 488 78.2
condition 155 222 69.8
subroutine 45 49 91.8
pod 20 20 100.0
total 1178 1399 84.2


line stmt bran cond sub pod time code
1             #############################################################################
2             # Define and check attributes for a Graph::Easy textual description.
3             #
4             #############################################################################
5              
6             package Graph::Easy::Attributes;
7              
8             $VERSION = '0.76';
9              
10             package Graph::Easy;
11              
12 48     48   26638 use strict;
  48         53  
  48         1078  
13 48     48   154 use warnings;
  48         59  
  48         1066  
14 48     48   19679 use utf8; # for examples like "Fähre"
  48         331  
  48         247  
15              
16             # to make it easier to remember the attribute names:
17             my $att_aliases = {
18             'auto-label' => 'autolabel',
19             'auto-link' => 'autolink',
20             'auto-title' => 'autotitle',
21             'arrow-style' => 'arrowstyle',
22             'arrow-shape' => 'arrowshape',
23             'border-color' => 'bordercolor',
24             'border-style' => 'borderstyle',
25             'border-width' => 'borderwidth',
26             'font-size' => 'fontsize',
27             'label-color' => 'labelcolor',
28             'label-pos' => 'labelpos',
29             'text-style' => 'textstyle',
30             'text-wrap' => 'textwrap',
31             'point-style' => 'pointstyle',
32             'point-shape' => 'pointshape',
33             };
34              
35 96     96   15488 sub _att_aliases { $att_aliases; }
36              
37             #############################################################################
38             # color handling
39              
40             # The W3C/SVG/CSS color scheme
41              
42             my $color_names = {
43             w3c =>
44             {
45             inherit => 'inherit',
46             aliceblue => '#f0f8ff',
47             antiquewhite => '#faebd7',
48             aquamarine => '#7fffd4',
49             aqua => '#00ffff',
50             azure => '#f0ffff',
51             beige => '#f5f5dc',
52             bisque => '#ffe4c4',
53             black => '#000000',
54             blanchedalmond => '#ffebcd',
55             blue => '#0000ff',
56             blueviolet => '#8a2be2',
57             brown => '#a52a2a',
58             burlywood => '#deb887',
59             cadetblue => '#5f9ea0',
60             chartreuse => '#7fff00',
61             chocolate => '#d2691e',
62             coral => '#ff7f50',
63             cornflowerblue => '#6495ed',
64             cornsilk => '#fff8dc',
65             crimson => '#dc143c',
66             cyan => '#00ffff',
67             darkblue => '#00008b',
68             darkcyan => '#008b8b',
69             darkgoldenrod => '#b8860b',
70             darkgray => '#a9a9a9',
71             darkgreen => '#006400',
72             darkgrey => '#a9a9a9',
73             darkkhaki => '#bdb76b',
74             darkmagenta => '#8b008b',
75             darkolivegreen => '#556b2f',
76             darkorange => '#ff8c00',
77             darkorchid => '#9932cc',
78             darkred => '#8b0000',
79             darksalmon => '#e9967a',
80             darkseagreen => '#8fbc8f',
81             darkslateblue => '#483d8b',
82             darkslategray => '#2f4f4f',
83             darkslategrey => '#2f4f4f',
84             darkturquoise => '#00ced1',
85             darkviolet => '#9400d3',
86             deeppink => '#ff1493',
87             deepskyblue => '#00bfff',
88             dimgray => '#696969',
89             dodgerblue => '#1e90ff',
90             firebrick => '#b22222',
91             floralwhite => '#fffaf0',
92             forestgreen => '#228b22',
93             fuchsia => '#ff00ff',
94             gainsboro => '#dcdcdc',
95             ghostwhite => '#f8f8ff',
96             goldenrod => '#daa520',
97             gold => '#ffd700',
98             gray => '#808080',
99             green => '#008000',
100             greenyellow => '#adff2f',
101             grey => '#808080',
102             honeydew => '#f0fff0',
103             hotpink => '#ff69b4',
104             indianred => '#cd5c5c',
105             indigo => '#4b0082',
106             ivory => '#fffff0',
107             khaki => '#f0e68c',
108             lavenderblush => '#fff0f5',
109             lavender => '#e6e6fa',
110             lawngreen => '#7cfc00',
111             lemonchiffon => '#fffacd',
112             lightblue => '#add8e6',
113             lightcoral => '#f08080',
114             lightcyan => '#e0ffff',
115             lightgoldenrodyellow => '#fafad2',
116             lightgray => '#d3d3d3',
117             lightgreen => '#90ee90',
118             lightgrey => '#d3d3d3',
119             lightpink => '#ffb6c1',
120             lightsalmon => '#ffa07a',
121             lightseagreen => '#20b2aa',
122             lightskyblue => '#87cefa',
123             lightslategray => '#778899',
124             lightslategrey => '#778899',
125             lightsteelblue => '#b0c4de',
126             lightyellow => '#ffffe0',
127             limegreen => '#32cd32',
128             lime => '#00ff00',
129             linen => '#faf0e6',
130             magenta => '#ff00ff',
131             maroon => '#800000',
132             mediumaquamarine => '#66cdaa',
133             mediumblue => '#0000cd',
134             mediumorchid => '#ba55d3',
135             mediumpurple => '#9370db',
136             mediumseagreen => '#3cb371',
137             mediumslateblue => '#7b68ee',
138             mediumspringgreen => '#00fa9a',
139             mediumturquoise => '#48d1cc',
140             mediumvioletred => '#c71585',
141             midnightblue => '#191970',
142             mintcream => '#f5fffa',
143             mistyrose => '#ffe4e1',
144             moccasin => '#ffe4b5',
145             navajowhite => '#ffdead',
146             navy => '#000080',
147             oldlace => '#fdf5e6',
148             olivedrab => '#6b8e23',
149             olive => '#808000',
150             orangered => '#ff4500',
151             orange => '#ffa500',
152             orchid => '#da70d6',
153             palegoldenrod => '#eee8aa',
154             palegreen => '#98fb98',
155             paleturquoise => '#afeeee',
156             palevioletred => '#db7093',
157             papayawhip => '#ffefd5',
158             peachpuff => '#ffdab9',
159             peru => '#cd853f',
160             pink => '#ffc0cb',
161             plum => '#dda0dd',
162             powderblue => '#b0e0e6',
163             purple => '#800080',
164             red => '#ff0000',
165             rosybrown => '#bc8f8f',
166             royalblue => '#4169e1',
167             saddlebrown => '#8b4513',
168             salmon => '#fa8072',
169             sandybrown => '#f4a460',
170             seagreen => '#2e8b57',
171             seashell => '#fff5ee',
172             sienna => '#a0522d',
173             silver => '#c0c0c0',
174             skyblue => '#87ceeb',
175             slateblue => '#6a5acd',
176             slategray => '#708090',
177             slategrey => '#708090',
178             snow => '#fffafa',
179             springgreen => '#00ff7f',
180             steelblue => '#4682b4',
181             tan => '#d2b48c',
182             teal => '#008080',
183             thistle => '#d8bfd8',
184             tomato => '#ff6347',
185             turquoise => '#40e0d0',
186             violet => '#ee82ee',
187             wheat => '#f5deb3',
188             white => '#ffffff',
189             whitesmoke => '#f5f5f5',
190             yellowgreen => '#9acd32',
191             yellow => '#ffff00',
192             },
193              
194             x11 => {
195             inherit => 'inherit',
196             aliceblue => '#f0f8ff',
197             antiquewhite => '#faebd7',
198             antiquewhite1 => '#ffefdb',
199             antiquewhite2 => '#eedfcc',
200             antiquewhite3 => '#cdc0b0',
201             antiquewhite4 => '#8b8378',
202             aquamarine => '#7fffd4',
203             aquamarine1 => '#7fffd4',
204             aquamarine2 => '#76eec6',
205             aquamarine3 => '#66cdaa',
206             aquamarine4 => '#458b74',
207             azure => '#f0ffff',
208             azure1 => '#f0ffff',
209             azure2 => '#e0eeee',
210             azure3 => '#c1cdcd',
211             azure4 => '#838b8b',
212             beige => '#f5f5dc',
213             bisque => '#ffe4c4',
214             bisque1 => '#ffe4c4',
215             bisque2 => '#eed5b7',
216             bisque3 => '#cdb79e',
217             bisque4 => '#8b7d6b',
218             black => '#000000',
219             blanchedalmond => '#ffebcd',
220             blue => '#0000ff',
221             blue1 => '#0000ff',
222             blue2 => '#0000ee',
223             blue3 => '#0000cd',
224             blue4 => '#00008b',
225             blueviolet => '#8a2be2',
226             brown => '#a52a2a',
227             brown1 => '#ff4040',
228             brown2 => '#ee3b3b',
229             brown3 => '#cd3333',
230             brown4 => '#8b2323',
231             burlywood => '#deb887',
232             burlywood1 => '#ffd39b',
233             burlywood2 => '#eec591',
234             burlywood3 => '#cdaa7d',
235             burlywood4 => '#8b7355',
236             cadetblue => '#5f9ea0',
237             cadetblue1 => '#98f5ff',
238             cadetblue2 => '#8ee5ee',
239             cadetblue3 => '#7ac5cd',
240             cadetblue4 => '#53868b',
241             chartreuse => '#7fff00',
242             chartreuse1 => '#7fff00',
243             chartreuse2 => '#76ee00',
244             chartreuse3 => '#66cd00',
245             chartreuse4 => '#458b00',
246             chocolate => '#d2691e',
247             chocolate1 => '#ff7f24',
248             chocolate2 => '#ee7621',
249             chocolate3 => '#cd661d',
250             chocolate4 => '#8b4513',
251             coral => '#ff7f50',
252             coral1 => '#ff7256',
253             coral2 => '#ee6a50',
254             coral3 => '#cd5b45',
255             coral4 => '#8b3e2f',
256             cornflowerblue => '#6495ed',
257             cornsilk => '#fff8dc',
258             cornsilk1 => '#fff8dc',
259             cornsilk2 => '#eee8cd',
260             cornsilk3 => '#cdc8b1',
261             cornsilk4 => '#8b8878',
262             crimson => '#dc143c',
263             cyan => '#00ffff',
264             cyan1 => '#00ffff',
265             cyan2 => '#00eeee',
266             cyan3 => '#00cdcd',
267             cyan4 => '#008b8b',
268             darkgoldenrod => '#b8860b',
269             darkgoldenrod1 => '#ffb90f',
270             darkgoldenrod2 => '#eead0e',
271             darkgoldenrod3 => '#cd950c',
272             darkgoldenrod4 => '#8b6508',
273             darkgreen => '#006400',
274             darkkhaki => '#bdb76b',
275             darkolivegreen => '#556b2f',
276             darkolivegreen1 => '#caff70',
277             darkolivegreen2 => '#bcee68',
278             darkolivegreen3 => '#a2cd5a',
279             darkolivegreen4 => '#6e8b3d',
280             darkorange => '#ff8c00',
281             darkorange1 => '#ff7f00',
282             darkorange2 => '#ee7600',
283             darkorange3 => '#cd6600',
284             darkorange4 => '#8b4500',
285             darkorchid => '#9932cc',
286             darkorchid1 => '#bf3eff',
287             darkorchid2 => '#b23aee',
288             darkorchid3 => '#9a32cd',
289             darkorchid4 => '#68228b',
290             darksalmon => '#e9967a',
291             darkseagreen => '#8fbc8f',
292             darkseagreen1 => '#c1ffc1',
293             darkseagreen2 => '#b4eeb4',
294             darkseagreen3 => '#9bcd9b',
295             darkseagreen4 => '#698b69',
296             darkslateblue => '#483d8b',
297             darkslategray => '#2f4f4f',
298             darkslategray1 => '#97ffff',
299             darkslategray2 => '#8deeee',
300             darkslategray3 => '#79cdcd',
301             darkslategray4 => '#528b8b',
302             darkslategrey => '#2f4f4f',
303             darkturquoise => '#00ced1',
304             darkviolet => '#9400d3',
305             deeppink => '#ff1493',
306             deeppink1 => '#ff1493',
307             deeppink2 => '#ee1289',
308             deeppink3 => '#cd1076',
309             deeppink4 => '#8b0a50',
310             deepskyblue => '#00bfff',
311             deepskyblue1 => '#00bfff',
312             deepskyblue2 => '#00b2ee',
313             deepskyblue3 => '#009acd',
314             deepskyblue4 => '#00688b',
315             dimgray => '#696969',
316             dimgrey => '#696969',
317             dodgerblue => '#1e90ff',
318             dodgerblue1 => '#1e90ff',
319             dodgerblue2 => '#1c86ee',
320             dodgerblue3 => '#1874cd',
321             dodgerblue4 => '#104e8b',
322             firebrick => '#b22222',
323             firebrick1 => '#ff3030',
324             firebrick2 => '#ee2c2c',
325             firebrick3 => '#cd2626',
326             firebrick4 => '#8b1a1a',
327             floralwhite => '#fffaf0',
328             forestgreen => '#228b22',
329             gainsboro => '#dcdcdc',
330             ghostwhite => '#f8f8ff',
331             gold => '#ffd700',
332             gold1 => '#ffd700',
333             gold2 => '#eec900',
334             gold3 => '#cdad00',
335             gold4 => '#8b7500',
336             goldenrod => '#daa520',
337             goldenrod1 => '#ffc125',
338             goldenrod2 => '#eeb422',
339             goldenrod3 => '#cd9b1d',
340             goldenrod4 => '#8b6914',
341             gray => '#c0c0c0',
342             gray0 => '#000000',
343             gray1 => '#030303',
344             gray2 => '#050505',
345             gray3 => '#080808',
346             gray4 => '#0a0a0a',
347             gray5 => '#0d0d0d',
348             gray6 => '#0f0f0f',
349             gray7 => '#121212',
350             gray8 => '#141414',
351             gray9 => '#171717',
352             gray10 => '#1a1a1a',
353             gray11 => '#1c1c1c',
354             gray12 => '#1f1f1f',
355             gray13 => '#212121',
356             gray14 => '#242424',
357             gray15 => '#262626',
358             gray16 => '#292929',
359             gray17 => '#2b2b2b',
360             gray18 => '#2e2e2e',
361             gray19 => '#303030',
362             gray20 => '#333333',
363             gray21 => '#363636',
364             gray22 => '#383838',
365             gray23 => '#3b3b3b',
366             gray24 => '#3d3d3d',
367             gray25 => '#404040',
368             gray26 => '#424242',
369             gray27 => '#454545',
370             gray28 => '#474747',
371             gray29 => '#4a4a4a',
372             gray30 => '#4d4d4d',
373             gray31 => '#4f4f4f',
374             gray32 => '#525252',
375             gray33 => '#545454',
376             gray34 => '#575757',
377             gray35 => '#595959',
378             gray36 => '#5c5c5c',
379             gray37 => '#5e5e5e',
380             gray38 => '#616161',
381             gray39 => '#636363',
382             gray40 => '#666666',
383             gray41 => '#696969',
384             gray42 => '#6b6b6b',
385             gray43 => '#6e6e6e',
386             gray44 => '#707070',
387             gray45 => '#737373',
388             gray46 => '#757575',
389             gray47 => '#787878',
390             gray48 => '#7a7a7a',
391             gray49 => '#7d7d7d',
392             gray50 => '#7f7f7f',
393             gray51 => '#828282',
394             gray52 => '#858585',
395             gray53 => '#878787',
396             gray54 => '#8a8a8a',
397             gray55 => '#8c8c8c',
398             gray56 => '#8f8f8f',
399             gray57 => '#919191',
400             gray58 => '#949494',
401             gray59 => '#969696',
402             gray60 => '#999999',
403             gray61 => '#9c9c9c',
404             gray62 => '#9e9e9e',
405             gray63 => '#a1a1a1',
406             gray64 => '#a3a3a3',
407             gray65 => '#a6a6a6',
408             gray66 => '#a8a8a8',
409             gray67 => '#ababab',
410             gray68 => '#adadad',
411             gray69 => '#b0b0b0',
412             gray70 => '#b3b3b3',
413             gray71 => '#b5b5b5',
414             gray72 => '#b8b8b8',
415             gray73 => '#bababa',
416             gray74 => '#bdbdbd',
417             gray75 => '#bfbfbf',
418             gray76 => '#c2c2c2',
419             gray77 => '#c4c4c4',
420             gray78 => '#c7c7c7',
421             gray79 => '#c9c9c9',
422             gray80 => '#cccccc',
423             gray81 => '#cfcfcf',
424             gray82 => '#d1d1d1',
425             gray83 => '#d4d4d4',
426             gray84 => '#d6d6d6',
427             gray85 => '#d9d9d9',
428             gray86 => '#dbdbdb',
429             gray87 => '#dedede',
430             gray88 => '#e0e0e0',
431             gray89 => '#e3e3e3',
432             gray90 => '#e5e5e5',
433             gray91 => '#e8e8e8',
434             gray92 => '#ebebeb',
435             gray93 => '#ededed',
436             gray94 => '#f0f0f0',
437             gray95 => '#f2f2f2',
438             gray96 => '#f5f5f5',
439             gray97 => '#f7f7f7',
440             gray98 => '#fafafa',
441             gray99 => '#fcfcfc',
442             gray100 => '#ffffff',
443             green => '#00ff00',
444             green1 => '#00ff00',
445             green2 => '#00ee00',
446             green3 => '#00cd00',
447             green4 => '#008b00',
448             greenyellow => '#adff2f',
449             grey => '#c0c0c0',
450             grey0 => '#000000',
451             grey1 => '#030303',
452             grey2 => '#050505',
453             grey3 => '#080808',
454             grey4 => '#0a0a0a',
455             grey5 => '#0d0d0d',
456             grey6 => '#0f0f0f',
457             grey7 => '#121212',
458             grey8 => '#141414',
459             grey9 => '#171717',
460             grey10 => '#1a1a1a',
461             grey11 => '#1c1c1c',
462             grey12 => '#1f1f1f',
463             grey13 => '#212121',
464             grey14 => '#242424',
465             grey15 => '#262626',
466             grey16 => '#292929',
467             grey17 => '#2b2b2b',
468             grey18 => '#2e2e2e',
469             grey19 => '#303030',
470             grey20 => '#333333',
471             grey21 => '#363636',
472             grey22 => '#383838',
473             grey23 => '#3b3b3b',
474             grey24 => '#3d3d3d',
475             grey25 => '#404040',
476             grey26 => '#424242',
477             grey27 => '#454545',
478             grey28 => '#474747',
479             grey29 => '#4a4a4a',
480             grey30 => '#4d4d4d',
481             grey31 => '#4f4f4f',
482             grey32 => '#525252',
483             grey33 => '#545454',
484             grey34 => '#575757',
485             grey35 => '#595959',
486             grey36 => '#5c5c5c',
487             grey37 => '#5e5e5e',
488             grey38 => '#616161',
489             grey39 => '#636363',
490             grey40 => '#666666',
491             grey41 => '#696969',
492             grey42 => '#6b6b6b',
493             grey43 => '#6e6e6e',
494             grey44 => '#707070',
495             grey45 => '#737373',
496             grey46 => '#757575',
497             grey47 => '#787878',
498             grey48 => '#7a7a7a',
499             grey49 => '#7d7d7d',
500             grey50 => '#7f7f7f',
501             grey51 => '#828282',
502             grey52 => '#858585',
503             grey53 => '#878787',
504             grey54 => '#8a8a8a',
505             grey55 => '#8c8c8c',
506             grey56 => '#8f8f8f',
507             grey57 => '#919191',
508             grey58 => '#949494',
509             grey59 => '#969696',
510             grey60 => '#999999',
511             grey61 => '#9c9c9c',
512             grey62 => '#9e9e9e',
513             grey63 => '#a1a1a1',
514             grey64 => '#a3a3a3',
515             grey65 => '#a6a6a6',
516             grey66 => '#a8a8a8',
517             grey67 => '#ababab',
518             grey68 => '#adadad',
519             grey69 => '#b0b0b0',
520             grey70 => '#b3b3b3',
521             grey71 => '#b5b5b5',
522             grey72 => '#b8b8b8',
523             grey73 => '#bababa',
524             grey74 => '#bdbdbd',
525             grey75 => '#bfbfbf',
526             grey76 => '#c2c2c2',
527             grey77 => '#c4c4c4',
528             grey78 => '#c7c7c7',
529             grey79 => '#c9c9c9',
530             grey80 => '#cccccc',
531             grey81 => '#cfcfcf',
532             grey82 => '#d1d1d1',
533             grey83 => '#d4d4d4',
534             grey84 => '#d6d6d6',
535             grey85 => '#d9d9d9',
536             grey86 => '#dbdbdb',
537             grey87 => '#dedede',
538             grey88 => '#e0e0e0',
539             grey89 => '#e3e3e3',
540             grey90 => '#e5e5e5',
541             grey91 => '#e8e8e8',
542             grey92 => '#ebebeb',
543             grey93 => '#ededed',
544             grey94 => '#f0f0f0',
545             grey95 => '#f2f2f2',
546             grey96 => '#f5f5f5',
547             grey97 => '#f7f7f7',
548             grey98 => '#fafafa',
549             grey99 => '#fcfcfc',
550             grey100 => '#ffffff',
551             honeydew => '#f0fff0',
552             honeydew1 => '#f0fff0',
553             honeydew2 => '#e0eee0',
554             honeydew3 => '#c1cdc1',
555             honeydew4 => '#838b83',
556             hotpink => '#ff69b4',
557             hotpink1 => '#ff6eb4',
558             hotpink2 => '#ee6aa7',
559             hotpink3 => '#cd6090',
560             hotpink4 => '#8b3a62',
561             indianred => '#cd5c5c',
562             indianred1 => '#ff6a6a',
563             indianred2 => '#ee6363',
564             indianred3 => '#cd5555',
565             indianred4 => '#8b3a3a',
566             indigo => '#4b0082',
567             ivory => '#fffff0',
568             ivory1 => '#fffff0',
569             ivory2 => '#eeeee0',
570             ivory3 => '#cdcdc1',
571             ivory4 => '#8b8b83',
572             khaki => '#f0e68c',
573             khaki1 => '#fff68f',
574             khaki2 => '#eee685',
575             khaki3 => '#cdc673',
576             khaki4 => '#8b864e',
577             lavender => '#e6e6fa',
578             lavenderblush => '#fff0f5',
579             lavenderblush1 => '#fff0f5',
580             lavenderblush2 => '#eee0e5',
581             lavenderblush3 => '#cdc1c5',
582             lavenderblush4 => '#8b8386',
583             lawngreen => '#7cfc00',
584             lemonchiffon => '#fffacd',
585             lemonchiffon1 => '#fffacd',
586             lemonchiffon2 => '#eee9bf',
587             lemonchiffon3 => '#cdc9a5',
588             lemonchiffon4 => '#8b8970',
589             lightblue => '#add8e6',
590             lightblue1 => '#bfefff',
591             lightblue2 => '#b2dfee',
592             lightblue3 => '#9ac0cd',
593             lightblue4 => '#68838b',
594             lightcoral => '#f08080',
595             lightcyan => '#e0ffff',
596             lightcyan1 => '#e0ffff',
597             lightcyan2 => '#d1eeee',
598             lightcyan3 => '#b4cdcd',
599             lightcyan4 => '#7a8b8b',
600             lightgoldenrod => '#eedd82',
601             lightgoldenrod1 => '#ffec8b',
602             lightgoldenrod2 => '#eedc82',
603             lightgoldenrod3 => '#cdbe70',
604             lightgoldenrod4 => '#8b814c',
605             lightgoldenrodyellow => '#fafad2',
606             lightgray => '#d3d3d3',
607             lightgrey => '#d3d3d3',
608             lightpink => '#ffb6c1',
609             lightpink1 => '#ffaeb9',
610             lightpink2 => '#eea2ad',
611             lightpink3 => '#cd8c95',
612             lightpink4 => '#8b5f65',
613             lightsalmon => '#ffa07a',
614             lightsalmon1 => '#ffa07a',
615             lightsalmon2 => '#ee9572',
616             lightsalmon3 => '#cd8162',
617             lightsalmon4 => '#8b5742',
618             lightseagreen => '#20b2aa',
619             lightskyblue => '#87cefa',
620             lightskyblue1 => '#b0e2ff',
621             lightskyblue2 => '#a4d3ee',
622             lightskyblue3 => '#8db6cd',
623             lightskyblue4 => '#607b8b',
624             lightslateblue => '#8470ff',
625             lightslategray => '#778899',
626             lightslategrey => '#778899',
627             lightsteelblue => '#b0c4de',
628             lightsteelblue1 => '#cae1ff',
629             lightsteelblue2 => '#bcd2ee',
630             lightsteelblue3 => '#a2b5cd',
631             lightsteelblue4 => '#6e7b8b',
632             lightyellow => '#ffffe0',
633             lightyellow1 => '#ffffe0',
634             lightyellow2 => '#eeeed1',
635             lightyellow3 => '#cdcdb4',
636             lightyellow4 => '#8b8b7a',
637             limegreen => '#32cd32',
638             linen => '#faf0e6',
639             magenta => '#ff00ff',
640             magenta1 => '#ff00ff',
641             magenta2 => '#ee00ee',
642             magenta3 => '#cd00cd',
643             magenta4 => '#8b008b',
644             maroon => '#b03060',
645             maroon1 => '#ff34b3',
646             maroon2 => '#ee30a7',
647             maroon3 => '#cd2990',
648             maroon4 => '#8b1c62',
649             mediumaquamarine => '#66cdaa',
650             mediumblue => '#0000cd',
651             mediumorchid => '#ba55d3',
652             mediumorchid1 => '#e066ff',
653             mediumorchid2 => '#d15fee',
654             mediumorchid3 => '#b452cd',
655             mediumorchid4 => '#7a378b',
656             mediumpurple => '#9370db',
657             mediumpurple1 => '#ab82ff',
658             mediumpurple2 => '#9f79ee',
659             mediumpurple3 => '#8968cd',
660             mediumpurple4 => '#5d478b',
661             mediumseagreen => '#3cb371',
662             mediumslateblue => '#7b68ee',
663             mediumspringgreen => '#00fa9a',
664             mediumturquoise => '#48d1cc',
665             mediumvioletred => '#c71585',
666             midnightblue => '#191970',
667             mintcream => '#f5fffa',
668             mistyrose => '#ffe4e1',
669             mistyrose1 => '#ffe4e1',
670             mistyrose2 => '#eed5d2',
671             mistyrose3 => '#cdb7b5',
672             mistyrose4 => '#8b7d7b',
673             moccasin => '#ffe4b5',
674             navajowhite => '#ffdead',
675             navajowhite1 => '#ffdead',
676             navajowhite2 => '#eecfa1',
677             navajowhite3 => '#cdb38b',
678             navajowhite4 => '#8b795e',
679             navy => '#000080',
680             navyblue => '#000080',
681             oldlace => '#fdf5e6',
682             olivedrab => '#6b8e23',
683             olivedrab1 => '#c0ff3e',
684             olivedrab2 => '#b3ee3a',
685             olivedrab3 => '#9acd32',
686             olivedrab4 => '#698b22',
687             orange => '#ffa500',
688             orange1 => '#ffa500',
689             orange2 => '#ee9a00',
690             orange3 => '#cd8500',
691             orange4 => '#8b5a00',
692             orangered => '#ff4500',
693             orangered1 => '#ff4500',
694             orangered2 => '#ee4000',
695             orangered3 => '#cd3700',
696             orangered4 => '#8b2500',
697             orchid => '#da70d6',
698             orchid1 => '#ff83fa',
699             orchid2 => '#ee7ae9',
700             orchid3 => '#cd69c9',
701             orchid4 => '#8b4789',
702             palegoldenrod => '#eee8aa',
703             palegreen => '#98fb98',
704             palegreen1 => '#9aff9a',
705             palegreen2 => '#90ee90',
706             palegreen3 => '#7ccd7c',
707             palegreen4 => '#548b54',
708             paleturquoise => '#afeeee',
709             paleturquoise1 => '#bbffff',
710             paleturquoise2 => '#aeeeee',
711             paleturquoise3 => '#96cdcd',
712             paleturquoise4 => '#668b8b',
713             palevioletred => '#db7093',
714             palevioletred1 => '#ff82ab',
715             palevioletred2 => '#ee799f',
716             palevioletred3 => '#cd6889',
717             palevioletred4 => '#8b475d',
718             papayawhip => '#ffefd5',
719             peachpuff => '#ffdab9',
720             peachpuff1 => '#ffdab9',
721             peachpuff2 => '#eecbad',
722             peachpuff3 => '#cdaf95',
723             peachpuff4 => '#8b7765',
724             peru => '#cd853f',
725             pink => '#ffc0cb',
726             pink1 => '#ffb5c5',
727             pink2 => '#eea9b8',
728             pink3 => '#cd919e',
729             pink4 => '#8b636c',
730             plum => '#dda0dd',
731             plum1 => '#ffbbff',
732             plum2 => '#eeaeee',
733             plum3 => '#cd96cd',
734             plum4 => '#8b668b',
735             powderblue => '#b0e0e6',
736             purple => '#a020f0',
737             purple1 => '#9b30ff',
738             purple2 => '#912cee',
739             purple3 => '#7d26cd',
740             purple4 => '#551a8b',
741             red => '#ff0000',
742             red1 => '#ff0000',
743             red2 => '#ee0000',
744             red3 => '#cd0000',
745             red4 => '#8b0000',
746             rosybrown => '#bc8f8f',
747             rosybrown1 => '#ffc1c1',
748             rosybrown2 => '#eeb4b4',
749             rosybrown3 => '#cd9b9b',
750             rosybrown4 => '#8b6969',
751             royalblue => '#4169e1',
752             royalblue1 => '#4876ff',
753             royalblue2 => '#436eee',
754             royalblue3 => '#3a5fcd',
755             royalblue4 => '#27408b',
756             saddlebrown => '#8b4513',
757             salmon => '#fa8072',
758             salmon1 => '#ff8c69',
759             salmon2 => '#ee8262',
760             salmon3 => '#cd7054',
761             salmon4 => '#8b4c39',
762             sandybrown => '#f4a460',
763             seagreen => '#2e8b57',
764             seagreen1 => '#54ff9f',
765             seagreen2 => '#4eee94',
766             seagreen3 => '#43cd80',
767             seagreen4 => '#2e8b57',
768             seashell => '#fff5ee',
769             seashell1 => '#fff5ee',
770             seashell2 => '#eee5de',
771             seashell3 => '#cdc5bf',
772             seashell4 => '#8b8682',
773             sienna => '#a0522d',
774             sienna1 => '#ff8247',
775             sienna2 => '#ee7942',
776             sienna3 => '#cd6839',
777             sienna4 => '#8b4726',
778             skyblue => '#87ceeb',
779             skyblue1 => '#87ceff',
780             skyblue2 => '#7ec0ee',
781             skyblue3 => '#6ca6cd',
782             skyblue4 => '#4a708b',
783             slateblue => '#6a5acd',
784             slateblue1 => '#836fff',
785             slateblue2 => '#7a67ee',
786             slateblue3 => '#6959cd',
787             slateblue4 => '#473c8b',
788             slategray => '#708090',
789             slategray1 => '#c6e2ff',
790             slategray2 => '#b9d3ee',
791             slategray3 => '#9fb6cd',
792             slategray4 => '#6c7b8b',
793             slategrey => '#708090',
794             snow => '#fffafa',
795             snow1 => '#fffafa',
796             snow2 => '#eee9e9',
797             snow3 => '#cdc9c9',
798             snow4 => '#8b8989',
799             springgreen => '#00ff7f',
800             springgreen1 => '#00ff7f',
801             springgreen2 => '#00ee76',
802             springgreen3 => '#00cd66',
803             springgreen4 => '#008b45',
804             steelblue => '#4682b4',
805             steelblue1 => '#63b8ff',
806             steelblue2 => '#5cacee',
807             steelblue3 => '#4f94cd',
808             steelblue4 => '#36648b',
809             tan => '#d2b48c',
810             tan1 => '#ffa54f',
811             tan2 => '#ee9a49',
812             tan3 => '#cd853f',
813             tan4 => '#8b5a2b',
814             thistle => '#d8bfd8',
815             thistle1 => '#ffe1ff',
816             thistle2 => '#eed2ee',
817             thistle3 => '#cdb5cd',
818             thistle4 => '#8b7b8b',
819             tomato => '#ff6347',
820             tomato1 => '#ff6347',
821             tomato2 => '#ee5c42',
822             tomato3 => '#cd4f39',
823             tomato4 => '#8b3626',
824             transparent => '#fffffe',
825             turquoise => '#40e0d0',
826             turquoise1 => '#00f5ff',
827             turquoise2 => '#00e5ee',
828             turquoise3 => '#00c5cd',
829             turquoise4 => '#00868b',
830             violet => '#ee82ee',
831             violetred => '#d02090',
832             violetred1 => '#ff3e96',
833             violetred2 => '#ee3a8c',
834             violetred3 => '#cd3278',
835             violetred4 => '#8b2252',
836             wheat => '#f5deb3',
837             wheat1 => '#ffe7ba',
838             wheat2 => '#eed8ae',
839             wheat3 => '#cdba96',
840             wheat4 => '#8b7e66',
841             white => '#ffffff',
842             whitesmoke => '#f5f5f5',
843             yellow => '#ffff00',
844             yellow1 => '#ffff00',
845             yellow2 => '#eeee00',
846             yellow3 => '#cdcd00',
847             yellow4 => '#8b8b00',
848             yellowgreen => '#9acd32',
849             # The following 12 colors exist here so that a "color: 3; colorscheme: accent3"
850             # will not report an "unknown color 3" from the Parser. As a side-effect
851             # you will not get an error for a plain "color: 3".
852             1 => '#a6cee3', 2 => '#1f78b4', 3 => '#b2df8a', 4 => '#33a02c',
853             5 => '#fb9a99', 6 => '#e31a1c', 7 => '#fdbf6f', 8 => '#ff7f00',
854             9 => '#cab2d6', 10 => '#6a3d9a', 11 => '#ffff99', 12 => '#b15928',
855             },
856             # The following color specifications were developed by:
857             # Cynthia Brewer (http://colorbrewer.org/)
858             # See the LICENSE FILE for the full license that applies to them.
859              
860             accent3 => {
861             1 => '#7fc97f', 2 => '#beaed4', 3 => '#fdc086',
862             },
863             accent4 => {
864             1 => '#7fc97f', 2 => '#beaed4', 3 => '#fdc086', 4 => '#ffff99',
865             },
866             accent5 => {
867             1 => '#7fc97f', 2 => '#beaed4', 3 => '#fdc086', 4 => '#ffff99',
868             5 => '#386cb0',
869             },
870             accent6 => {
871             1 => '#7fc97f', 2 => '#beaed4', 3 => '#fdc086', 4 => '#ffff99',
872             5 => '#386cb0', 6 => '#f0027f',
873             },
874             accent7 => {
875             1 => '#7fc97f', 2 => '#beaed4', 3 => '#fdc086', 4 => '#ffff99',
876             5 => '#386cb0', 6 => '#f0027f', 7 => '#bf5b17',
877             },
878             accent8 => {
879             1 => '#7fc97f', 2 => '#beaed4', 3 => '#fdc086', 4 => '#ffff99',
880             5 => '#386cb0', 6 => '#f0027f', 7 => '#bf5b17', 8 => '#666666',
881             },
882             blues3 => {
883             1 => '#deebf7', 2 => '#9ecae1', 3 => '#3182bd',
884             },
885             blues4 => {
886             1 => '#eff3ff', 2 => '#bdd7e7', 3 => '#6baed6', 4 => '#2171b5',
887             },
888             blues5 => {
889             1 => '#eff3ff', 2 => '#bdd7e7', 3 => '#6baed6', 4 => '#3182bd',
890             5 => '#08519c',
891             },
892             blues6 => {
893             1 => '#eff3ff', 2 => '#c6dbef', 3 => '#9ecae1', 4 => '#6baed6',
894             5 => '#3182bd', 6 => '#08519c',
895             },
896             blues7 => {
897             1 => '#eff3ff', 2 => '#c6dbef', 3 => '#9ecae1', 4 => '#6baed6',
898             5 => '#4292c6', 6 => '#2171b5', 7 => '#084594',
899             },
900             blues8 => {
901             1 => '#f7fbff', 2 => '#deebf7', 3 => '#c6dbef', 4 => '#9ecae1',
902             5 => '#6baed6', 6 => '#4292c6', 7 => '#2171b5', 8 => '#084594',
903             },
904             blues9 => {
905             1 => '#f7fbff', 2 => '#deebf7', 3 => '#c6dbef', 4 => '#9ecae1',
906             5 => '#6baed6', 6 => '#4292c6', 7 => '#2171b5', 8 => '#08519c',
907             9 => '#08306b',
908             },
909             brbg3 => {
910             1 => '#d8b365', 2 => '#f5f5f5', 3 => '#5ab4ac',
911             },
912             brbg4 => {
913             1 => '#a6611a', 2 => '#dfc27d', 3 => '#80cdc1', 4 => '#018571',
914             },
915             brbg5 => {
916             1 => '#a6611a', 2 => '#dfc27d', 3 => '#f5f5f5', 4 => '#80cdc1',
917             5 => '#018571',
918             },
919             brbg6 => {
920             1 => '#8c510a', 2 => '#d8b365', 3 => '#f6e8c3', 4 => '#c7eae5',
921             5 => '#5ab4ac', 6 => '#01665e',
922             },
923             brbg7 => {
924             1 => '#8c510a', 2 => '#d8b365', 3 => '#f6e8c3', 4 => '#f5f5f5',
925             5 => '#c7eae5', 6 => '#5ab4ac', 7 => '#01665e',
926             },
927             brbg8 => {
928             1 => '#8c510a', 2 => '#bf812d', 3 => '#dfc27d', 4 => '#f6e8c3',
929             5 => '#c7eae5', 6 => '#80cdc1', 7 => '#35978f', 8 => '#01665e',
930             },
931             brbg9 => {
932             1 => '#8c510a', 2 => '#bf812d', 3 => '#dfc27d', 4 => '#f6e8c3',
933             5 => '#f5f5f5', 6 => '#c7eae5', 7 => '#80cdc1', 8 => '#35978f',
934             9 => '#01665e',
935             },
936             brbg10 => {
937             1 => '#543005', 2 => '#8c510a', 3 => '#bf812d', 4 => '#dfc27d',
938             5 => '#f6e8c3', 6 => '#c7eae5', 7 => '#80cdc1', 8 => '#35978f',
939             9 => '#01665e', 10 => '#003c30',
940             },
941             brbg11 => {
942             1 => '#543005', 2 => '#8c510a', 3 => '#bf812d', 4 => '#dfc27d',
943             5 => '#f6e8c3', 6 => '#f5f5f5', 7 => '#c7eae5', 8 => '#80cdc1',
944             9 => '#35978f', 10 => '#01665e', 11 => '#003c30',
945             },
946             bugn3 => {
947             1 => '#e5f5f9', 2 => '#99d8c9', 3 => '#2ca25f',
948             },
949             bugn4 => {
950             1 => '#edf8fb', 2 => '#b2e2e2', 3 => '#66c2a4', 4 => '#238b45',
951             },
952             bugn5 => {
953             1 => '#edf8fb', 2 => '#b2e2e2', 3 => '#66c2a4', 4 => '#2ca25f',
954             5 => '#006d2c',
955             },
956             bugn6 => {
957             1 => '#edf8fb', 2 => '#ccece6', 3 => '#99d8c9', 4 => '#66c2a4',
958             5 => '#2ca25f', 6 => '#006d2c',
959             },
960             bugn7 => {
961             1 => '#edf8fb', 2 => '#ccece6', 3 => '#99d8c9', 4 => '#66c2a4',
962             5 => '#41ae76', 6 => '#238b45', 7 => '#005824',
963             },
964             bugn8 => {
965             1 => '#f7fcfd', 2 => '#e5f5f9', 3 => '#ccece6', 4 => '#99d8c9',
966             5 => '#66c2a4', 6 => '#41ae76', 7 => '#238b45', 8 => '#005824',
967             },
968             bugn9 => {
969             1 => '#f7fcfd', 2 => '#e5f5f9', 3 => '#ccece6', 4 => '#99d8c9',
970             5 => '#66c2a4', 6 => '#41ae76', 7 => '#238b45', 8 => '#006d2c',
971             9 => '#00441b',
972             },
973             bupu3 => {
974             1 => '#e0ecf4', 2 => '#9ebcda', 3 => '#8856a7',
975             },
976             bupu4 => {
977             1 => '#edf8fb', 2 => '#b3cde3', 3 => '#8c96c6', 4 => '#88419d',
978             },
979             bupu5 => {
980             1 => '#edf8fb', 2 => '#b3cde3', 3 => '#8c96c6', 4 => '#8856a7',
981             5 => '#810f7c',
982             },
983             bupu6 => {
984             1 => '#edf8fb', 2 => '#bfd3e6', 3 => '#9ebcda', 4 => '#8c96c6',
985             5 => '#8856a7', 6 => '#810f7c',
986             },
987             bupu7 => {
988             1 => '#edf8fb', 2 => '#bfd3e6', 3 => '#9ebcda', 4 => '#8c96c6',
989             5 => '#8c6bb1', 6 => '#88419d', 7 => '#6e016b',
990             },
991             bupu8 => {
992             1 => '#f7fcfd', 2 => '#e0ecf4', 3 => '#bfd3e6', 4 => '#9ebcda',
993             5 => '#8c96c6', 6 => '#8c6bb1', 7 => '#88419d', 8 => '#6e016b',
994             },
995             bupu9 => {
996             1 => '#f7fcfd', 2 => '#e0ecf4', 3 => '#bfd3e6', 4 => '#9ebcda',
997             5 => '#8c96c6', 6 => '#8c6bb1', 7 => '#88419d', 8 => '#810f7c',
998             9 => '#4d004b',
999             },
1000             dark23 => {
1001             1 => '#1b9e77', 2 => '#d95f02', 3 => '#7570b3',
1002             },
1003             dark24 => {
1004             1 => '#1b9e77', 2 => '#d95f02', 3 => '#7570b3', 4 => '#e7298a',
1005             },
1006             dark25 => {
1007             1 => '#1b9e77', 2 => '#d95f02', 3 => '#7570b3', 4 => '#e7298a',
1008             5 => '#66a61e',
1009             },
1010             dark26 => {
1011             1 => '#1b9e77', 2 => '#d95f02', 3 => '#7570b3', 4 => '#e7298a',
1012             5 => '#66a61e', 6 => '#e6ab02',
1013             },
1014             dark27 => {
1015             1 => '#1b9e77', 2 => '#d95f02', 3 => '#7570b3', 4 => '#e7298a',
1016             5 => '#66a61e', 6 => '#e6ab02', 7 => '#a6761d',
1017             },
1018             dark28 => {
1019             1 => '#1b9e77', 2 => '#d95f02', 3 => '#7570b3', 4 => '#e7298a',
1020             5 => '#66a61e', 6 => '#e6ab02', 7 => '#a6761d', 8 => '#666666',
1021             },
1022             gnbu3 => {
1023             1 => '#e0f3db', 2 => '#a8ddb5', 3 => '#43a2ca',
1024             },
1025             gnbu4 => {
1026             1 => '#f0f9e8', 2 => '#bae4bc', 3 => '#7bccc4', 4 => '#2b8cbe',
1027             },
1028             gnbu5 => {
1029             1 => '#f0f9e8', 2 => '#bae4bc', 3 => '#7bccc4', 4 => '#43a2ca',
1030             5 => '#0868ac',
1031             },
1032             gnbu6 => {
1033             1 => '#f0f9e8', 2 => '#ccebc5', 3 => '#a8ddb5', 4 => '#7bccc4',
1034             5 => '#43a2ca', 6 => '#0868ac',
1035             },
1036             gnbu7 => {
1037             1 => '#f0f9e8', 2 => '#ccebc5', 3 => '#a8ddb5', 4 => '#7bccc4',
1038             5 => '#4eb3d3', 6 => '#2b8cbe', 7 => '#08589e',
1039             },
1040             gnbu8 => {
1041             1 => '#f7fcf0', 2 => '#e0f3db', 3 => '#ccebc5', 4 => '#a8ddb5',
1042             5 => '#7bccc4', 6 => '#4eb3d3', 7 => '#2b8cbe', 8 => '#08589e',
1043             },
1044             gnbu9 => {
1045             1 => '#f7fcf0', 2 => '#e0f3db', 3 => '#ccebc5', 4 => '#a8ddb5',
1046             5 => '#7bccc4', 6 => '#4eb3d3', 7 => '#2b8cbe', 8 => '#0868ac',
1047             9 => '#084081',
1048             },
1049             greens3 => {
1050             1 => '#e5f5e0', 2 => '#a1d99b', 3 => '#31a354',
1051             },
1052             greens4 => {
1053             1 => '#edf8e9', 2 => '#bae4b3', 3 => '#74c476', 4 => '#238b45',
1054             },
1055             greens5 => {
1056             1 => '#edf8e9', 2 => '#bae4b3', 3 => '#74c476', 4 => '#31a354',
1057             5 => '#006d2c',
1058             },
1059             greens6 => {
1060             1 => '#edf8e9', 2 => '#c7e9c0', 3 => '#a1d99b', 4 => '#74c476',
1061             5 => '#31a354', 6 => '#006d2c',
1062             },
1063             greens7 => {
1064             1 => '#edf8e9', 2 => '#c7e9c0', 3 => '#a1d99b', 4 => '#74c476',
1065             5 => '#41ab5d', 6 => '#238b45', 7 => '#005a32',
1066             },
1067             greens8 => {
1068             1 => '#f7fcf5', 2 => '#e5f5e0', 3 => '#c7e9c0', 4 => '#a1d99b',
1069             5 => '#74c476', 6 => '#41ab5d', 7 => '#238b45', 8 => '#005a32',
1070             },
1071             greens9 => {
1072             1 => '#f7fcf5', 2 => '#e5f5e0', 3 => '#c7e9c0', 4 => '#a1d99b',
1073             5 => '#74c476', 6 => '#41ab5d', 7 => '#238b45', 8 => '#006d2c',
1074             9 => '#00441b',
1075             },
1076             greys3 => {
1077             1 => '#f0f0f0', 2 => '#bdbdbd', 3 => '#636363',
1078             },
1079             greys4 => {
1080             1 => '#f7f7f7', 2 => '#cccccc', 3 => '#969696', 4 => '#525252',
1081             },
1082             greys5 => {
1083             1 => '#f7f7f7', 2 => '#cccccc', 3 => '#969696', 4 => '#636363',
1084             5 => '#252525',
1085             },
1086             greys6 => {
1087             1 => '#f7f7f7', 2 => '#d9d9d9', 3 => '#bdbdbd', 4 => '#969696',
1088             5 => '#636363', 6 => '#252525',
1089             },
1090             greys7 => {
1091             1 => '#f7f7f7', 2 => '#d9d9d9', 3 => '#bdbdbd', 4 => '#969696',
1092             5 => '#737373', 6 => '#525252', 7 => '#252525',
1093             },
1094             greys8 => {
1095             1 => '#ffffff', 2 => '#f0f0f0', 3 => '#d9d9d9', 4 => '#bdbdbd',
1096             5 => '#969696', 6 => '#737373', 7 => '#525252', 8 => '#252525',
1097             },
1098             greys9 => {
1099             1 => '#ffffff', 2 => '#f0f0f0', 3 => '#d9d9d9', 4 => '#bdbdbd',
1100             5 => '#969696', 6 => '#737373', 7 => '#525252', 8 => '#252525',
1101             9 => '#000000',
1102             },
1103             oranges3 => {
1104             1 => '#fee6ce', 2 => '#fdae6b', 3 => '#e6550d',
1105             },
1106             oranges4 => {
1107             1 => '#feedde', 2 => '#fdbe85', 3 => '#fd8d3c', 4 => '#d94701',
1108             },
1109             oranges5 => {
1110             1 => '#feedde', 2 => '#fdbe85', 3 => '#fd8d3c', 4 => '#e6550d',
1111             5 => '#a63603',
1112             },
1113             oranges6 => {
1114             1 => '#feedde', 2 => '#fdd0a2', 3 => '#fdae6b', 4 => '#fd8d3c',
1115             5 => '#e6550d', 6 => '#a63603',
1116             },
1117             oranges7 => {
1118             1 => '#feedde', 2 => '#fdd0a2', 3 => '#fdae6b', 4 => '#fd8d3c',
1119             5 => '#f16913', 6 => '#d94801', 7 => '#8c2d04',
1120             },
1121             oranges8 => {
1122             1 => '#fff5eb', 2 => '#fee6ce', 3 => '#fdd0a2', 4 => '#fdae6b',
1123             5 => '#fd8d3c', 6 => '#f16913', 7 => '#d94801', 8 => '#8c2d04',
1124             },
1125             oranges9 => {
1126             1 => '#fff5eb', 2 => '#fee6ce', 3 => '#fdd0a2', 4 => '#fdae6b',
1127             5 => '#fd8d3c', 6 => '#f16913', 7 => '#d94801', 8 => '#a63603',
1128             9 => '#7f2704',
1129             },
1130             orrd3 => {
1131             1 => '#fee8c8', 2 => '#fdbb84', 3 => '#e34a33',
1132             },
1133             orrd4 => {
1134             1 => '#fef0d9', 2 => '#fdcc8a', 3 => '#fc8d59', 4 => '#d7301f',
1135             },
1136             orrd5 => {
1137             1 => '#fef0d9', 2 => '#fdcc8a', 3 => '#fc8d59', 4 => '#e34a33',
1138             5 => '#b30000',
1139             },
1140             orrd6 => {
1141             1 => '#fef0d9', 2 => '#fdd49e', 3 => '#fdbb84', 4 => '#fc8d59',
1142             5 => '#e34a33', 6 => '#b30000',
1143             },
1144             orrd7 => {
1145             1 => '#fef0d9', 2 => '#fdd49e', 3 => '#fdbb84', 4 => '#fc8d59',
1146             5 => '#ef6548', 6 => '#d7301f', 7 => '#990000',
1147             },
1148             orrd8 => {
1149             1 => '#fff7ec', 2 => '#fee8c8', 3 => '#fdd49e', 4 => '#fdbb84',
1150             5 => '#fc8d59', 6 => '#ef6548', 7 => '#d7301f', 8 => '#990000',
1151             },
1152             orrd9 => {
1153             1 => '#fff7ec', 2 => '#fee8c8', 3 => '#fdd49e', 4 => '#fdbb84',
1154             5 => '#fc8d59', 6 => '#ef6548', 7 => '#d7301f', 8 => '#b30000',
1155             9 => '#7f0000',
1156             },
1157             paired3 => {
1158             1 => '#a6cee3', 2 => '#1f78b4', 3 => '#b2df8a',
1159             },
1160             paired4 => {
1161             1 => '#a6cee3', 2 => '#1f78b4', 3 => '#b2df8a', 4 => '#33a02c',
1162             },
1163             paired5 => {
1164             1 => '#a6cee3', 2 => '#1f78b4', 3 => '#b2df8a', 4 => '#33a02c',
1165             5 => '#fb9a99',
1166             },
1167             paired6 => {
1168             1 => '#a6cee3', 2 => '#1f78b4', 3 => '#b2df8a', 4 => '#33a02c',
1169             5 => '#fb9a99', 6 => '#e31a1c',
1170             },
1171             paired7 => {
1172             1 => '#a6cee3', 2 => '#1f78b4', 3 => '#b2df8a', 4 => '#33a02c',
1173             5 => '#fb9a99', 6 => '#e31a1c', 7 => '#fdbf6f',
1174             },
1175             paired8 => {
1176             1 => '#a6cee3', 2 => '#1f78b4', 3 => '#b2df8a', 4 => '#33a02c',
1177             5 => '#fb9a99', 6 => '#e31a1c', 7 => '#fdbf6f', 8 => '#ff7f00',
1178             },
1179             paired9 => {
1180             1 => '#a6cee3', 2 => '#1f78b4', 3 => '#b2df8a', 4 => '#33a02c',
1181             5 => '#fb9a99', 6 => '#e31a1c', 7 => '#fdbf6f', 8 => '#ff7f00',
1182             9 => '#cab2d6',
1183             },
1184             paired10 => {
1185             1 => '#a6cee3', 2 => '#1f78b4', 3 => '#b2df8a', 4 => '#33a02c',
1186             5 => '#fb9a99', 6 => '#e31a1c', 7 => '#fdbf6f', 8 => '#ff7f00',
1187             9 => '#cab2d6', 10 => '#6a3d9a',
1188             },
1189             paired11 => {
1190             1 => '#a6cee3', 2 => '#1f78b4', 3 => '#b2df8a', 4 => '#33a02c',
1191             5 => '#fb9a99', 6 => '#e31a1c', 7 => '#fdbf6f', 8 => '#ff7f00',
1192             9 => '#cab2d6', 10 => '#6a3d9a', 11 => '#ffff99',
1193             },
1194             paired12 => {
1195             1 => '#a6cee3', 2 => '#1f78b4', 3 => '#b2df8a', 4 => '#33a02c',
1196             5 => '#fb9a99', 6 => '#e31a1c', 7 => '#fdbf6f', 8 => '#ff7f00',
1197             9 => '#cab2d6', 10 => '#6a3d9a', 11 => '#ffff99', 12 => '#b15928',
1198             },
1199             pastel13 => {
1200             1 => '#fbb4ae', 2 => '#b3cde3', 3 => '#ccebc5',
1201             },
1202             pastel14 => {
1203             1 => '#fbb4ae', 2 => '#b3cde3', 3 => '#ccebc5', 4 => '#decbe4',
1204             },
1205             pastel15 => {
1206             1 => '#fbb4ae', 2 => '#b3cde3', 3 => '#ccebc5', 4 => '#decbe4',
1207             5 => '#fed9a6',
1208             },
1209             pastel16 => {
1210             1 => '#fbb4ae', 2 => '#b3cde3', 3 => '#ccebc5', 4 => '#decbe4',
1211             5 => '#fed9a6', 6 => '#ffffcc',
1212             },
1213             pastel17 => {
1214             1 => '#fbb4ae', 2 => '#b3cde3', 3 => '#ccebc5', 4 => '#decbe4',
1215             5 => '#fed9a6', 6 => '#ffffcc', 7 => '#e5d8bd',
1216             },
1217             pastel18 => {
1218             1 => '#fbb4ae', 2 => '#b3cde3', 3 => '#ccebc5', 4 => '#decbe4',
1219             5 => '#fed9a6', 6 => '#ffffcc', 7 => '#e5d8bd', 8 => '#fddaec',
1220             },
1221             pastel19 => {
1222             1 => '#fbb4ae', 2 => '#b3cde3', 3 => '#ccebc5', 4 => '#decbe4',
1223             5 => '#fed9a6', 6 => '#ffffcc', 7 => '#e5d8bd', 8 => '#fddaec',
1224             9 => '#f2f2f2',
1225             },
1226             pastel23 => {
1227             1 => '#b3e2cd', 2 => '#fdcdac', 3 => '#cbd5e8',
1228             },
1229             pastel24 => {
1230             1 => '#b3e2cd', 2 => '#fdcdac', 3 => '#cbd5e8', 4 => '#f4cae4',
1231             },
1232             pastel25 => {
1233             1 => '#b3e2cd', 2 => '#fdcdac', 3 => '#cbd5e8', 4 => '#f4cae4',
1234             5 => '#e6f5c9',
1235             },
1236             pastel26 => {
1237             1 => '#b3e2cd', 2 => '#fdcdac', 3 => '#cbd5e8', 4 => '#f4cae4',
1238             5 => '#e6f5c9', 6 => '#fff2ae',
1239             },
1240             pastel27 => {
1241             1 => '#b3e2cd', 2 => '#fdcdac', 3 => '#cbd5e8', 4 => '#f4cae4',
1242             5 => '#e6f5c9', 6 => '#fff2ae', 7 => '#f1e2cc',
1243             },
1244             pastel28 => {
1245             1 => '#b3e2cd', 2 => '#fdcdac', 3 => '#cbd5e8', 4 => '#f4cae4',
1246             5 => '#e6f5c9', 6 => '#fff2ae', 7 => '#f1e2cc', 8 => '#cccccc',
1247             },
1248             piyg3 => {
1249             1 => '#e9a3c9', 2 => '#f7f7f7', 3 => '#a1d76a',
1250             },
1251             piyg4 => {
1252             1 => '#d01c8b', 2 => '#f1b6da', 3 => '#b8e186', 4 => '#4dac26',
1253             },
1254             piyg5 => {
1255             1 => '#d01c8b', 2 => '#f1b6da', 3 => '#f7f7f7', 4 => '#b8e186',
1256             5 => '#4dac26',
1257             },
1258             piyg6 => {
1259             1 => '#c51b7d', 2 => '#e9a3c9', 3 => '#fde0ef', 4 => '#e6f5d0',
1260             5 => '#a1d76a', 6 => '#4d9221',
1261             },
1262             piyg7 => {
1263             1 => '#c51b7d', 2 => '#e9a3c9', 3 => '#fde0ef', 4 => '#f7f7f7',
1264             5 => '#e6f5d0', 6 => '#a1d76a', 7 => '#4d9221',
1265             },
1266             piyg8 => {
1267             1 => '#c51b7d', 2 => '#de77ae', 3 => '#f1b6da', 4 => '#fde0ef',
1268             5 => '#e6f5d0', 6 => '#b8e186', 7 => '#7fbc41', 8 => '#4d9221',
1269             },
1270             piyg9 => {
1271             1 => '#c51b7d', 2 => '#de77ae', 3 => '#f1b6da', 4 => '#fde0ef',
1272             5 => '#f7f7f7', 6 => '#e6f5d0', 7 => '#b8e186', 8 => '#7fbc41',
1273             9 => '#4d9221',
1274             },
1275             piyg10 => {
1276             1 => '#8e0152', 2 => '#c51b7d', 3 => '#de77ae', 4 => '#f1b6da',
1277             5 => '#fde0ef', 6 => '#e6f5d0', 7 => '#b8e186', 8 => '#7fbc41',
1278             9 => '#4d9221', 10 => '#276419',
1279             },
1280             piyg11 => {
1281             1 => '#8e0152', 2 => '#c51b7d', 3 => '#de77ae', 4 => '#f1b6da',
1282             5 => '#fde0ef', 6 => '#f7f7f7', 7 => '#e6f5d0', 8 => '#b8e186',
1283             9 => '#7fbc41', 10 => '#4d9221', 11 => '#276419',
1284             },
1285             prgn3 => {
1286             1 => '#af8dc3', 2 => '#f7f7f7', 3 => '#7fbf7b',
1287             },
1288             prgn4 => {
1289             1 => '#7b3294', 2 => '#c2a5cf', 3 => '#a6dba0', 4 => '#008837',
1290             },
1291             prgn5 => {
1292             1 => '#7b3294', 2 => '#c2a5cf', 3 => '#f7f7f7', 4 => '#a6dba0',
1293             5 => '#008837',
1294             },
1295             prgn6 => {
1296             1 => '#762a83', 2 => '#af8dc3', 3 => '#e7d4e8', 4 => '#d9f0d3',
1297             5 => '#7fbf7b', 6 => '#1b7837',
1298             },
1299             prgn7 => {
1300             1 => '#762a83', 2 => '#af8dc3', 3 => '#e7d4e8', 4 => '#f7f7f7',
1301             5 => '#d9f0d3', 6 => '#7fbf7b', 7 => '#1b7837',
1302             },
1303             prgn8 => {
1304             1 => '#762a83', 2 => '#9970ab', 3 => '#c2a5cf', 4 => '#e7d4e8',
1305             5 => '#d9f0d3', 6 => '#a6dba0', 7 => '#5aae61', 8 => '#1b7837',
1306             },
1307             prgn9 => {
1308             1 => '#762a83', 2 => '#9970ab', 3 => '#c2a5cf', 4 => '#e7d4e8',
1309             5 => '#f7f7f7', 6 => '#d9f0d3', 7 => '#a6dba0', 8 => '#5aae61',
1310             9 => '#1b7837',
1311             },
1312             prgn10 => {
1313             1 => '#40004b', 2 => '#762a83', 3 => '#9970ab', 4 => '#c2a5cf',
1314             5 => '#e7d4e8', 6 => '#d9f0d3', 7 => '#a6dba0', 8 => '#5aae61',
1315             9 => '#1b7837', 10 => '#00441b',
1316             },
1317             prgn11 => {
1318             1 => '#40004b', 2 => '#762a83', 3 => '#9970ab', 4 => '#c2a5cf',
1319             5 => '#e7d4e8', 6 => '#f7f7f7', 7 => '#d9f0d3', 8 => '#a6dba0',
1320             9 => '#5aae61', 10 => '#1b7837', 11 => '#00441b',
1321             },
1322             pubu3 => {
1323             1 => '#ece7f2', 2 => '#a6bddb', 3 => '#2b8cbe',
1324             },
1325             pubu4 => {
1326             1 => '#f1eef6', 2 => '#bdc9e1', 3 => '#74a9cf', 4 => '#0570b0',
1327             },
1328             pubu5 => {
1329             1 => '#f1eef6', 2 => '#bdc9e1', 3 => '#74a9cf', 4 => '#2b8cbe',
1330             5 => '#045a8d',
1331             },
1332             pubu6 => {
1333             1 => '#f1eef6', 2 => '#d0d1e6', 3 => '#a6bddb', 4 => '#74a9cf',
1334             5 => '#2b8cbe', 6 => '#045a8d',
1335             },
1336             pubu7 => {
1337             1 => '#f1eef6', 2 => '#d0d1e6', 3 => '#a6bddb', 4 => '#74a9cf',
1338             5 => '#3690c0', 6 => '#0570b0', 7 => '#034e7b',
1339             },
1340             pubu8 => {
1341             1 => '#fff7fb', 2 => '#ece7f2', 3 => '#d0d1e6', 4 => '#a6bddb',
1342             5 => '#74a9cf', 6 => '#3690c0', 7 => '#0570b0', 8 => '#034e7b',
1343             },
1344             pubu9 => {
1345             1 => '#fff7fb', 2 => '#ece7f2', 3 => '#d0d1e6', 4 => '#a6bddb',
1346             5 => '#74a9cf', 6 => '#3690c0', 7 => '#0570b0', 8 => '#045a8d',
1347             9 => '#023858',
1348             },
1349             pubugn3 => {
1350             1 => '#ece2f0', 2 => '#a6bddb', 3 => '#1c9099',
1351             },
1352             pubugn4 => {
1353             1 => '#f6eff7', 2 => '#bdc9e1', 3 => '#67a9cf', 4 => '#02818a',
1354             },
1355             pubugn5 => {
1356             1 => '#f6eff7', 2 => '#bdc9e1', 3 => '#67a9cf', 4 => '#1c9099',
1357             5 => '#016c59',
1358             },
1359             pubugn6 => {
1360             1 => '#f6eff7', 2 => '#d0d1e6', 3 => '#a6bddb', 4 => '#67a9cf',
1361             5 => '#1c9099', 6 => '#016c59',
1362             },
1363             pubugn7 => {
1364             1 => '#f6eff7', 2 => '#d0d1e6', 3 => '#a6bddb', 4 => '#67a9cf',
1365             5 => '#3690c0', 6 => '#02818a', 7 => '#016450',
1366             },
1367             pubugn8 => {
1368             1 => '#fff7fb', 2 => '#ece2f0', 3 => '#d0d1e6', 4 => '#a6bddb',
1369             5 => '#67a9cf', 6 => '#3690c0', 7 => '#02818a', 8 => '#016450',
1370             },
1371             pubugn9 => {
1372             1 => '#fff7fb', 2 => '#ece2f0', 3 => '#d0d1e6', 4 => '#a6bddb',
1373             5 => '#67a9cf', 6 => '#3690c0', 7 => '#02818a', 8 => '#016c59',
1374             9 => '#014636',
1375             },
1376             puor3 => {
1377             1 => '#f1a340', 2 => '#f7f7f7', 3 => '#998ec3',
1378             },
1379             puor4 => {
1380             1 => '#e66101', 2 => '#fdb863', 3 => '#b2abd2', 4 => '#5e3c99',
1381             },
1382             puor5 => {
1383             1 => '#e66101', 2 => '#fdb863', 3 => '#f7f7f7', 4 => '#b2abd2',
1384             5 => '#5e3c99',
1385             },
1386             puor6 => {
1387             1 => '#b35806', 2 => '#f1a340', 3 => '#fee0b6', 4 => '#d8daeb',
1388             5 => '#998ec3', 6 => '#542788',
1389             },
1390             puor7 => {
1391             1 => '#b35806', 2 => '#f1a340', 3 => '#fee0b6', 4 => '#f7f7f7',
1392             5 => '#d8daeb', 6 => '#998ec3', 7 => '#542788',
1393             },
1394             puor8 => {
1395             1 => '#b35806', 2 => '#e08214', 3 => '#fdb863', 4 => '#fee0b6',
1396             5 => '#d8daeb', 6 => '#b2abd2', 7 => '#8073ac', 8 => '#542788',
1397             },
1398             puor9 => {
1399             1 => '#b35806', 2 => '#e08214', 3 => '#fdb863', 4 => '#fee0b6',
1400             5 => '#f7f7f7', 6 => '#d8daeb', 7 => '#b2abd2', 8 => '#8073ac',
1401             9 => '#542788',
1402             },
1403             purd3 => {
1404             1 => '#e7e1ef', 2 => '#c994c7', 3 => '#dd1c77',
1405             },
1406             purd4 => {
1407             1 => '#f1eef6', 2 => '#d7b5d8', 3 => '#df65b0', 4 => '#ce1256',
1408             },
1409             purd5 => {
1410             1 => '#f1eef6', 2 => '#d7b5d8', 3 => '#df65b0', 4 => '#dd1c77',
1411             5 => '#980043',
1412             },
1413             purd6 => {
1414             1 => '#f1eef6', 2 => '#d4b9da', 3 => '#c994c7', 4 => '#df65b0',
1415             5 => '#dd1c77', 6 => '#980043',
1416             },
1417             purd7 => {
1418             1 => '#f1eef6', 2 => '#d4b9da', 3 => '#c994c7', 4 => '#df65b0',
1419             5 => '#e7298a', 6 => '#ce1256', 7 => '#91003f',
1420             },
1421             purd8 => {
1422             1 => '#f7f4f9', 2 => '#e7e1ef', 3 => '#d4b9da', 4 => '#c994c7',
1423             5 => '#df65b0', 6 => '#e7298a', 7 => '#ce1256', 8 => '#91003f',
1424             },
1425             purd9 => {
1426             1 => '#f7f4f9', 2 => '#e7e1ef', 3 => '#d4b9da', 4 => '#c994c7',
1427             5 => '#df65b0', 6 => '#e7298a', 7 => '#ce1256', 8 => '#980043',
1428             9 => '#67001f',
1429             },
1430             puor10 => {
1431             1 => '#7f3b08', 2 => '#b35806', 3 => '#e08214', 4 => '#fdb863',
1432             5 => '#fee0b6', 6 => '#d8daeb', 7 => '#b2abd2', 8 => '#8073ac',
1433             9 => '#542788', 10 => '#2d004b',
1434             },
1435             puor11 => {
1436             1 => '#7f3b08', 2 => '#b35806', 3 => '#e08214', 4 => '#fdb863',
1437             5 => '#fee0b6', 6 => '#f7f7f7', 7 => '#d8daeb', 8 => '#b2abd2',
1438             9 => '#8073ac', 10 => '#542788', 11 => '#2d004b',
1439             },
1440             purples3 => {
1441             1 => '#efedf5', 2 => '#bcbddc', 3 => '#756bb1',
1442             },
1443             purples4 => {
1444             1 => '#f2f0f7', 2 => '#cbc9e2', 3 => '#9e9ac8', 4 => '#6a51a3',
1445             },
1446             purples5 => {
1447             1 => '#f2f0f7', 2 => '#cbc9e2', 3 => '#9e9ac8', 4 => '#756bb1',
1448             5 => '#54278f',
1449             },
1450             purples6 => {
1451             1 => '#f2f0f7', 2 => '#dadaeb', 3 => '#bcbddc', 4 => '#9e9ac8',
1452             5 => '#756bb1', 6 => '#54278f',
1453             },
1454             purples7 => {
1455             1 => '#f2f0f7', 2 => '#dadaeb', 3 => '#bcbddc', 4 => '#9e9ac8',
1456             5 => '#807dba', 6 => '#6a51a3', 7 => '#4a1486',
1457             },
1458             purples8 => {
1459             1 => '#fcfbfd', 2 => '#efedf5', 3 => '#dadaeb', 4 => '#bcbddc',
1460             5 => '#9e9ac8', 6 => '#807dba', 7 => '#6a51a3', 8 => '#4a1486',
1461             },
1462             purples9 => {
1463             1 => '#fcfbfd', 2 => '#efedf5', 3 => '#dadaeb', 4 => '#bcbddc',
1464             5 => '#9e9ac8', 6 => '#807dba', 7 => '#6a51a3', 8 => '#54278f',
1465             9 => '#3f007d',
1466             },
1467             rdbu10 => {
1468             1 => '#67001f', 2 => '#b2182b', 3 => '#d6604d', 4 => '#f4a582',
1469             5 => '#fddbc7', 6 => '#d1e5f0', 7 => '#92c5de', 8 => '#4393c3',
1470             9 => '#2166ac', 10 => '#053061',
1471             },
1472             rdbu11 => {
1473             1 => '#67001f', 2 => '#b2182b', 3 => '#d6604d', 4 => '#f4a582',
1474             5 => '#fddbc7', 6 => '#f7f7f7', 7 => '#d1e5f0', 8 => '#92c5de',
1475             9 => '#4393c3', 10 => '#2166ac', 11 => '#053061',
1476             },
1477             rdbu3 => {
1478             1 => '#ef8a62', 2 => '#f7f7f7', 3 => '#67a9cf',
1479             },
1480             rdbu4 => {
1481             1 => '#ca0020', 2 => '#f4a582', 3 => '#92c5de', 4 => '#0571b0',
1482             },
1483             rdbu5 => {
1484             1 => '#ca0020', 2 => '#f4a582', 3 => '#f7f7f7', 4 => '#92c5de',
1485             5 => '#0571b0',
1486             },
1487             rdbu6 => {
1488             1 => '#b2182b', 2 => '#ef8a62', 3 => '#fddbc7', 4 => '#d1e5f0',
1489             5 => '#67a9cf', 6 => '#2166ac',
1490             },
1491             rdbu7 => {
1492             1 => '#b2182b', 2 => '#ef8a62', 3 => '#fddbc7', 4 => '#f7f7f7',
1493             5 => '#d1e5f0', 6 => '#67a9cf', 7 => '#2166ac',
1494             },
1495             rdbu8 => {
1496             1 => '#b2182b', 2 => '#d6604d', 3 => '#f4a582', 4 => '#fddbc7',
1497             5 => '#d1e5f0', 6 => '#92c5de', 7 => '#4393c3', 8 => '#2166ac',
1498             },
1499             rdbu9 => {
1500             1 => '#b2182b', 2 => '#d6604d', 3 => '#f4a582', 4 => '#fddbc7',
1501             5 => '#f7f7f7', 6 => '#d1e5f0', 7 => '#92c5de', 8 => '#4393c3',
1502             9 => '#2166ac',
1503             },
1504             rdgy3 => {
1505             1 => '#ef8a62', 2 => '#ffffff', 3 => '#999999',
1506             },
1507             rdgy4 => {
1508             1 => '#ca0020', 2 => '#f4a582', 3 => '#bababa', 4 => '#404040',
1509             },
1510             rdgy5 => {
1511             1 => '#ca0020', 2 => '#f4a582', 3 => '#ffffff', 4 => '#bababa',
1512             5 => '#404040',
1513             },
1514             rdgy6 => {
1515             1 => '#b2182b', 2 => '#ef8a62', 3 => '#fddbc7', 4 => '#e0e0e0',
1516             5 => '#999999', 6 => '#4d4d4d',
1517             },
1518             rdgy7 => {
1519             1 => '#b2182b', 2 => '#ef8a62', 3 => '#fddbc7', 4 => '#ffffff',
1520             5 => '#e0e0e0', 6 => '#999999', 7 => '#4d4d4d',
1521             },
1522             rdgy8 => {
1523             1 => '#b2182b', 2 => '#d6604d', 3 => '#f4a582', 4 => '#fddbc7',
1524             5 => '#e0e0e0', 6 => '#bababa', 7 => '#878787', 8 => '#4d4d4d',
1525             },
1526             rdgy9 => {
1527             1 => '#b2182b', 2 => '#d6604d', 3 => '#f4a582', 4 => '#fddbc7',
1528             5 => '#ffffff', 6 => '#e0e0e0', 7 => '#bababa', 8 => '#878787',
1529             9 => '#4d4d4d',
1530             },
1531             rdpu3 => {
1532             1 => '#fde0dd', 2 => '#fa9fb5', 3 => '#c51b8a',
1533             },
1534             rdpu4 => {
1535             1 => '#feebe2', 2 => '#fbb4b9', 3 => '#f768a1', 4 => '#ae017e',
1536             },
1537             rdpu5 => {
1538             1 => '#feebe2', 2 => '#fbb4b9', 3 => '#f768a1', 4 => '#c51b8a',
1539             5 => '#7a0177',
1540             },
1541             rdpu6 => {
1542             1 => '#feebe2', 2 => '#fcc5c0', 3 => '#fa9fb5', 4 => '#f768a1',
1543             5 => '#c51b8a', 6 => '#7a0177',
1544             },
1545             rdpu7 => {
1546             1 => '#feebe2', 2 => '#fcc5c0', 3 => '#fa9fb5', 4 => '#f768a1',
1547             5 => '#dd3497', 6 => '#ae017e', 7 => '#7a0177',
1548             },
1549             rdpu8 => {
1550             1 => '#fff7f3', 2 => '#fde0dd', 3 => '#fcc5c0', 4 => '#fa9fb5',
1551             5 => '#f768a1', 6 => '#dd3497', 7 => '#ae017e', 8 => '#7a0177',
1552             },
1553             rdpu9 => {
1554             1 => '#fff7f3', 2 => '#fde0dd', 3 => '#fcc5c0', 4 => '#fa9fb5',
1555             5 => '#f768a1', 6 => '#dd3497', 7 => '#ae017e', 8 => '#7a0177',
1556             9 => '#49006a',
1557             },
1558             rdgy10 => {
1559             1 => '#67001f', 2 => '#b2182b', 3 => '#d6604d', 4 => '#f4a582',
1560             5 => '#fddbc7', 6 => '#e0e0e0', 7 => '#bababa', 8 => '#878787',
1561             9 => '#4d4d4d', 10 => '#1a1a1a',
1562             },
1563             rdgy11 => {
1564             1 => '#67001f', 2 => '#b2182b', 3 => '#d6604d', 4 => '#f4a582',
1565             5 => '#fddbc7', 6 => '#ffffff', 7 => '#e0e0e0', 8 => '#bababa',
1566             9 => '#878787', 10 => '#4d4d4d', 11 => '#1a1a1a',
1567             },
1568             rdylbu3 => {
1569             1 => '#fc8d59', 2 => '#ffffbf', 3 => '#91bfdb',
1570             },
1571             rdylbu4 => {
1572             1 => '#d7191c', 2 => '#fdae61', 3 => '#abd9e9', 4 => '#2c7bb6',
1573             },
1574             rdylbu5 => {
1575             1 => '#d7191c', 2 => '#fdae61', 3 => '#ffffbf', 4 => '#abd9e9',
1576             5 => '#2c7bb6',
1577             },
1578             rdylbu6 => {
1579             1 => '#d73027', 2 => '#fc8d59', 3 => '#fee090', 4 => '#e0f3f8',
1580             5 => '#91bfdb', 6 => '#4575b4',
1581             },
1582             rdylbu7 => {
1583             1 => '#d73027', 2 => '#fc8d59', 3 => '#fee090', 4 => '#ffffbf',
1584             5 => '#e0f3f8', 6 => '#91bfdb', 7 => '#4575b4',
1585             },
1586             rdylbu8 => {
1587             1 => '#d73027', 2 => '#f46d43', 3 => '#fdae61', 4 => '#fee090',
1588             5 => '#e0f3f8', 6 => '#abd9e9', 7 => '#74add1', 8 => '#4575b4',
1589             },
1590             rdylbu9 => {
1591             1 => '#d73027', 2 => '#f46d43', 3 => '#fdae61', 4 => '#fee090',
1592             5 => '#ffffbf', 6 => '#e0f3f8', 7 => '#abd9e9', 8 => '#74add1',
1593             9 => '#4575b4',
1594             },
1595             rdylbu10 => {
1596             1 => '#a50026', 2 => '#d73027', 3 => '#f46d43', 4 => '#fdae61',
1597             5 => '#fee090', 6 => '#e0f3f8', 7 => '#abd9e9', 8 => '#74add1',
1598             9 => '#4575b4', 10 => '#313695',
1599             },
1600             rdylbu11 => {
1601             1 => '#a50026', 2 => '#d73027', 3 => '#f46d43', 4 => '#fdae61',
1602             5 => '#fee090', 6 => '#ffffbf', 7 => '#e0f3f8', 8 => '#abd9e9',
1603             9 => '#74add1', 10 => '#4575b4', 11 => '#313695',
1604             },
1605             rdylgn3 => {
1606             1 => '#fc8d59', 2 => '#ffffbf', 3 => '#91cf60',
1607             },
1608             rdylgn4 => {
1609             1 => '#d7191c', 2 => '#fdae61', 3 => '#a6d96a', 4 => '#1a9641',
1610             },
1611             rdylgn5 => {
1612             1 => '#d7191c', 2 => '#fdae61', 3 => '#ffffbf', 4 => '#a6d96a',
1613             5 => '#1a9641',
1614             },
1615             rdylgn6 => {
1616             1 => '#d73027', 2 => '#fc8d59', 3 => '#fee08b', 4 => '#d9ef8b',
1617             5 => '#91cf60', 6 => '#1a9850',
1618             },
1619             rdylgn7 => {
1620             1 => '#d73027', 2 => '#fc8d59', 3 => '#fee08b', 4 => '#ffffbf',
1621             5 => '#d9ef8b', 6 => '#91cf60', 7 => '#1a9850',
1622             },
1623             rdylgn8 => {
1624             1 => '#d73027', 2 => '#f46d43', 3 => '#fdae61', 4 => '#fee08b',
1625             5 => '#d9ef8b', 6 => '#a6d96a', 7 => '#66bd63', 8 => '#1a9850',
1626             },
1627             rdylgn9 => {
1628             1 => '#d73027', 2 => '#f46d43', 3 => '#fdae61', 4 => '#fee08b',
1629             5 => '#ffffbf', 6 => '#d9ef8b', 7 => '#a6d96a', 8 => '#66bd63',
1630             9 => '#1a9850',
1631             },
1632             rdylgn10 => {
1633             1 => '#a50026', 2 => '#d73027', 3 => '#f46d43', 4 => '#fdae61',
1634             5 => '#fee08b', 6 => '#d9ef8b', 7 => '#a6d96a', 8 => '#66bd63',
1635             9 => '#1a9850', 10 => '#006837',
1636             },
1637             rdylgn11 => {
1638             1 => '#a50026', 2 => '#d73027', 3 => '#f46d43', 4 => '#fdae61',
1639             5 => '#fee08b', 6 => '#ffffbf', 7 => '#d9ef8b', 8 => '#a6d96a',
1640             9 => '#66bd63', 10 => '#1a9850', 11 => '#006837',
1641             },
1642             reds3 => {
1643             1 => '#fee0d2', 2 => '#fc9272', 3 => '#de2d26',
1644             },
1645             reds4 => {
1646             1 => '#fee5d9', 2 => '#fcae91', 3 => '#fb6a4a', 4 => '#cb181d',
1647             },
1648             reds5 => {
1649             1 => '#fee5d9', 2 => '#fcae91', 3 => '#fb6a4a', 4 => '#de2d26',
1650             5 => '#a50f15',
1651             },
1652             reds6 => {
1653             1 => '#fee5d9', 2 => '#fcbba1', 3 => '#fc9272', 4 => '#fb6a4a',
1654             5 => '#de2d26', 6 => '#a50f15',
1655             },
1656             reds7 => {
1657             1 => '#fee5d9', 2 => '#fcbba1', 3 => '#fc9272', 4 => '#fb6a4a',
1658             5 => '#ef3b2c', 6 => '#cb181d', 7 => '#99000d',
1659             },
1660             reds8 => {
1661             1 => '#fff5f0', 2 => '#fee0d2', 3 => '#fcbba1', 4 => '#fc9272',
1662             5 => '#fb6a4a', 6 => '#ef3b2c', 7 => '#cb181d', 8 => '#99000d',
1663             },
1664             reds9 => {
1665             1 => '#fff5f0', 2 => '#fee0d2', 3 => '#fcbba1', 4 => '#fc9272',
1666             5 => '#fb6a4a', 6 => '#ef3b2c', 7 => '#cb181d', 8 => '#a50f15',
1667             9 => '#67000d',
1668             },
1669             set13 => {
1670             1 => '#e41a1c', 2 => '#377eb8', 3 => '#4daf4a',
1671             },
1672             set14 => {
1673             1 => '#e41a1c', 2 => '#377eb8', 3 => '#4daf4a', 4 => '#984ea3',
1674             },
1675             set15 => {
1676             1 => '#e41a1c', 2 => '#377eb8', 3 => '#4daf4a', 4 => '#984ea3',
1677             5 => '#ff7f00',
1678             },
1679             set16 => {
1680             1 => '#e41a1c', 2 => '#377eb8', 3 => '#4daf4a', 4 => '#984ea3',
1681             5 => '#ff7f00', 6 => '#ffff33',
1682             },
1683             set17 => {
1684             1 => '#e41a1c', 2 => '#377eb8', 3 => '#4daf4a', 4 => '#984ea3',
1685             5 => '#ff7f00', 6 => '#ffff33', 7 => '#a65628',
1686             },
1687             set18 => {
1688             1 => '#e41a1c', 2 => '#377eb8', 3 => '#4daf4a', 4 => '#984ea3',
1689             5 => '#ff7f00', 6 => '#ffff33', 7 => '#a65628', 8 => '#f781bf',
1690             },
1691             set19 => {
1692             1 => '#e41a1c', 2 => '#377eb8', 3 => '#4daf4a', 4 => '#984ea3',
1693             5 => '#ff7f00', 6 => '#ffff33', 7 => '#a65628', 8 => '#f781bf',
1694             9 => '#999999',
1695             },
1696             set23 => {
1697             1 => '#66c2a5', 2 => '#fc8d62', 3 => '#8da0cb',
1698             },
1699             set24 => {
1700             1 => '#66c2a5', 2 => '#fc8d62', 3 => '#8da0cb', 4 => '#e78ac3',
1701             },
1702             set25 => {
1703             1 => '#66c2a5', 2 => '#fc8d62', 3 => '#8da0cb', 4 => '#e78ac3',
1704             5 => '#a6d854',
1705             },
1706             set26 => {
1707             1 => '#66c2a5', 2 => '#fc8d62', 3 => '#8da0cb', 4 => '#e78ac3',
1708             5 => '#a6d854', 6 => '#ffd92f',
1709             },
1710             set27 => {
1711             1 => '#66c2a5', 2 => '#fc8d62', 3 => '#8da0cb', 4 => '#e78ac3',
1712             5 => '#a6d854', 6 => '#ffd92f', 7 => '#e5c494',
1713             },
1714             set28 => {
1715             1 => '#66c2a5', 2 => '#fc8d62', 3 => '#8da0cb', 4 => '#e78ac3',
1716             5 => '#a6d854', 6 => '#ffd92f', 7 => '#e5c494', 8 => '#b3b3b3',
1717             },
1718             set33 => {
1719             1 => '#8dd3c7', 2 => '#ffffb3', 3 => '#bebada',
1720             },
1721             set34 => {
1722             1 => '#8dd3c7', 2 => '#ffffb3', 3 => '#bebada', 4 => '#fb8072',
1723             },
1724             set35 => {
1725             1 => '#8dd3c7', 2 => '#ffffb3', 3 => '#bebada', 4 => '#fb8072',
1726             5 => '#80b1d3',
1727             },
1728             set36 => {
1729             1 => '#8dd3c7', 2 => '#ffffb3', 3 => '#bebada', 4 => '#fb8072',
1730             5 => '#80b1d3', 6 => '#fdb462',
1731             },
1732             set37 => {
1733             1 => '#8dd3c7', 2 => '#ffffb3', 3 => '#bebada', 4 => '#fb8072',
1734             5 => '#80b1d3', 6 => '#fdb462', 7 => '#b3de69',
1735             },
1736             set38 => {
1737             1 => '#8dd3c7', 2 => '#ffffb3', 3 => '#bebada', 4 => '#fb8072',
1738             5 => '#80b1d3', 6 => '#fdb462', 7 => '#b3de69', 8 => '#fccde5',
1739             },
1740             set39 => {
1741             1 => '#8dd3c7', 2 => '#ffffb3', 3 => '#bebada', 4 => '#fb8072',
1742             5 => '#80b1d3', 6 => '#fdb462', 7 => '#b3de69', 8 => '#fccde5',
1743             9 => '#d9d9d9',
1744             },
1745             set310 => {
1746             1 => '#8dd3c7', 2 => '#ffffb3', 3 => '#bebada', 4 => '#fb8072',
1747             5 => '#80b1d3', 6 => '#fdb462', 7 => '#b3de69', 8 => '#fccde5',
1748             9 => '#d9d9d9', 10 => '#bc80bd',
1749             },
1750             set311 => {
1751             1 => '#8dd3c7', 2 => '#ffffb3', 3 => '#bebada', 4 => '#fb8072',
1752             5 => '#80b1d3', 6 => '#fdb462', 7 => '#b3de69', 8 => '#fccde5',
1753             9 => '#d9d9d9', 10 => '#bc80bd', 11 => '#ccebc5',
1754             },
1755             set312 => {
1756             1 => '#8dd3c7', 2 => '#ffffb3', 3 => '#bebada', 4 => '#fb8072',
1757             5 => '#80b1d3', 6 => '#fdb462', 7 => '#b3de69', 8 => '#fccde5',
1758             9 => '#d9d9d9', 10 => '#bc80bd', 11 => '#ccebc5', 12 => '#ffed6f',
1759             },
1760             spectral3 => {
1761             1 => '#fc8d59', 2 => '#ffffbf', 3 => '#99d594',
1762             },
1763             spectral4 => {
1764             1 => '#d7191c', 2 => '#fdae61', 3 => '#abdda4', 4 => '#2b83ba',
1765             },
1766             spectral5 => {
1767             1 => '#d7191c', 2 => '#fdae61', 3 => '#ffffbf', 4 => '#abdda4',
1768             5 => '#2b83ba',
1769             },
1770             spectral6 => {
1771             1 => '#d53e4f', 2 => '#fc8d59', 3 => '#fee08b', 4 => '#e6f598',
1772             5 => '#99d594', 6 => '#3288bd',
1773             },
1774             spectral7 => {
1775             1 => '#d53e4f', 2 => '#fc8d59', 3 => '#fee08b', 4 => '#ffffbf',
1776             5 => '#e6f598', 6 => '#99d594', 7 => '#3288bd',
1777             },
1778             spectral8 => {
1779             1 => '#d53e4f', 2 => '#f46d43', 3 => '#fdae61', 4 => '#fee08b',
1780             5 => '#e6f598', 6 => '#abdda4', 7 => '#66c2a5', 8 => '#3288bd',
1781             },
1782             spectral9 => {
1783             1 => '#d53e4f', 2 => '#f46d43', 3 => '#fdae61', 4 => '#fee08b',
1784             5 => '#ffffbf', 6 => '#e6f598', 7 => '#abdda4', 8 => '#66c2a5',
1785             9 => '#3288bd',
1786             },
1787             spectral10 => {
1788             1 => '#9e0142', 2 => '#d53e4f', 3 => '#f46d43', 4 => '#fdae61',
1789             5 => '#fee08b', 6 => '#e6f598', 7 => '#abdda4', 8 => '#66c2a5',
1790             9 => '#3288bd', 10 => '#5e4fa2',
1791             },
1792             spectral11 => {
1793             1 => '#9e0142', 2 => '#d53e4f', 3 => '#f46d43', 4 => '#fdae61',
1794             5 => '#fee08b', 6 => '#ffffbf', 7 => '#e6f598', 8 => '#abdda4',
1795             9 => '#66c2a5', 10 => '#3288bd', 11 => '#5e4fa2',
1796             },
1797             ylgn3 => {
1798             1 => '#f7fcb9', 2 => '#addd8e', 3 => '#31a354',
1799             },
1800             ylgn4 => {
1801             1 => '#ffffcc', 2 => '#c2e699', 3 => '#78c679', 4 => '#238443',
1802             },
1803             ylgn5 => {
1804             1 => '#ffffcc', 2 => '#c2e699', 3 => '#78c679', 4 => '#31a354',
1805             5 => '#006837',
1806             },
1807             ylgn6 => {
1808             1 => '#ffffcc', 2 => '#d9f0a3', 3 => '#addd8e', 4 => '#78c679',
1809             5 => '#31a354', 6 => '#006837',
1810             },
1811             ylgn7 => {
1812             1 => '#ffffcc', 2 => '#d9f0a3', 3 => '#addd8e', 4 => '#78c679',
1813             5 => '#41ab5d', 6 => '#238443', 7 => '#005a32',
1814             },
1815             ylgn8 => {
1816             1 => '#ffffe5', 2 => '#f7fcb9', 3 => '#d9f0a3', 4 => '#addd8e',
1817             5 => '#78c679', 6 => '#41ab5d', 7 => '#238443', 8 => '#005a32',
1818             },
1819             ylgn9 => {
1820             1 => '#ffffe5', 2 => '#f7fcb9', 3 => '#d9f0a3', 4 => '#addd8e',
1821             5 => '#78c679', 6 => '#41ab5d', 7 => '#238443', 8 => '#006837',
1822             9 => '#004529',
1823             },
1824             ylgnbu3 => {
1825             1 => '#edf8b1', 2 => '#7fcdbb', 3 => '#2c7fb8',
1826             },
1827             ylgnbu4 => {
1828             1 => '#ffffcc', 2 => '#a1dab4', 3 => '#41b6c4', 4 => '#225ea8',
1829             },
1830             ylgnbu5 => {
1831             1 => '#ffffcc', 2 => '#a1dab4', 3 => '#41b6c4', 4 => '#2c7fb8',
1832             5 => '#253494',
1833             },
1834             ylgnbu6 => {
1835             1 => '#ffffcc', 2 => '#c7e9b4', 3 => '#7fcdbb', 4 => '#41b6c4',
1836             5 => '#2c7fb8', 6 => '#253494',
1837             },
1838             ylgnbu7 => {
1839             1 => '#ffffcc', 2 => '#c7e9b4', 3 => '#7fcdbb', 4 => '#41b6c4',
1840             5 => '#1d91c0', 6 => '#225ea8', 7 => '#0c2c84',
1841             },
1842             ylgnbu8 => {
1843             1 => '#ffffd9', 2 => '#edf8b1', 3 => '#c7e9b4', 4 => '#7fcdbb',
1844             5 => '#41b6c4', 6 => '#1d91c0', 7 => '#225ea8', 8 => '#0c2c84',
1845             },
1846             ylgnbu9 => {
1847             1 => '#ffffd9', 2 => '#edf8b1', 3 => '#c7e9b4', 4 => '#7fcdbb',
1848             5 => '#41b6c4', 6 => '#1d91c0', 7 => '#225ea8', 8 => '#253494',
1849             9 => '#081d58',
1850             },
1851             ylorbr3 => {
1852             1 => '#fff7bc', 2 => '#fec44f', 3 => '#d95f0e',
1853             },
1854             ylorbr4 => {
1855             1 => '#ffffd4', 2 => '#fed98e', 3 => '#fe9929', 4 => '#cc4c02',
1856             },
1857             ylorbr5 => {
1858             1 => '#ffffd4', 2 => '#fed98e', 3 => '#fe9929', 4 => '#d95f0e',
1859             5 => '#993404',
1860             },
1861             ylorbr6 => {
1862             1 => '#ffffd4', 2 => '#fee391', 3 => '#fec44f', 4 => '#fe9929',
1863             5 => '#d95f0e', 6 => '#993404',
1864             },
1865             ylorbr7 => {
1866             1 => '#ffffd4', 2 => '#fee391', 3 => '#fec44f', 4 => '#fe9929',
1867             5 => '#ec7014', 6 => '#cc4c02', 7 => '#8c2d04',
1868             },
1869             ylorbr8 => {
1870             1 => '#ffffe5', 2 => '#fff7bc', 3 => '#fee391', 4 => '#fec44f',
1871             5 => '#fe9929', 6 => '#ec7014', 7 => '#cc4c02', 8 => '#8c2d04',
1872             },
1873             ylorbr9 => {
1874             1 => '#ffffe5', 2 => '#fff7bc', 3 => '#fee391', 4 => '#fec44f',
1875             5 => '#fe9929', 6 => '#ec7014', 7 => '#cc4c02', 8 => '#993404',
1876             9 => '#662506',
1877             },
1878             ylorrd3 => {
1879             1 => '#ffeda0', 2 => '#feb24c', 3 => '#f03b20',
1880             },
1881             ylorrd4 => {
1882             1 => '#ffffb2', 2 => '#fecc5c', 3 => '#fd8d3c', 4 => '#e31a1c',
1883             },
1884             ylorrd5 => {
1885             1 => '#ffffb2', 2 => '#fecc5c', 3 => '#fd8d3c', 4 => '#f03b20',
1886             5 => '#bd0026',
1887             },
1888             ylorrd6 => {
1889             1 => '#ffffb2', 2 => '#fed976', 3 => '#feb24c', 4 => '#fd8d3c',
1890             5 => '#f03b20', 6 => '#bd0026',
1891             },
1892             ylorrd7 => {
1893             1 => '#ffffb2', 2 => '#fed976', 3 => '#feb24c', 4 => '#fd8d3c',
1894             5 => '#fc4e2a', 6 => '#e31a1c', 7 => '#b10026',
1895             },
1896             ylorrd8 => {
1897             1 => '#ffffcc', 2 => '#ffeda0', 3 => '#fed976', 4 => '#feb24c',
1898             5 => '#fd8d3c', 6 => '#fc4e2a', 7 => '#e31a1c', 8 => '#b10026',
1899             },
1900             ylorrd9 => {
1901             1 => '#ffffcc', 2 => '#ffeda0', 3 => '#fed976', 4 => '#feb24c',
1902             5 => '#fd8d3c', 6 => '#fc4e2a', 7 => '#e31a1c', 8 => '#bd0026',
1903             9 => '#800026',
1904             },
1905             };
1906              
1907             # reverse mapping value => name
1908             my $color_values = { };
1909             my $all_color_names = { };
1910              
1911             {
1912             # reverse mapping "#ff0000 => 'red'"
1913             # also build a list of all possible color names
1914             for my $n (sort keys %$color_names)
1915             {
1916             my $s = $color_names->{$n};
1917             $color_values->{ $n } = {};
1918             my $t = $color_values->{$n};
1919             # sort the names on their length
1920             for my $c (sort { length($a) <=> length($b) || $a cmp $b } keys %$s)
1921             {
1922             # don't add "blue1" if it is already set as "blue"
1923             $t->{ $s->{$c} } = $c unless exists $t->{ $s->{$c} };
1924             # mark as existing
1925             $all_color_names->{ $c } = undef;
1926             }
1927             }
1928             }
1929              
1930             our $qr_custom_attribute = qr/^x-([a-z_0-9]+-)*[a-z_0-9]+\z/;
1931              
1932             sub color_names
1933             {
1934 0     0 1 0 $color_names;
1935             }
1936              
1937             sub color_name
1938             {
1939             # return "red" for "#ff0000"
1940 9     9 1 13 my ($self,$color,$scheme) = @_;
1941              
1942 9   100     23 $scheme ||= 'w3c';
1943 9 100       43 $color_values->{$scheme}->{$color} || $color;
1944             }
1945              
1946             sub color_value
1947             {
1948             # return "#ff0000" for "red"
1949 9     9 1 13 my ($self,$color,$scheme) = @_;
1950              
1951 9   100     25 $scheme ||= 'w3c';
1952              
1953             # 'w3c/red' => 'w3c', 'red'
1954 9 50       17 $scheme = $1 if $color =~ s/^([a-z0-9])\///;
1955              
1956 9 50       50 $color_names->{$scheme}->{$color} || $color;
1957             }
1958              
1959             sub _color_scheme
1960             {
1961             # check that a given color scheme is valid
1962 9     9   12 my ($self, $scheme) = @_;
1963              
1964 9 50       22 return $scheme if $scheme eq 'inherit';
1965 9 100       30 exists $color_names->{ $scheme } ? $scheme : undef;
1966             }
1967              
1968             sub _color
1969             {
1970             # Check that a given color name (like 'red'), or value (like '#ff0000')
1971             # or rgb(1,2,3) is valid. Used by valid_attribute().
1972              
1973             # Note that for color names, the color scheme is not known here, so we
1974             # can only look if the color name is potentially possible. F.i. under
1975             # the Brewer scheme ylorrd9, '1' is a valid color name, while 'red'
1976             # would not. To resolve such conflicts, we will fallback to 'x11'
1977             # (the largest of the schemes) if the color name doesn't exist in
1978             # the current scheme.
1979 263     263   349 my ($self, $org_color) = @_;
1980              
1981 263         339 $org_color = lc($org_color); # color names are case insensitive
1982 263         404 $org_color =~ s/\s//g; # remove spaces to unify format
1983 263         245 my $color = $org_color;
1984              
1985 263 100       462 if ($color =~ s/^(w3c|[a-z]+\d{0,2})\///)
1986             {
1987 10         14 my $scheme = $1;
1988 10 50       34 return $org_color if exists $color_names->{$scheme}->{$color};
1989             # if it didn't work, then fall back to x11
1990 0         0 $scheme = 'x11';
1991 0 0       0 return (exists $color_names->{$scheme}->{$color} ? $org_color : undef);
1992             }
1993              
1994             # scheme unknown, fall back to generic handling
1995              
1996             # red => red
1997 253 100       716 return $org_color if exists $all_color_names->{$color};
1998              
1999             # #ff0000 => #ff0000, rgb(1,2,3) => rgb(1,2,3)
2000 67 100       143 defined $self->color_as_hex($color) ? $org_color : undef;
2001             }
2002              
2003             sub _hsv_to_rgb
2004             {
2005             # H=0..360, S=0..1.0, V=0..1.0
2006 35     35   4455 my ($h, $s, $v) = @_;
2007              
2008 35         31 my $e = 0.0001;
2009              
2010 35 100       88 if ($s < $e)
2011             {
2012 6 100       10 $v = abs(int(256 * $v)); $v = 255 if $v > 255;
  6         9  
2013 6         16 return ($v,$v,$v);
2014             }
2015              
2016 29         23 my ($r,$g,$b);
2017 29         30 $h *= 360;
2018              
2019 29         41 my $h1 = int($h / 60);
2020 29         28 my $f = $h / 60 - $h1;
2021 29         36 my $p = $v * (1 - $s);
2022 29         30 my $q = $v * (1 - ($s * $f));
2023 29         30 my $t = $v * (1 - ($s * (1-$f)));
2024              
2025 29 100 100     118 if ($h1 == 0 || $h1 == 6)
    100          
    100          
    100          
    50          
2026             {
2027 16         21 $r = $v; $g = $t; $b = $p;
  16         16  
  16         16  
2028             }
2029             elsif ($h1 == 1)
2030             {
2031 4         5 $r = $q; $g = $v; $b = $p;
  4         4  
  4         3  
2032             }
2033             elsif ($h1 == 2)
2034             {
2035 2         1 $r = $p; $g = $v; $b = $t;
  2         3  
  2         2  
2036             }
2037             elsif ($h1 == 3)
2038             {
2039 4         3 $r = $p; $g = $q; $b = $v;
  4         5  
  4         2  
2040             }
2041             elsif ($h1 == 4)
2042             {
2043 3         4 $r = $t; $g = $p; $b = $v;
  3         4  
  3         3  
2044             }
2045             else
2046             {
2047 0         0 $r = $v; $g = $p; $b = $q;
  0         0  
  0         0  
2048             }
2049             # clamp values to 0.255
2050 29         30 $r = abs(int($r*256));
2051 29         27 $g = abs(int($g*256));
2052 29         25 $b = abs(int($b*256));
2053 29 100       43 $r = 255 if $r > 255;
2054 29 100       42 $g = 255 if $g > 255;
2055 29 100       42 $b = 255 if $b > 255;
2056              
2057 29         74 ($r,$g,$b);
2058             }
2059              
2060             sub _hsl_to_rgb
2061             {
2062             # H=0..360, S=0..100, L=0..100
2063 21     21   401 my ($h, $s, $l) = @_;
2064              
2065 21         19 my $e = 0.0001;
2066 21 100       40 if ($s < $e)
2067             {
2068             # achromatic or grey
2069 6 100       8 $l = abs(int(256 * $l)); $l = 255 if $l > 255;
  6         9  
2070 6         16 return ($l,$l,$l);
2071             }
2072              
2073 15         12 my $t2;
2074 15 100       23 if ($l < 0.5)
2075             {
2076 2         3 $t2 = $l * ($s + 1);
2077             }
2078             else
2079             {
2080 13         19 $t2 = $l + $s - ($l * $s);
2081             }
2082 15         18 my $t1 = $l * 2 - $t2;
2083              
2084 15         14 my ($r,$g,$b);
2085              
2086             # 0..359
2087 15 100       21 $h %= 360 if $h >= 360;
2088              
2089             # $h = 0..1
2090 15         13 $h /= 360;
2091              
2092 15         12 my $tr = $h + 1/3;
2093 15         14 my $tg = $h;
2094 15         14 my $tb = $h - 1/3;
2095              
2096 15 50       21 $tr += 1 if $tr < 0; $tr -= 1 if $tr > 1;
  15 100       20  
2097 15 50       18 $tg += 1 if $tg < 0; $tg -= 1 if $tg > 1;
  15 50       21  
2098 15 100       20 $tb += 1 if $tb < 0; $tb -= 1 if $tb > 1;
  15 50       18  
2099              
2100 15         14 my $i = 0; my @temp3 = ($tr,$tg,$tb);
  15         21  
2101 15         10 my @rc;
2102 15         15 for my $c ($r,$g,$b)
2103             {
2104 45         32 my $t3 = $temp3[$i++];
2105              
2106 45 100       81 if ($t3 < 1/6)
    100          
    100          
2107             {
2108 8         9 $c = $t1 + ($t2 - $t1) * 6 * $t3;
2109             }
2110             elsif ($t3 < 1/2)
2111             {
2112 15         11 $c = $t2;
2113             }
2114             elsif ($t3 < 2/3)
2115             {
2116 5         8 $c = $t1 + ($t2 - $t1) * 6 * (2/3 - $t3);
2117             }
2118             else
2119             {
2120 17         13 $c = $t1;
2121             }
2122 45 100       34 $c = int($c * 256); $c = 255 if $c > 255;
  45         50  
2123 45         42 push @rc, $c;
2124             }
2125              
2126 15         42 @rc;
2127             }
2128              
2129             my $factors = {
2130             'rgb' => [ 255, 255, 255, 255 ],
2131             'hsv' => [ 1, 1, 1, 255 ],
2132             'hsl' => [ 360, 1, 1, 255 ],
2133             };
2134              
2135             sub color_as_hex
2136             {
2137             # Turn "red" or rgb(255,0,0) or "#f00" into "#ff0000". Return undef for
2138             # invalid colors.
2139 725     725 1 10440 my ($self,$color,$scheme) = @_;
2140              
2141 725   100     1193 $scheme ||= 'w3c';
2142 725         809 $color = lc($color);
2143             # 'w3c/red' => 'w3c', 'red'
2144 725 50       1212 $scheme = $1 if $color =~ s/^([a-z0-9])\///;
2145              
2146             # convert "red" to "ffff00"
2147             return $color_names->{$scheme}->{$color}
2148 725 100       2066 if exists $color_names->{$scheme}->{$color};
2149              
2150             # fallback to x11 scheme if color doesn't exist
2151             return $color_names->{x11}->{$color}
2152 113 100       236 if exists $color_names->{x11}->{$color};
2153              
2154 101         233 my $qr_num = qr/\s*
2155             ((?:[0-9]{1,3}%?) | # 12%, 10, 2 etc
2156             (?:[0-9]?\.[0-9]{1,5}) ) # .1, 0.1, 2.5 etc
2157             /x;
2158              
2159             # rgb(255,100%,1.0) => '#ffffff'
2160 101 100       1346 if ($color =~ /^(rgb|hsv|hsl)\($qr_num,$qr_num,$qr_num(?:,$qr_num)?\s*\)\z/)
2161             {
2162 57 100       85 my $r = $2; my $g = $3; my $b = $4; my $a = $5; $a = 255 unless defined $a;
  57         52  
  57         65  
  57         53  
  57         98  
2163 57         60 my $format = $1;
2164              
2165 57         48 my $i = 0;
2166 57         64 for my $c ($r,$g,$b,$a)
2167             {
2168             # for the first value in HSL or HSV, use 360, otherwise 100. For RGB, use 255
2169 228         277 my $factor = $factors->{$format}->[$i++];
2170              
2171 228 100       284 if ($c =~ /^([0-9]+)%\z/) # 10% => 25.5
2172             {
2173 15         35 $c = $1 * $factor / 100;
2174             }
2175             else
2176             {
2177 213 100       501 $c = $1 * $factor if $c =~ /^([0-9]+\.[0-9]+)\z/; # 0.1, 1.0
2178             }
2179             }
2180              
2181 57 100       121 ($r,$g,$b) = Graph::Easy::_hsv_to_rgb($r,$g,$b) if $format eq 'hsv';
2182 57 100       102 ($r,$g,$b) = Graph::Easy::_hsl_to_rgb($r,$g,$b) if $format eq 'hsl';
2183              
2184 57 50       47 $a = int($a); $a = 255 if $a > 255;
  57         90  
2185              
2186             # #RRGGBB or #RRGGBBAA
2187 57         197 $color = sprintf("#%02x%02x%02x%02x", $r,$g,$b,$a);
2188             }
2189              
2190             # turn #ff0 into #ffff00
2191 101 100       297 $color = "#$1$1$2$2$3$3" if $color =~ /^#([a-f0-9])([a-f0-9])([a-f[0-9])\z/;
2192              
2193             # #RRGGBBff => #RRGGBB (alpha value of 255 is the default)
2194 101         255 $color =~ s/^(#......)ff\z/$1/i;
2195              
2196             # check final color value to be #RRGGBB or #RRGGBBAA
2197 101 100       292 return undef unless $color =~ /^#([a-f0-9]{6}|[a-f0-9]{8})\z/i;
2198              
2199 93         357 $color;
2200             }
2201              
2202             sub text_style
2203             {
2204             # check whether the given list of textstyle attributes is valid
2205 20     20 1 24 my ($self, $style) = @_;
2206              
2207 20 100       54 return $style if $style =~ /^(normal|none|)\z/;
2208              
2209 15         41 my @styles = split /\s+/, $style;
2210              
2211 15 50       64 return undef if grep(!/^(underline|overline|line-through|italic|bold)\z/, @styles);
2212              
2213 15         25 $style;
2214             }
2215              
2216             sub text_styles
2217             {
2218             # return a hash with the defined textstyles checked
2219 83     83 1 68 my ($self) = @_;
2220              
2221 83         108 my $style = $self->attribute('textstyle');
2222              
2223 83 100       128 return { none => 1 } if $style =~ /^(normal|none)\z/;
2224 81 100       160 return { } if $style eq '';
2225              
2226 2         1 my $styles = {};
2227 2         9 for my $key ( split /\s+/, $style )
2228             {
2229 8         10 $styles->{$key} = 1;
2230             }
2231 2         4 $styles;
2232             }
2233              
2234             sub text_styles_as_css
2235             {
2236 81     81 1 80 my ($self, $align, $fontsize) = @_;
2237              
2238 81         59 my $style = '';
2239 81         122 my $ts = $self->text_styles();
2240              
2241 81 50       163 $style .= " font-style: italic;" if $ts->{italic};
2242 81 50       113 $style .= " font-weight: bold;" if $ts->{bold};
2243              
2244 81 50 33     325 if ($ts->{underline} || $ts->{none} || $ts->{overline} || $ts->{'line-through'})
      66        
      33        
2245             {
2246             # XXX TODO: HTML does seem to allow only one of them
2247 2         2 my @s;
2248 2         3 foreach my $k (qw/underline overline line-through none/)
2249             {
2250 8 100       17 push @s, $k if $ts->{$k};
2251             }
2252 2         5 my $s = join(' ', @s);
2253 2 50       6 $style .= " text-decoration: $s;" if $s;
2254             }
2255              
2256 81         124 my $fs = $self->raw_attribute('fontsize');
2257              
2258 81 100       123 $style .= " font-size: $fs;" if $fs;
2259              
2260 81 100       114 if (!$align)
2261             {
2262             # XXX TODO: raw_attribute()?
2263 5         8 my $al = $self->attribute('align');
2264 5 50       15 $style .= " text-align: $al;" if $al;
2265             }
2266              
2267 81         181 $style;
2268             }
2269              
2270             sub _font_size_in_pixels
2271             {
2272 0     0   0 my ($self, $em, $val) = @_;
2273              
2274 0 0 0     0 my $fs = $val; $fs = $self->attribute('fontsize') || '' if !defined $val;
  0         0  
2275 0 0       0 return $em if $fs eq '';
2276              
2277 0 0       0 if ($fs =~ /^([\d.]+)em\z/)
    0          
    0          
2278             {
2279 0         0 $fs = $1 * $em;
2280             }
2281             elsif ($fs =~ /^([\d.]+)%\z/)
2282             {
2283 0         0 $fs = ($1 / 100) * $em;
2284             }
2285             # this is discouraged:
2286             elsif ($fs =~ /^([\d.]+)px\z/)
2287             {
2288 0   0     0 $fs = int($1 || 5);
2289             }
2290             else
2291             {
2292 0         0 $self->error("Illegal fontsize '$fs'");
2293             }
2294 0         0 $fs;
2295             }
2296              
2297             # direction modifier in degrees
2298             my $modifier = {
2299             forward => 0, front => 0, left => -90, right => +90, back => +180,
2300             };
2301              
2302             # map absolute direction to degrees
2303             my $dirs = {
2304             up => 0, north => 0, down => 180, south => 180, west => 270, east => 90,
2305             0 => 0, 180 => 180, 90 => 90, 270 => 270,
2306             };
2307              
2308             # map absolute direction to side (south etc)
2309             my $sides = {
2310             north => 'north',
2311             south => 'south',
2312             east => 'east',
2313             west => 'west',
2314             up => 'north',
2315             down => 'south',
2316             0 => 'north',
2317             180 => 'south',
2318             90 => 'east',
2319             270 => 'west',
2320             };
2321              
2322             sub _direction_as_number
2323             {
2324 743     743   851 my ($self,$dir) = @_;
2325              
2326 743         809 my $d = $dirs->{$dir};
2327 743 50       1022 $self->_croak("$dir is not an absolut direction") unless defined $d;
2328              
2329 743         1001 $d;
2330             }
2331              
2332             sub _direction_as_side
2333             {
2334 512     512   464 my ($self,$dir) = @_;
2335              
2336 512 100       1157 return unless exists $sides->{$dir};
2337 311         540 $sides->{$dir};
2338             }
2339              
2340             sub _flow_as_direction
2341             {
2342             # Take a flow direction (0,90,180,270 etc), and a new direction (left|south etc)
2343             # and return the new flow. south et al will stay, while left|right etc depend
2344             # on the incoming flow.
2345 1966     1966   2084 my ($self, $inflow, $dir) = @_;
2346              
2347             # in=south and dir=forward => south
2348             # in=south and dir=back => north etc
2349             # in=south and dir=east => east
2350              
2351             # return 90 unless defined $dir;
2352              
2353 1966 100       4893 if ($dir =~ /^(south|north|west|east|up|down|0|90|180|270)\z/)
2354             {
2355             # new direction is absolut, so inflow doesn't play a role
2356             # return 0,90,180 or 270
2357 1863         4094 return $dirs->{$dir};
2358             }
2359              
2360 103         155 my $in = $dirs->{$inflow};
2361 103         126 my $modifier = $modifier->{$dir};
2362              
2363 103 50       174 $self->_croak("$inflow,$dir results in undefined inflow") unless defined $in;
2364 103 50       141 $self->_croak("$inflow,$dir results in undefined modifier") unless defined $modifier;
2365              
2366 103         103 my $out = $in + $modifier;
2367 103         172 $out -= 360 while $out >= 360; # normalize to 0..359
2368 103         164 $out += 360 while $out < 0; # normalize to 0..359
2369              
2370 103         147 $out;
2371             }
2372              
2373             sub _flow_as_side
2374             {
2375             # Take a flow direction (0,90,180,270 etc), and a new direction (left|south etc)
2376             # and return the new flow. south et al will stay, while left|right etc depend
2377             # on the incoming flow.
2378 205     205   207 my ($self, $inflow, $dir) = @_;
2379              
2380             # in=south and dir=forward => south
2381             # in=south and dir=back => north etc
2382             # in=south and dir=east => east
2383              
2384             # return 90 unless defined $dir;
2385              
2386 205 100       405 if ($dir =~ /^(south|north|west|east|up|down|0|90|180|270)\z/)
2387             {
2388             # new direction is absolut, so inflow doesn't play a role
2389             # return east, west etc
2390 2         6 return $sides->{$dir};
2391             }
2392              
2393 203         211 my $in = $dirs->{$inflow};
2394 203         229 my $modifier = $modifier->{$dir};
2395              
2396 203 50       290 $self->_croak("$inflow,$dir results in undefined inflow") unless defined $in;
2397 203 50       228 $self->_croak("$inflow,$dir results in undefined modifier") unless defined $modifier;
2398              
2399 203         169 my $out = $in + $modifier;
2400 203 50       252 $out -= 360 if $out >= 360; # normalize to 0..359
2401              
2402 203         325 $sides->{$out};
2403             }
2404              
2405             sub _direction
2406             {
2407             # check that a direction (south etc) is valid
2408 76     76   128 my ($self, $dir) = @_;
2409              
2410 76 50       389 $dir =~ /^(south|east|west|north|down|up|0|90|180|270|front|forward|back|left|right)\z/ ? $dir : undef;
2411             }
2412              
2413             sub _border_attribute_as_html
2414             {
2415             # Return "solid 1px red" from the individual border(style|color|width)
2416             # attributes, mainly for HTML output.
2417 94     94   106 my ($style, $width, $color, $scheme) = @_;
2418              
2419 94   50     142 $style ||= '';
2420 94 50       147 $width = '' unless defined $width;
2421 94 50       127 $color = '' unless defined $color;
2422              
2423 94 100 50     242 $color = Graph::Easy->color_as_hex($color,$scheme)||'' if $color !~ /^#/;
2424              
2425 94 100       198 return $style if $style =~ /^(none|)\z/;
2426              
2427             # width: 2px for double would collapse to one line
2428 92 100       125 $width = '' if $style =~ /^double/;
2429              
2430             # convert the style and widths to something HTML can understand
2431              
2432 92 50       124 $width = '0.5em' if $style eq 'broad';
2433 92 50       149 $width = '4px' if $style =~ /^bold/;
2434 92 50       111 $width = '1em' if $style eq 'wide';
2435 92 50       232 $style = 'solid' if $style =~ /(broad|wide|bold)\z/;
2436 92 50       127 $style = 'dashed' if $style eq 'bold-dash';
2437 92 100       122 $style = 'double' if $style eq 'double-dash';
2438              
2439 92 100       269 $width = $width.'px' if $width =~ /^\s*\d+\s*\z/;
2440              
2441 92 50 66     171 return '' if $width eq '' && $style ne 'double';
2442              
2443 92         146 my $val = join(" ", $style, $width, $color);
2444 92         102 $val =~ s/^\s+//;
2445 92         146 $val =~ s/\s+\z//;
2446              
2447 92         195 $val;
2448             }
2449              
2450             sub _border_attribute
2451             {
2452             # Return "solid 1px red" from the individual border(style|color|width)
2453             # attributes. Used by as_txt().
2454 1165     1165   1108 my ($style, $width, $color) = @_;
2455              
2456 1165   100     1714 $style ||= '';
2457 1165 50       1443 $width = '' unless defined $width;
2458 1165 50       1458 $color = '' unless defined $color;
2459              
2460 1165 100       2483 return $style if $style =~ /^(none|)\z/;
2461              
2462 1121 100       1721 $width = $width.'px' if $width =~ /^\s*\d+\s*\z/;
2463              
2464 1121         2007 my $val = join(" ", $style, $width, $color);
2465 1121         1517 $val =~ s/^\s+//;
2466 1121         2658 $val =~ s/\s+\z//;
2467              
2468 1121         4870 $val;
2469             }
2470              
2471             sub _border_width_in_pixels
2472             {
2473 1895     1895   1602 my ($self, $em) = @_;
2474              
2475 1895   100     2654 my $bw = $self->attribute('borderwidth') || '0';
2476 1895 100       2724 return 0 if $bw eq '0';
2477              
2478 1831   50     2447 my $bs = $self->attribute('borderstyle') || 'none';
2479              
2480 1831 100       2722 return 0 if $bs eq 'none';
2481 1809 100       2695 return 3 if $bs =~ /^bold/;
2482 1806 100       2314 return $em / 2 if $bs =~ /^broad/;
2483 1805 50       2438 return $em if $bs =~ /^wide/;
2484              
2485             # width: 1 is 1px;
2486 1805 50       6711 return $bw if $bw =~ /^([\d.]+)\z/;
2487              
2488 0 0       0 if ($bw =~ /^([\d.]+)em\z/)
    0          
    0          
2489             {
2490 0         0 $bw = $1 * $em;
2491             }
2492             elsif ($bw =~ /^([\d.]+)%\z/)
2493             {
2494 0         0 $bw = ($1 / 100) * $em;
2495             }
2496             # this is discouraged:
2497             elsif ($bw =~ /^([\d.]+)px\z/)
2498             {
2499 0         0 $bw = $1;
2500             }
2501             else
2502             {
2503 0         0 $self->error("Illegal borderwidth '$bw'");
2504             }
2505 0         0 $bw;
2506             }
2507              
2508             sub _angle
2509             {
2510             # check an angle for being valid
2511 19     19   19 my ($self, $angle) = @_;
2512              
2513 19 50       66 return undef unless $angle =~ /^([+-]?\d{1,3}|south|west|east|north|up|down|left|right|front|back|forward)\z/;
2514              
2515 19         21 $angle;
2516             }
2517              
2518             sub _uint
2519             {
2520             # check a small unsigned integer for being valid
2521 1     1   2 my ($self, $val) = @_;
2522              
2523 1 50       6 return undef unless $val =~ /^\d+\z/;
2524              
2525 1         2 $val = abs(int($val));
2526 1 50       3 $val = 4 * 1024 if $val > 4 * 1024;
2527              
2528 1         2 $val;
2529             }
2530              
2531             sub _font
2532             {
2533             # check a font-list for being valid
2534 3     3   6 my ($self, $font) = @_;
2535              
2536 3         7 $font;
2537             }
2538              
2539             sub split_border_attributes
2540             {
2541             # split "1px solid black" or "red dotted" into style, width and color
2542 39     39 1 48 my ($self,$border) = @_;
2543              
2544             # special case
2545 39 100       82 return ('none', undef, undef) if $border eq '0';
2546              
2547             # extract style
2548 36         38 my $style;
2549 36         181 $border =~
2550 35         52 s/(solid|dotted|dot-dot-dash|dot-dash|dashed|double-dash|double|bold-dash|bold|broad|wide|wave|none)/$style=$1;''/eg;
  35         70  
2551              
2552 36   100     64 $style ||= 'solid';
2553              
2554             # extract width
2555 36         53 $border =~ s/(\d+(px|em|%))//g;
2556              
2557 36   100     79 my $width = $1 || '';
2558 36         93 $width =~ s/[^0-9]+//g; # leave only digits
2559              
2560 36         49 $border =~ s/\s+//g; # rem unnec. spaces
2561              
2562             # The left-over part must be a valid color.
2563 36         35 my $color = $border;
2564 36 100       82 $color = Graph::Easy->_color($border) if $border ne '';
2565              
2566 36 50       58 $self->error("$border is not a valid bordercolor")
2567             unless defined $color;
2568              
2569 36 100       63 $width = undef if $width eq '';
2570 36 100       53 $color = undef if $color eq '';
2571 36 50       65 $style = undef if $style eq '';
2572 36         138 ($style,$width,$color);
2573             }
2574              
2575             #############################################################################
2576             # attribute checking
2577              
2578             # different types of attributes with pre-defined handling
2579             use constant {
2580 48         175122 ATTR_STRING => 0, # an arbitrary string
2581             ATTR_COLOR => 1, # color name or value like rgb(1,1,1)
2582             ATTR_ANGLE => 2, # 0 .. 359.99
2583             ATTR_PORT => 3, # east, etc.
2584             ATTR_UINT => 4, # a "small" unsigned integer
2585             ATTR_URL => 5,
2586              
2587             # these cannot have "inherit", see ATTR_INHERIT_MIN
2588             ATTR_LIST => 6, # a list of values
2589             ATTR_LCTEXT => 7, # lowercase text (classname)
2590             ATTR_TEXT => 8, # titles, links, labels etc
2591              
2592             ATTR_NO_INHERIT => 6,
2593              
2594             ATTR_DESC_SLOT => 0,
2595             ATTR_MATCH_SLOT => 1,
2596             ATTR_DEFAULT_SLOT => 2,
2597             ATTR_EXAMPLE_SLOT => 3,
2598             ATTR_TYPE_SLOT => 4,
2599              
2600              
2601 48     48   282552 };
  48         252  
2602              
2603             # Lists the attribute names along with
2604             # * a short description,
2605             # * regexp or sub name to match valid attributes
2606             # * default value
2607             # * an short example value
2608             # * type
2609             # * graph examples
2610              
2611             my $attributes = {
2612             all => {
2613             align => [
2614             "The alignment of the label text.",
2615             [ qw/center left right/ ],
2616             { default => 'center', group => 'left', edge => 'left' },
2617             'right',
2618             undef,
2619             "graph { align: left; label: My Graph; }\nnode {align: left;}\n ( Nodes:\n [ Right\\nAligned ] { align: right; } -- label\\n text -->\n { align: left; }\n [ Left\\naligned ] )",
2620             ],
2621              
2622             autolink => [
2623             "If set to something else than 'none', will use the appropriate attribute to automatically generate the L, unless L is already set. See the section about labels, titles, names and links for reference.",
2624             [ qw/label title name none inherit/ ],
2625             { default => 'inherit', graph => 'none' },
2626             'title',
2627             ],
2628              
2629             autotitle => [
2630             "If set to something else than 'none', will use the appropriate attribute to automatically generate the L, unless L<title> is already set. See the section about labels, titles, names and links for reference.", </td> </tr> <tr> <td class="h" > <a name="2631">2631</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ qw/label name none link inherit/ ], </td> </tr> <tr> <td class="h" > <a name="2632">2632</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => 'inherit', graph => 'none' }, </td> </tr> <tr> <td class="h" > <a name="2633">2633</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'label', </td> </tr> <tr> <td class="h" > <a name="2634">2634</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2635">2635</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2636">2636</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> autolabel => [ </td> </tr> <tr> <td class="h" > <a name="2637">2637</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "Will restrict the L<label> text to N characters. N must be greater than 10. See the section about labels, titles, names and links for reference.", </td> </tr> <tr> <td class="h" > <a name="2638">2638</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # for compatibility with older versions (pre v0.49), also allow "name,N" </td> </tr> <tr> <td class="h" > <a name="2639">2639</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^(name\s*,\s*)?[\d]{2,5}\z/, </td> </tr> <tr> <td class="h" > <a name="2640">2640</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => 'inherit', graph => '' }, </td> </tr> <tr> <td class="h" > <a name="2641">2641</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '20', </td> </tr> <tr> <td class="h" > <a name="2642">2642</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2643">2643</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "graph { autolabel: 20; autotitle: name; }\n\n[ Bonn ]\n -- Acme Travels Incorporated -->\n [ Frankfurt (Main) / Flughafen ]", </td> </tr> <tr> <td class="h" > <a name="2644">2644</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2645">2645</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2646">2646</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> background => [ </td> </tr> <tr> <td class="h" > <a name="2647">2647</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The background color, e.g. the color B<outside> the shape. Do not confuse with L<fill>. If set to inherit, the object will inherit the L<fill> color (B<not> the background color!) of the parent e.g. the enclosing group or graph. See the section about color names and values for reference.", </td> </tr> <tr> <td class="h" > <a name="2648">2648</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2649">2649</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # { default => 'inherit', graph => 'white', 'group.anon' => 'white', 'node.anon' => 'white' }, </td> </tr> <tr> <td class="h" > <a name="2650">2650</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'inherit', </td> </tr> <tr> <td class="h" > <a name="2651">2651</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'rgb(255,0,0)', </td> </tr> <tr> <td class="h" > <a name="2652">2652</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_COLOR, </td> </tr> <tr> <td class="h" > <a name="2653">2653</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Crimson ] { shape: circle; background: crimson; }\n -- Aqua Marine --> { background: #7fffd4; }\n [ Misty Rose ]\n { background: white; fill: rgb(255,228,221); shape: ellipse; }", </td> </tr> <tr> <td class="h" > <a name="2654">2654</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2655">2655</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2656">2656</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> class => [ </td> </tr> <tr> <td class="h" > <a name="2657">2657</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The subclass of the object. See the section about class names for reference.', </td> </tr> <tr> <td class="h" > <a name="2658">2658</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^(|[a-zA-Z][a-zA-Z0-9_]*)\z/, </td> </tr> <tr> <td class="h" > <a name="2659">2659</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="2660">2660</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'mynodeclass', </td> </tr> <tr> <td class="h" > <a name="2661">2661</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_LCTEXT, </td> </tr> <tr> <td class="h" > <a name="2662">2662</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2663">2663</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2664">2664</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> color => [ </td> </tr> <tr> <td class="h" > <a name="2665">2665</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The foreground/text/label color. See the section about color names and values for reference.', </td> </tr> <tr> <td class="h" > <a name="2666">2666</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2667">2667</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'black', </td> </tr> <tr> <td class="h" > <a name="2668">2668</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'rgb(255,255,0)', </td> </tr> <tr> <td class="h" > <a name="2669">2669</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_COLOR, </td> </tr> <tr> <td class="h" > <a name="2670">2670</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Lime ] { color: limegreen; }\n -- label --> { color: blue; labelcolor: red; }\n [ Dark Orange ] { color: rgb(255,50%,0.01); }", </td> </tr> <tr> <td class="h" > <a name="2671">2671</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2672">2672</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2673">2673</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> colorscheme => [ </td> </tr> <tr> <td class="h" > <a name="2674">2674</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The colorscheme to use for all color values. See the section about color names and values for reference and a list of possible values.", </td> </tr> <tr> <td class="h" > <a name="2675">2675</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '_color_scheme', </td> </tr> <tr> <td class="h" > <a name="2676">2676</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => 'inherit', graph => 'w3c', }, </td> </tr> <tr> <td class="h" > <a name="2677">2677</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'x11', </td> </tr> <tr> <td class="h" > <a name="2678">2678</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_STRING, </td> </tr> <tr> <td class="h" > <a name="2679">2679</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "graph { colorscheme: accent8; } [ 1 ] { fill: 1; }\n" </td> </tr> <tr> <td class="h" > <a name="2680">2680</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . " -> \n [ 3 ] { fill: 3; }\n" </td> </tr> <tr> <td class="h" > <a name="2681">2681</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . " -> \n [ 4 ] { fill: 4; }\n" </td> </tr> <tr> <td class="h" > <a name="2682">2682</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . " -> \n [ 5 ] { fill: 5; }\n" </td> </tr> <tr> <td class="h" > <a name="2683">2683</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . " -> \n [ 6 ] { fill: 6; }\n" </td> </tr> <tr> <td class="h" > <a name="2684">2684</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . " -> \n [ 7 ] { fill: 7; }\n" </td> </tr> <tr> <td class="h" > <a name="2685">2685</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> . " -> \n [ 8 ] { fill: 8; }\n" , </td> </tr> <tr> <td class="h" > <a name="2686">2686</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2687">2687</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2688">2688</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> comment => [ </td> </tr> <tr> <td class="h" > <a name="2689">2689</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "A free-form text field containing a comment on this object. This will be embedded into output formats if possible, e.g. in HTML, SVG and Graphviz, but not ASCII or Boxart.", </td> </tr> <tr> <td class="h" > <a name="2690">2690</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2691">2691</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="2692">2692</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '(C) by Tels 2007. All rights reserved.', </td> </tr> <tr> <td class="h" > <a name="2693">2693</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_STRING, </td> </tr> <tr> <td class="h" > <a name="2694">2694</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "graph { comment: German capitals; }\n [ Bonn ] --> [ Berlin ]", </td> </tr> <tr> <td class="h" > <a name="2695">2695</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2696">2696</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2697">2697</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> fill => [ </td> </tr> <tr> <td class="h" > <a name="2698">2698</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The fill color, e.g. the color inside the shape. For the graph, this is the background color for the label. For edges, defines the color inside the arrow shape. See also L<background>. See the section about color names and values for reference.", </td> </tr> <tr> <td class="h" > <a name="2699">2699</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2700">2700</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => 'white', graph => 'inherit', edge => 'inherit', group => '#a0d0ff', </td> </tr> <tr> <td class="h" > <a name="2701">2701</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'group.anon' => 'white', 'node.anon' => 'inherit' }, </td> </tr> <tr> <td class="h" > <a name="2702">2702</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'rgb(255,0,0)', </td> </tr> <tr> <td class="h" > <a name="2703">2703</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_COLOR, </td> </tr> <tr> <td class="h" > <a name="2704">2704</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Crimson ]\n {\n shape: circle;\n background: yellow;\n fill: red;\n border: 3px solid blue;\n }\n-- Aqua Marine -->\n {\n arrowstyle: filled;\n fill: red;\n }\n[ Two ]", </td> </tr> <tr> <td class="h" > <a name="2705">2705</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2706">2706</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2707">2707</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'fontsize' => [ </td> </tr> <tr> <td class="h" > <a name="2708">2708</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The size of the label text, best expressed in I<em> (1.0em, 0.5em etc) or percent (100%, 50% etc)", </td> </tr> <tr> <td class="h" > <a name="2709">2709</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^\d+(\.\d+)?(em|px|%)?\z/, </td> </tr> <tr> <td class="h" > <a name="2710">2710</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => '0.8em', graph => '1em', node => '1em', }, </td> </tr> <tr> <td class="h" > <a name="2711">2711</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '50%', </td> </tr> <tr> <td class="h" > <a name="2712">2712</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2713">2713</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "graph { fontsize: 200%; label: Sample; }\n\n ( Nodes:\n [ Big ] { fontsize: 1.5em; color: white; fill: darkred; }\n -- Small -->\n { fontsize: 0.2em; }\n [ Normal ] )", </td> </tr> <tr> <td class="h" > <a name="2714">2714</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2715">2715</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2716">2716</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> flow => [ </td> </tr> <tr> <td class="h" > <a name="2717">2717</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The general direction in which edges will leave nodes first. On edges, influeces where the target node is place. Please see the section about <a href='hinting.html#flow'>flow control</a> for reference.", </td> </tr> <tr> <td class="h" > <a name="2718">2718</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '_direction', </td> </tr> <tr> <td class="h" > <a name="2719">2719</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { graph => 'east', default => 'inherit' }, </td> </tr> <tr> <td class="h" > <a name="2720">2720</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'south', </td> </tr> <tr> <td class="h" > <a name="2721">2721</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2722">2722</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "graph { flow: up; }\n [ Enschede ] { flow: left; } -> [ Bielefeld ] -> [ Wolfsburg ]", </td> </tr> <tr> <td class="h" > <a name="2723">2723</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2724">2724</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2725">2725</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> font => [ </td> </tr> <tr> <td class="h" > <a name="2726">2726</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'A prioritized list of lower-case, unquoted values, separated by a comma. Values are either font family names (like "times", "arial" etc) or generic family names (like "serif", "cursive", "monospace"), the first recognized value will be used. Always offer a generic name as the last possibility.', </td> </tr> <tr> <td class="h" > <a name="2727">2727</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '_font', </td> </tr> <tr> <td class="h" > <a name="2728">2728</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => 'serif', edge => 'sans-serif' }, </td> </tr> <tr> <td class="h" > <a name="2729">2729</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'arial, helvetica, sans-serif', </td> </tr> <tr> <td class="h" > <a name="2730">2730</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2731">2731</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "graph { font: vinque, georgia, utopia, serif; label: Sample; }" . </td> </tr> <tr> <td class="h" > <a name="2732">2732</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "\n\n ( Nodes:\n [ Webdings ] { font: Dingbats, webdings; }\n". </td> </tr> <tr> <td class="h" > <a name="2733">2733</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> " -- FlatLine -->\n { font: flatline; }\n [ Normal ] )", </td> </tr> <tr> <td class="h" > <a name="2734">2734</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2735">2735</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2736">2736</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> id => [ </td> </tr> <tr> <td class="h" > <a name="2737">2737</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "A unique identifier for this object, consisting only of letters, digits, or underscores.", </td> </tr> <tr> <td class="h" > <a name="2738">2738</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^[a-zA-Z0-9_]+\z/, </td> </tr> <tr> <td class="h" > <a name="2739">2739</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="2740">2740</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'Bonn123', </td> </tr> <tr> <td class="h" > <a name="2741">2741</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2742">2742</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Bonn ] --> { id: 123; } [ Berlin ]", </td> </tr> <tr> <td class="h" > <a name="2743">2743</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2744">2744</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2745">2745</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> label => [ </td> </tr> <tr> <td class="h" > <a name="2746">2746</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The text displayed as label. If not set, equals the name (for nodes) or no label (for edges, groups and the graph itself).", </td> </tr> <tr> <td class="h" > <a name="2747">2747</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2748">2748</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2749">2749</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'My label', </td> </tr> <tr> <td class="h" > <a name="2750">2750</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_TEXT, </td> </tr> <tr> <td class="h" > <a name="2751">2751</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2752">2752</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2753">2753</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> linkbase => [ </td> </tr> <tr> <td class="h" > <a name="2754">2754</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The base URL prepended to all generated links. See the section about links for reference.', </td> </tr> <tr> <td class="h" > <a name="2755">2755</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2756">2756</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => 'inherit', graph => '/wiki/index.php/', }, </td> </tr> <tr> <td class="h" > <a name="2757">2757</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'http://en.wikipedia.org/wiki/', </td> </tr> <tr> <td class="h" > <a name="2758">2758</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_URL, </td> </tr> <tr> <td class="h" > <a name="2759">2759</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2760">2760</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2761">2761</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> link => [ </td> </tr> <tr> <td class="h" > <a name="2762">2762</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The link part, appended onto L<linkbase>. See the section about links for reference.', </td> </tr> <tr> <td class="h" > <a name="2763">2763</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2764">2764</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="2765">2765</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'Graph', </td> </tr> <tr> <td class="h" > <a name="2766">2766</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_TEXT, </td> </tr> <tr> <td class="h" > <a name="2767">2767</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <<LINK_EOF </td> </tr> <tr> <td class="h" > <a name="2768">2768</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node { </td> </tr> <tr> <td class="h" > <a name="2769">2769</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> autolink: name; </td> </tr> <tr> <td class="h" > <a name="2770">2770</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> textstyle: none; </td> </tr> <tr> <td class="h" > <a name="2771">2771</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> fontsize: 1.1em; </td> </tr> <tr> <td class="h" > <a name="2772">2772</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2773">2773</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> graph { </td> </tr> <tr> <td class="h" > <a name="2774">2774</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> linkbase: http://de.wikipedia.org/wiki/; </td> </tr> <tr> <td class="h" > <a name="2775">2775</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2776">2776</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> edge { </td> </tr> <tr> <td class="h" > <a name="2777">2777</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> textstyle: overline; </td> </tr> <tr> <td class="h" > <a name="2778">2778</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2779">2779</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2780">2780</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [] --> [ Friedrichshafen ] </td> </tr> <tr> <td class="h" > <a name="2781">2781</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> -- Schiff --> { autolink: label; color: orange; title: Vrooom!; } </td> </tr> <tr> <td class="h" > <a name="2782">2782</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ Immenstaad ] { color: green; } --> [ Hagnau ] </td> </tr> <tr> <td class="h" > <a name="2783">2783</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> LINK_EOF </td> </tr> <tr> <td class="h" > <a name="2784">2784</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2785">2785</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2786">2786</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> title => [ </td> </tr> <tr> <td class="h" > <a name="2787">2787</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The text displayed as mouse-over for nodes/edges, or as the title for the graph. If empty, no title will be generated unless L<autotitle> is set.", </td> </tr> <tr> <td class="h" > <a name="2788">2788</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2789">2789</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="2790">2790</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'My title', </td> </tr> <tr> <td class="h" > <a name="2791">2791</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_TEXT, </td> </tr> <tr> <td class="h" > <a name="2792">2792</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2793">2793</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2794">2794</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> format => [ </td> </tr> <tr> <td class="h" > <a name="2795">2795</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The formatting language of the label. The default, C<none> means nothing special will be done. When set to C<pod>, formatting codes like <code>B<bold></code> will change the formatting of the label. See the section about label text formatting for reference.", </td> </tr> <tr> <td class="h" > <a name="2796">2796</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ 'none', 'pod' ], </td> </tr> <tr> <td class="h" > <a name="2797">2797</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'none', </td> </tr> <tr> <td class="h" > <a name="2798">2798</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'pod', </td> </tr> <tr> <td class="h" > <a name="2799">2799</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2800">2800</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <<EOF </td> </tr> <tr> <td class="h" > <a name="2801">2801</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> graph { </td> </tr> <tr> <td class="h" > <a name="2802">2802</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> format: pod; </td> </tr> <tr> <td class="h" > <a name="2803">2803</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> label: I am B<bold> and I<italic>; </td> </tr> <tr> <td class="h" > <a name="2804">2804</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2805">2805</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node { format: pod; } </td> </tr> <tr> <td class="h" > <a name="2806">2806</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> edge { format: pod; } </td> </tr> <tr> <td class="h" > <a name="2807">2807</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2808">2808</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ U<B<bold and underlined>> ] </td> </tr> <tr> <td class="h" > <a name="2809">2809</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> --> { label: "S<Fähre>"; } </td> </tr> <tr> <td class="h" > <a name="2810">2810</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ O<Konstanz> ] </td> </tr> <tr> <td class="h" > <a name="2811">2811</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> EOF </td> </tr> <tr> <td class="h" > <a name="2812">2812</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2813">2813</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2814">2814</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> textstyle => [ </td> </tr> <tr> <td class="h" > <a name="2815">2815</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The style of the label text. Either 'none', or any combination (separated with spaces) of 'underline', 'overline', 'bold', 'italic', 'line-through'. 'none' disables underlines on links.", </td> </tr> <tr> <td class="h" > <a name="2816">2816</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'text_style', </td> </tr> <tr> <td class="h" > <a name="2817">2817</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="2818">2818</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'underline italic bold', </td> </tr> <tr> <td class="h" > <a name="2819">2819</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2820">2820</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <<EOF </td> </tr> <tr> <td class="h" > <a name="2821">2821</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> graph { </td> </tr> <tr> <td class="h" > <a name="2822">2822</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> fontsize: 150%; </td> </tr> <tr> <td class="h" > <a name="2823">2823</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> label: Verbindung; </td> </tr> <tr> <td class="h" > <a name="2824">2824</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> textstyle: bold italic; </td> </tr> <tr> <td class="h" > <a name="2825">2825</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2826">2826</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node { </td> </tr> <tr> <td class="h" > <a name="2827">2827</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> textstyle: underline bold; </td> </tr> <tr> <td class="h" > <a name="2828">2828</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> fill: #ffd080; </td> </tr> <tr> <td class="h" > <a name="2829">2829</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2830">2830</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> edge { </td> </tr> <tr> <td class="h" > <a name="2831">2831</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> textstyle: italic bold overline; </td> </tr> <tr> <td class="h" > <a name="2832">2832</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="2833">2833</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2834">2834</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ Meersburg ] { fontsize: 2em; } </td> </tr> <tr> <td class="h" > <a name="2835">2835</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> -- F\x{e4}hre --> { fontsize: 1.2em; color: red; } </td> </tr> <tr> <td class="h" > <a name="2836">2836</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ Konstanz ] </td> </tr> <tr> <td class="h" > <a name="2837">2837</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> EOF </td> </tr> <tr> <td class="h" > <a name="2838">2838</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2839">2839</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2840">2840</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> textwrap => [ </td> </tr> <tr> <td class="h" > <a name="2841">2841</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The default C<none> makes the label text appear exactly as it was written, with <a href='syntax.html'>manual line breaks</a> applied. When set to a positive number, the label text will be wrapped after this number of characters. When set to C<auto>, the label text will be wrapped to make the node size as small as possible, depending on output format this may even be dynamic. When not C<none>, manual line breaks and alignments on them are ignored.", </td> </tr> <tr> <td class="h" > <a name="2842">2842</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^(auto|none|\d{1,4})/, </td> </tr> <tr> <td class="h" > <a name="2843">2843</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => 'inherit', graph => 'none' }, </td> </tr> <tr> <td class="h" > <a name="2844">2844</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'auto', </td> </tr> <tr> <td class="h" > <a name="2845">2845</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2846">2846</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "node { textwrap: auto; }\n ( Nodes:\n [ Frankfurt (Oder) liegt an der\n ostdeutschen Grenze und an der Oder ] -->\n [ Städte innerhalb der\n Ost-Westfahlen Region mit sehr langen Namen] )", </td> </tr> <tr> <td class="h" > <a name="2847">2847</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2848">2848</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }, </td> </tr> <tr> <td class="h" > <a name="2849">2849</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2850">2850</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node => { </td> </tr> <tr> <td class="h" > <a name="2851">2851</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> bordercolor => [ </td> </tr> <tr> <td class="h" > <a name="2852">2852</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The color of the L<border>. See the section about color names and values for reference.', </td> </tr> <tr> <td class="h" > <a name="2853">2853</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2854">2854</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => '#000000' }, </td> </tr> <tr> <td class="h" > <a name="2855">2855</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'rgb(255,255,0)', </td> </tr> <tr> <td class="h" > <a name="2856">2856</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_COLOR, </td> </tr> <tr> <td class="h" > <a name="2857">2857</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "node { border: black bold; }\n[ Black ]\n --> [ Red ] { bordercolor: red; }\n --> [ Green ] { bordercolor: green; }", </td> </tr> <tr> <td class="h" > <a name="2858">2858</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2859">2859</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2860">2860</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> borderstyle => [ </td> </tr> <tr> <td class="h" > <a name="2861">2861</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The style of the L<border>. The special styles "bold", "broad", "wide", "double-dash" and "bold-dash" will set and override the L<borderwidth>.', </td> </tr> <tr> <td class="h" > <a name="2862">2862</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ qw/none solid dotted dashed dot-dash dot-dot-dash double wave bold bold-dash broad double-dash wide/ ], </td> </tr> <tr> <td class="h" > <a name="2863">2863</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => 'none', 'node.anon' => 'none', 'group.anon' => 'none', node => 'solid', group => 'dashed' }, </td> </tr> <tr> <td class="h" > <a name="2864">2864</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'dotted', </td> </tr> <tr> <td class="h" > <a name="2865">2865</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2866">2866</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "node { border: dotted; }\n[ Dotted ]\n --> [ Dashed ] { borderstyle: dashed; }\n --> [ broad ] { borderstyle: broad; }", </td> </tr> <tr> <td class="h" > <a name="2867">2867</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2868">2868</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2869">2869</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> borderwidth => [ </td> </tr> <tr> <td class="h" > <a name="2870">2870</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The width of the L<border>. Certain L<border>-styles will override the width.', </td> </tr> <tr> <td class="h" > <a name="2871">2871</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^\d+(px|em)?\z/, </td> </tr> <tr> <td class="h" > <a name="2872">2872</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '1', </td> </tr> <tr> <td class="h" > <a name="2873">2873</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '2px', </td> </tr> <tr> <td class="h" > <a name="2874">2874</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2875">2875</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2876">2876</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> border => [ </td> </tr> <tr> <td class="h" > <a name="2877">2877</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The border. Can be any combination of L<borderstyle>, L<bordercolor> and L<borderwidth>.', </td> </tr> <tr> <td class="h" > <a name="2878">2878</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2879">2879</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => 'none', 'node.anon' => 'none', 'group.anon' => 'none', node => 'solid 1px #000000', group => 'dashed 1px #000000' }, </td> </tr> <tr> <td class="h" > <a name="2880">2880</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'dotted red', </td> </tr> <tr> <td class="h" > <a name="2881">2881</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2882">2882</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Normal ]\n --> [ Bold ] { border: bold; }\n --> [ Broad ] { border: broad; }\n --> [ Wide ] { border: wide; }\n --> [ Bold-Dash ] { border: bold-dash; }", </td> </tr> <tr> <td class="h" > <a name="2883">2883</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2884">2884</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2885">2885</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> basename => [ </td> </tr> <tr> <td class="h" > <a name="2886">2886</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "Controls the base name of an autosplit node. Ignored for all other nodes. Unless set, it is generated automatically from the node parts. Please see the section about <a href='hinting.html#autosplit'>autosplit</a> for reference.", </td> </tr> <tr> <td class="h" > <a name="2887">2887</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2888">2888</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="2889">2889</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '123', </td> </tr> <tr> <td class="h" > <a name="2890">2890</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2891">2891</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ A|B|C ] { basename: A } [ 1 ] -> [ A.2 ]\n [ A|B|C ] [ 2 ] -> [ ABC.2 ]", </td> </tr> <tr> <td class="h" > <a name="2892">2892</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2893">2893</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2894">2894</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> group => [ </td> </tr> <tr> <td class="h" > <a name="2895">2895</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "Puts the node into this group.", </td> </tr> <tr> <td class="h" > <a name="2896">2896</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2897">2897</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="2898">2898</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'Cities', </td> </tr> <tr> <td class="h" > <a name="2899">2899</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2900">2900</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ A ] { group: Cities:; } ( Cities: [ B ] ) [ A ] --> [ B ]", </td> </tr> <tr> <td class="h" > <a name="2901">2901</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2902">2902</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2903">2903</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> size => [ </td> </tr> <tr> <td class="h" > <a name="2904">2904</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The size of the node in columns and rows. Must be greater than 1 in each direction.', </td> </tr> <tr> <td class="h" > <a name="2905">2905</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^\d+\s*,\s*\d+\z/, </td> </tr> <tr> <td class="h" > <a name="2906">2906</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '1,1', </td> </tr> <tr> <td class="h" > <a name="2907">2907</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '3,2', </td> </tr> <tr> <td class="h" > <a name="2908">2908</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2909">2909</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> rows => [ </td> </tr> <tr> <td class="h" > <a name="2910">2910</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The size of the node in rows. See also L<size>.', </td> </tr> <tr> <td class="h" > <a name="2911">2911</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^\d+\z/, </td> </tr> <tr> <td class="h" > <a name="2912">2912</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '1', </td> </tr> <tr> <td class="h" > <a name="2913">2913</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '3', </td> </tr> <tr> <td class="h" > <a name="2914">2914</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2915">2915</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> columns => [ </td> </tr> <tr> <td class="h" > <a name="2916">2916</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The size of the node in columns. See also L<size>.', </td> </tr> <tr> <td class="h" > <a name="2917">2917</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^\d+\z/, </td> </tr> <tr> <td class="h" > <a name="2918">2918</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '1', </td> </tr> <tr> <td class="h" > <a name="2919">2919</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '2', </td> </tr> <tr> <td class="h" > <a name="2920">2920</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2921">2921</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2922">2922</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> offset => [ </td> </tr> <tr> <td class="h" > <a name="2923">2923</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The offset of this node from the L<origin> node, in columns and rows. Only used if you also set the L<origin> node.', </td> </tr> <tr> <td class="h" > <a name="2924">2924</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^[+-]?\d+\s*,\s*[+-]?\d+\z/, </td> </tr> <tr> <td class="h" > <a name="2925">2925</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '0,0', </td> </tr> <tr> <td class="h" > <a name="2926">2926</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '3,2', </td> </tr> <tr> <td class="h" > <a name="2927">2927</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2928">2928</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ A ] -> [ B ] { origin: A; offset: 2,2; }", </td> </tr> <tr> <td class="h" > <a name="2929">2929</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2930">2930</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2931">2931</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> origin => [ </td> </tr> <tr> <td class="h" > <a name="2932">2932</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The name of the node, that this node is relativ to. See also L<offset>.', </td> </tr> <tr> <td class="h" > <a name="2933">2933</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2934">2934</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="2935">2935</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'Cluster A', </td> </tr> <tr> <td class="h" > <a name="2936">2936</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2937">2937</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2938">2938</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> pointshape => [ </td> </tr> <tr> <td class="h" > <a name="2939">2939</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "Controls the style of a node that has a L<shape> of 'point'.", </td> </tr> <tr> <td class="h" > <a name="2940">2940</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ qw/star square dot circle cross diamond invisible x/ ], </td> </tr> <tr> <td class="h" > <a name="2941">2941</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'star', </td> </tr> <tr> <td class="h" > <a name="2942">2942</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'square', </td> </tr> <tr> <td class="h" > <a name="2943">2943</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2944">2944</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "node { shape: point; }\n\n [ A ]". </td> </tr> <tr> <td class="h" > <a name="2945">2945</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "\n -> [ B ] { pointshape: circle; }" . </td> </tr> <tr> <td class="h" > <a name="2946">2946</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "\n -> [ C ] { pointshape: cross; }" . </td> </tr> <tr> <td class="h" > <a name="2947">2947</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "\n -> [ D ] { pointshape: diamond; }" . </td> </tr> <tr> <td class="h" > <a name="2948">2948</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "\n -> [ E ] { pointshape: dot; }" . </td> </tr> <tr> <td class="h" > <a name="2949">2949</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "\n -> [ F ] { pointshape: invisible; }" . </td> </tr> <tr> <td class="h" > <a name="2950">2950</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "\n -> [ G ] { pointshape: square; }" . </td> </tr> <tr> <td class="h" > <a name="2951">2951</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "\n -> [ H ] { pointshape: star; }" . </td> </tr> <tr> <td class="h" > <a name="2952">2952</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "\n -> [ I ] { pointshape: x; }" . </td> </tr> <tr> <td class="h" > <a name="2953">2953</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "\n -> [ ☯ ] { shape: none; }" </td> </tr> <tr> <td class="h" > <a name="2954">2954</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2955">2955</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2956">2956</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> pointstyle => [ </td> </tr> <tr> <td class="h" > <a name="2957">2957</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "Controls the style of the L<pointshape> of a node that has a L<shape> of 'point'. " . </td> </tr> <tr> <td class="h" > <a name="2958">2958</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "Note for backwards compatibility reasons, the shape names 'star', 'square', 'dot', 'circle', 'cross', 'diamond' and 'invisible' ". </td> </tr> <tr> <td class="h" > <a name="2959">2959</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "are also supported, but should not be used here, instead set them via L<pointshape>.", </td> </tr> <tr> <td class="h" > <a name="2960">2960</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ qw/closed filled star square dot circle cross diamond invisible x/ ], </td> </tr> <tr> <td class="h" > <a name="2961">2961</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'filled', </td> </tr> <tr> <td class="h" > <a name="2962">2962</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'open', </td> </tr> <tr> <td class="h" > <a name="2963">2963</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2964">2964</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "node { shape: point; pointstyle: closed; pointshape: diamond; }\n\n [ A ] --> [ B ] { pointstyle: filled; }", </td> </tr> <tr> <td class="h" > <a name="2965">2965</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2966">2966</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2967">2967</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> rank => [ </td> </tr> <tr> <td class="h" > <a name="2968">2968</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The rank of the node, used by the layouter to find the order and placement of nodes. " . </td> </tr> <tr> <td class="h" > <a name="2969">2969</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "Set to C<auto> (the default), C<same> (useful for node lists) or a positive number. " . </td> </tr> <tr> <td class="h" > <a name="2970">2970</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "See the section about ranks for reference and more examples.", </td> </tr> <tr> <td class="h" > <a name="2971">2971</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^(auto|same|\d{1,6})\z/, </td> </tr> <tr> <td class="h" > <a name="2972">2972</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'auto', </td> </tr> <tr> <td class="h" > <a name="2973">2973</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'same', </td> </tr> <tr> <td class="h" > <a name="2974">2974</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2975">2975</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Bonn ], [ Berlin ] { rank: same; }\n [ Bonn ] -> [ Cottbus ] -> [ Berlin ]", </td> </tr> <tr> <td class="h" > <a name="2976">2976</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2977">2977</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2978">2978</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> rotate => [ </td> </tr> <tr> <td class="h" > <a name="2979">2979</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The rotation of the node shape, either an absolute value (like C<south>, C<up>, C<down> or C<123>), or a relative value (like C<+12>, C<-90>, C<left>, C<right>). For relative angles, the rotation will be based on the node's L<flow>. Rotation is clockwise.", </td> </tr> <tr> <td class="h" > <a name="2980">2980</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2981">2981</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '0', </td> </tr> <tr> <td class="h" > <a name="2982">2982</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '180', </td> </tr> <tr> <td class="h" > <a name="2983">2983</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_ANGLE, </td> </tr> <tr> <td class="h" > <a name="2984">2984</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Bonn ] { rotate: 45; } -- ICE --> \n [ Berlin ] { shape: triangle; rotate: -90; }", </td> </tr> <tr> <td class="h" > <a name="2985">2985</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2986">2986</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2987">2987</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> shape => [ </td> </tr> <tr> <td class="h" > <a name="2988">2988</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The shape of the node. Nodes with shape 'point' (see L<pointshape>) have a fixed size and do not display their label. The border of such a node is the outline of the C<pointshape>, and the fill is the inside of the C<pointshape>. When the C<shape> is set to the value 'img', the L<label> will be interpreted as an external image resource to display. In this case attributes like L<color>, L<fontsize> etc. are ignored.", </td> </tr> <tr> <td class="h" > <a name="2989">2989</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ qw/ circle diamond edge ellipse hexagon house invisible invhouse invtrapezium invtriangle octagon parallelogram pentagon </td> </tr> <tr> <td class="h" > <a name="2990">2990</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> point triangle trapezium septagon rect rounded none img/ ], </td> </tr> <tr> <td class="h" > <a name="2991">2991</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'rect', </td> </tr> <tr> <td class="h" > <a name="2992">2992</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'circle', </td> </tr> <tr> <td class="h" > <a name="2993">2993</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="2994">2994</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Bonn ] -> \n [ Berlin ] { shape: circle; }\n -> [ Regensburg ] { shape: rounded; }\n -> [ Ulm ] { shape: point; }\n -> [ Wasserburg ] { shape: invisible; }\n -> [ Augsburg ] { shape: triangle; }\n -> [ House ] { shape: img; label: img/house.png;\n border: none; title: My House; fill: inherit; }", </td> </tr> <tr> <td class="h" > <a name="2995">2995</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="2996">2996</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2997">2997</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }, # node </td> </tr> <tr> <td class="h" > <a name="2998">2998</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2999">2999</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> graph => { </td> </tr> <tr> <td class="h" > <a name="3000">3000</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3001">3001</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> bordercolor => [ </td> </tr> <tr> <td class="h" > <a name="3002">3002</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The color of the L<border>. See the section about color names and values for reference.', </td> </tr> <tr> <td class="h" > <a name="3003">3003</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3004">3004</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => '#000000' }, </td> </tr> <tr> <td class="h" > <a name="3005">3005</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'rgb(255,255,0)', </td> </tr> <tr> <td class="h" > <a name="3006">3006</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_COLOR, </td> </tr> <tr> <td class="h" > <a name="3007">3007</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "node { border: black bold; }\n[ Black ]\n --> [ Red ] { bordercolor: red; }\n --> [ Green ] { bordercolor: green; }", </td> </tr> <tr> <td class="h" > <a name="3008">3008</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3009">3009</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3010">3010</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> borderstyle => [ </td> </tr> <tr> <td class="h" > <a name="3011">3011</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The style of the L<border>. The special styles "bold", "broad", "wide", "double-dash" and "bold-dash" will set and override the L<borderwidth>.', </td> </tr> <tr> <td class="h" > <a name="3012">3012</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ qw/none solid dotted dashed dot-dash dot-dot-dash double wave bold bold-dash broad double-dash wide/ ], </td> </tr> <tr> <td class="h" > <a name="3013">3013</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => 'none', 'node.anon' => 'none', 'group.anon' => 'none', node => 'solid', group => 'dashed' }, </td> </tr> <tr> <td class="h" > <a name="3014">3014</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'dotted', </td> </tr> <tr> <td class="h" > <a name="3015">3015</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3016">3016</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "node { border: dotted; }\n[ Dotted ]\n --> [ Dashed ] { borderstyle: dashed; }\n --> [ broad ] { borderstyle: broad; }", </td> </tr> <tr> <td class="h" > <a name="3017">3017</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3018">3018</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3019">3019</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> borderwidth => [ </td> </tr> <tr> <td class="h" > <a name="3020">3020</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The width of the L<border>. Certain L<border>-styles will override the width.', </td> </tr> <tr> <td class="h" > <a name="3021">3021</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^\d+(px|em)?\z/, </td> </tr> <tr> <td class="h" > <a name="3022">3022</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '1', </td> </tr> <tr> <td class="h" > <a name="3023">3023</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '2px', </td> </tr> <tr> <td class="h" > <a name="3024">3024</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3025">3025</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3026">3026</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> border => [ </td> </tr> <tr> <td class="h" > <a name="3027">3027</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The border. Can be any combination of L<borderstyle>, L<bordercolor> and L<borderwidth>.', </td> </tr> <tr> <td class="h" > <a name="3028">3028</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3029">3029</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => 'none', 'node.anon' => 'none', 'group.anon' => 'none', node => 'solid 1px #000000', group => 'dashed 1px #000000' }, </td> </tr> <tr> <td class="h" > <a name="3030">3030</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'dotted red', </td> </tr> <tr> <td class="h" > <a name="3031">3031</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3032">3032</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Normal ]\n --> [ Bold ] { border: bold; }\n --> [ Broad ] { border: broad; }\n --> [ Wide ] { border: wide; }\n --> [ Bold-Dash ] { border: bold-dash; }", </td> </tr> <tr> <td class="h" > <a name="3033">3033</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3034">3034</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3035">3035</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> gid => [ </td> </tr> <tr> <td class="h" > <a name="3036">3036</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "A unique ID for the graph. Useful if you want to include two graphs into one HTML page.", </td> </tr> <tr> <td class="h" > <a name="3037">3037</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^\d+\z/, </td> </tr> <tr> <td class="h" > <a name="3038">3038</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="3039">3039</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '123', </td> </tr> <tr> <td class="h" > <a name="3040">3040</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3041">3041</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3042">3042</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> labelpos => [ </td> </tr> <tr> <td class="h" > <a name="3043">3043</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The position of the graph label.", </td> </tr> <tr> <td class="h" > <a name="3044">3044</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ qw/top bottom/ ], </td> </tr> <tr> <td class="h" > <a name="3045">3045</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'top', </td> </tr> <tr> <td class="h" > <a name="3046">3046</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'bottom', </td> </tr> <tr> <td class="h" > <a name="3047">3047</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_LIST, </td> </tr> <tr> <td class="h" > <a name="3048">3048</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "graph { labelpos: bottom; label: My Graph; }\n\n [ Buxtehude ] -> [ Fuchsberg ]\n" </td> </tr> <tr> <td class="h" > <a name="3049">3049</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3050">3050</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3051">3051</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> output => [ </td> </tr> <tr> <td class="h" > <a name="3052">3052</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The desired output format. Only used when calling Graph::Easy::output(), or by mediawiki-graph.", </td> </tr> <tr> <td class="h" > <a name="3053">3053</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ qw/ascii html svg graphviz boxart debug/ ], </td> </tr> <tr> <td class="h" > <a name="3054">3054</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="3055">3055</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'ascii', </td> </tr> <tr> <td class="h" > <a name="3056">3056</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_LIST, </td> </tr> <tr> <td class="h" > <a name="3057">3057</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "graph { output: debug; }" </td> </tr> <tr> <td class="h" > <a name="3058">3058</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3059">3059</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3060">3060</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> root => [ </td> </tr> <tr> <td class="h" > <a name="3061">3061</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The name of the root node, given as hint to the layouter to start the layout there. When not set, the layouter will pick a node at semi-random.", </td> </tr> <tr> <td class="h" > <a name="3062">3062</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3063">3063</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="3064">3064</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'My Node', </td> </tr> <tr> <td class="h" > <a name="3065">3065</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_TEXT, </td> </tr> <tr> <td class="h" > <a name="3066">3066</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "graph { root: B; }\n # B will be at the left-most place\n [ A ] --> [ B ] --> [ C ] --> [ D ] --> [ A ]", </td> </tr> <tr> <td class="h" > <a name="3067">3067</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3068">3068</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3069">3069</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> type => [ </td> </tr> <tr> <td class="h" > <a name="3070">3070</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The type of the graph, either undirected or directed.", </td> </tr> <tr> <td class="h" > <a name="3071">3071</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ qw/directed undirected/ ], </td> </tr> <tr> <td class="h" > <a name="3072">3072</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'directed', </td> </tr> <tr> <td class="h" > <a name="3073">3073</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'undirected', </td> </tr> <tr> <td class="h" > <a name="3074">3074</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_LIST, </td> </tr> <tr> <td class="h" > <a name="3075">3075</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "graph { type: undirected; }\n [ A ] --> [ B ]", </td> </tr> <tr> <td class="h" > <a name="3076">3076</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3077">3077</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3078">3078</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }, # graph </td> </tr> <tr> <td class="h" > <a name="3079">3079</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3080">3080</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> edge => { </td> </tr> <tr> <td class="h" > <a name="3081">3081</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3082">3082</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> style => [ </td> </tr> <tr> <td class="h" > <a name="3083">3083</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The line style of the edge. When set on the general edge class, this attribute changes only the style of all solid edges to the specified one.', </td> </tr> <tr> <td class="h" > <a name="3084">3084</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ qw/solid dotted dashed dot-dash dot-dot-dash bold bold-dash double-dash double wave broad wide invisible/], # broad-dash wide-dash/ ], </td> </tr> <tr> <td class="h" > <a name="3085">3085</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'solid', </td> </tr> <tr> <td class="h" > <a name="3086">3086</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'dotted', </td> </tr> <tr> <td class="h" > <a name="3087">3087</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3088">3088</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ A ] -- solid --> [ B ]\n .. dotted ..> [ C ]\n - dashed - > [ D ]\n -- bold --> { style: bold; } [ E ]\n -- broad --> { style: broad; } [ F ]\n -- wide --> { style: wide; } [ G ]", </td> </tr> <tr> <td class="h" > <a name="3089">3089</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3090">3090</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3091">3091</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> arrowstyle => [ </td> </tr> <tr> <td class="h" > <a name="3092">3092</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The style of the arrow. Open arrows are vee-shaped and the bit inside the arrow has the color of the L<background>. Closed arrows are triangle shaped, with a background-color fill. Filled arrows are closed, too, but use the L<fill> color for the inside. If the fill color is not set, the L<color> attribute will be used instead. An C<arrowstyle> of none creates undirected edges just like "[A] -- [B]" would do.', </td> </tr> <tr> <td class="h" > <a name="3093">3093</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ qw/none open closed filled/ ], </td> </tr> <tr> <td class="h" > <a name="3094">3094</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'open', </td> </tr> <tr> <td class="h" > <a name="3095">3095</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'closed', </td> </tr> <tr> <td class="h" > <a name="3096">3096</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3097">3097</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ A ] -- open --> [ B ]\n -- closed --> { arrowstyle: closed; } [ C ]\n -- filled --> { arrowstyle: filled; } [ D ]\n -- filled --> { arrowstyle: filled; fill: lime; } [ E ]\n -- none --> { arrowstyle: none; } [ F ]", </td> </tr> <tr> <td class="h" > <a name="3098">3098</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3099">3099</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3100">3100</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> arrowshape => [ </td> </tr> <tr> <td class="h" > <a name="3101">3101</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The basic shape of the arrow. Can be combined with each of L<arrowstyle>.', </td> </tr> <tr> <td class="h" > <a name="3102">3102</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ qw/triangle box dot inv line diamond cross x/ ], </td> </tr> <tr> <td class="h" > <a name="3103">3103</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'triangle', </td> </tr> <tr> <td class="h" > <a name="3104">3104</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'box', </td> </tr> <tr> <td class="h" > <a name="3105">3105</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3106">3106</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ A ] -- triangle --> [ B ]\n -- box --> { arrowshape: box; } [ C ]\n" . </td> </tr> <tr> <td class="h" > <a name="3107">3107</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> " -- inv --> { arrowshape: inv; } [ D ]\n -- diamond --> { arrowshape: diamond; } [ E ]\n" . </td> </tr> <tr> <td class="h" > <a name="3108">3108</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> " -- dot --> { arrowshape: dot; } [ F ]\n" . </td> </tr> <tr> <td class="h" > <a name="3109">3109</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> " -- line --> { arrowshape: line; } [ G ] \n" . </td> </tr> <tr> <td class="h" > <a name="3110">3110</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> " -- plus --> { arrowshape: cross; } [ H ] \n" . </td> </tr> <tr> <td class="h" > <a name="3111">3111</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> " -- x --> { arrowshape: x; } [ I ] \n\n" . </td> </tr> <tr> <td class="h" > <a name="3112">3112</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ a ] -- triangle --> { arrowstyle: filled; } [ b ]\n". </td> </tr> <tr> <td class="h" > <a name="3113">3113</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> " -- box --> { arrowshape: box; arrowstyle: filled; } [ c ]\n" . </td> </tr> <tr> <td class="h" > <a name="3114">3114</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> " -- inv --> { arrowshape: inv; arrowstyle: filled; } [ d ]\n" . </td> </tr> <tr> <td class="h" > <a name="3115">3115</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> " -- diamond --> { arrowshape: diamond; arrowstyle: filled; } [ e ]\n" . </td> </tr> <tr> <td class="h" > <a name="3116">3116</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> " -- dot --> { arrowshape: dot; arrowstyle: filled; } [ f ]\n" . </td> </tr> <tr> <td class="h" > <a name="3117">3117</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> " -- line --> { arrowshape: line; arrowstyle: filled; } [ g ] \n" . </td> </tr> <tr> <td class="h" > <a name="3118">3118</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> " -- plus --> { arrowshape: cross; arrowstyle: filled; } [ h ] \n" . </td> </tr> <tr> <td class="h" > <a name="3119">3119</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> " -- x --> { arrowshape: x; arrowstyle: filled; } [ i ] \n", </td> </tr> <tr> <td class="h" > <a name="3120">3120</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3121">3121</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3122">3122</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> labelcolor => [ </td> </tr> <tr> <td class="h" > <a name="3123">3123</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The text color for the label. If unspecified, will fall back to L<color>. See the section about color names and values for reference.', </td> </tr> <tr> <td class="h" > <a name="3124">3124</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3125">3125</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'black', </td> </tr> <tr> <td class="h" > <a name="3126">3126</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'rgb(255,255,0)', </td> </tr> <tr> <td class="h" > <a name="3127">3127</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_COLOR, </td> </tr> <tr> <td class="h" > <a name="3128">3128</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Bonn ] -- ICE --> { labelcolor: blue; }\n [ Berlin ]", </td> </tr> <tr> <td class="h" > <a name="3129">3129</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3130">3130</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3131">3131</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> start => [ </td> </tr> <tr> <td class="h" > <a name="3132">3132</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The starting port of this edge. See <a href="hinting.html#joints">the section about joints</a> for reference.', </td> </tr> <tr> <td class="h" > <a name="3133">3133</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^(south|north|east|west|left|right|front|back)(\s*,\s*-?\d{1,4})?\z/, </td> </tr> <tr> <td class="h" > <a name="3134">3134</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="3135">3135</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'front, 0', </td> </tr> <tr> <td class="h" > <a name="3136">3136</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_PORT, </td> </tr> <tr> <td class="h" > <a name="3137">3137</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Bonn ] -- NORTH --> { start: north; end: north; } [ Berlin ]", </td> </tr> <tr> <td class="h" > <a name="3138">3138</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3139">3139</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3140">3140</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> end => [ </td> </tr> <tr> <td class="h" > <a name="3141">3141</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The ending port of this edge. See <a href="hinting.html#joints">the section about joints</a> for reference.', </td> </tr> <tr> <td class="h" > <a name="3142">3142</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^(south|north|east|west|right|left|front|back)(\s*,\s*-?\d{1,4})?\z/, </td> </tr> <tr> <td class="h" > <a name="3143">3143</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="3144">3144</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'back, 0', </td> </tr> <tr> <td class="h" > <a name="3145">3145</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_PORT, </td> </tr> <tr> <td class="h" > <a name="3146">3146</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Bonn ] -- NORTH --> { start: south; end: east; } [ Berlin ]", </td> </tr> <tr> <td class="h" > <a name="3147">3147</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3148">3148</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3149">3149</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> minlen => [ </td> </tr> <tr> <td class="h" > <a name="3150">3150</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The minimum length of the edge, in cells. Defaults to 1. The minimum length is ' . </td> </tr> <tr> <td class="h" > <a name="3151">3151</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'automatically increased for edges with joints.', </td> </tr> <tr> <td class="h" > <a name="3152">3152</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3153">3153</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '1', </td> </tr> <tr> <td class="h" > <a name="3154">3154</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '4', </td> </tr> <tr> <td class="h" > <a name="3155">3155</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_UINT, </td> </tr> <tr> <td class="h" > <a name="3156">3156</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Bonn ] -- longer --> { minlen: 3; } [ Berlin ]\n[ Bonn ] --> [ Potsdam ] { origin: Bonn; offset: 2,2; }", </td> </tr> <tr> <td class="h" > <a name="3157">3157</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3158">3158</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3159">3159</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> autojoin => [ </td> </tr> <tr> <td class="h" > <a name="3160">3160</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'Controls whether the layouter can join this edge automatically with other edges leading to the same node. C<never> means this edge will never joined with another edge automatically, C<always> means always (if possible), even if the attributes on the edges do not match. C<equals> means only edges with the same set of attributes will be automatically joined together. See also C<autosplit>.', </td> </tr> <tr> <td class="h" > <a name="3161">3161</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [qw/never always equals/], </td> </tr> <tr> <td class="h" > <a name="3162">3162</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'never', </td> </tr> <tr> <td class="h" > <a name="3163">3163</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'always', </td> </tr> <tr> <td class="h" > <a name="3164">3164</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3165">3165</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Bonn ], [ Aachen ]\n -- 1 --> { autojoin: equals; } [ Berlin ]", </td> </tr> <tr> <td class="h" > <a name="3166">3166</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3167">3167</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3168">3168</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> autosplit => [ </td> </tr> <tr> <td class="h" > <a name="3169">3169</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'Controls whether the layouter replace multiple edges leading from one node to other nodes with one edge splitting up. C<never> means this edge will never be part of such a split, C<always> means always (if possible), even if the attributes on the edges do not match. C<equals> means only edges with the same set of attributes will be automatically split up. See also C<autojoin>.', </td> </tr> <tr> <td class="h" > <a name="3170">3170</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [qw/never always equals/], </td> </tr> <tr> <td class="h" > <a name="3171">3171</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'never', </td> </tr> <tr> <td class="h" > <a name="3172">3172</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'always', </td> </tr> <tr> <td class="h" > <a name="3173">3173</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3174">3174</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Bonn ]\n -- 1 --> { autosplit: equals; } [ Berlin ], [ Aachen ]", </td> </tr> <tr> <td class="h" > <a name="3175">3175</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3176">3176</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3177">3177</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }, # edge </td> </tr> <tr> <td class="h" > <a name="3178">3178</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3179">3179</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> group => { </td> </tr> <tr> <td class="h" > <a name="3180">3180</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> bordercolor => [ </td> </tr> <tr> <td class="h" > <a name="3181">3181</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The color of the L<border>. See the section about color names and values for reference.', </td> </tr> <tr> <td class="h" > <a name="3182">3182</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3183">3183</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => '#000000' }, </td> </tr> <tr> <td class="h" > <a name="3184">3184</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'rgb(255,255,0)', </td> </tr> <tr> <td class="h" > <a name="3185">3185</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_COLOR, </td> </tr> <tr> <td class="h" > <a name="3186">3186</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "node { border: black bold; }\n[ Black ]\n --> [ Red ] { bordercolor: red; }\n --> [ Green ] { bordercolor: green; }", </td> </tr> <tr> <td class="h" > <a name="3187">3187</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3188">3188</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3189">3189</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> borderstyle => [ </td> </tr> <tr> <td class="h" > <a name="3190">3190</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The style of the L<border>. The special styles "bold", "broad", "wide", "double-dash" and "bold-dash" will set and override the L<borderwidth>.', </td> </tr> <tr> <td class="h" > <a name="3191">3191</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ qw/none solid dotted dashed dot-dash dot-dot-dash double wave bold bold-dash broad double-dash wide/ ], </td> </tr> <tr> <td class="h" > <a name="3192">3192</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => 'none', 'node.anon' => 'none', 'group.anon' => 'none', node => 'solid', group => 'dashed' }, </td> </tr> <tr> <td class="h" > <a name="3193">3193</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'dotted', </td> </tr> <tr> <td class="h" > <a name="3194">3194</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3195">3195</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "node { border: dotted; }\n[ Dotted ]\n --> [ Dashed ] { borderstyle: dashed; }\n --> [ broad ] { borderstyle: broad; }", </td> </tr> <tr> <td class="h" > <a name="3196">3196</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3197">3197</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3198">3198</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> borderwidth => [ </td> </tr> <tr> <td class="h" > <a name="3199">3199</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The width of the L<border>. Certain L<border>-styles will override the width.', </td> </tr> <tr> <td class="h" > <a name="3200">3200</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^\d+(px|em)?\z/, </td> </tr> <tr> <td class="h" > <a name="3201">3201</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '1', </td> </tr> <tr> <td class="h" > <a name="3202">3202</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '2px', </td> </tr> <tr> <td class="h" > <a name="3203">3203</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3204">3204</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3205">3205</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> border => [ </td> </tr> <tr> <td class="h" > <a name="3206">3206</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The border. Can be any combination of L<borderstyle>, L<bordercolor> and L<borderwidth>.', </td> </tr> <tr> <td class="h" > <a name="3207">3207</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3208">3208</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { default => 'none', 'node.anon' => 'none', 'group.anon' => 'none', node => 'solid 1px #000000', group => 'dashed 1px #000000' }, </td> </tr> <tr> <td class="h" > <a name="3209">3209</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'dotted red', </td> </tr> <tr> <td class="h" > <a name="3210">3210</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3211">3211</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "[ Normal ]\n --> [ Bold ] { border: bold; }\n --> [ Broad ] { border: broad; }\n --> [ Wide ] { border: wide; }\n --> [ Bold-Dash ] { border: bold-dash; }", </td> </tr> <tr> <td class="h" > <a name="3212">3212</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3213">3213</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3214">3214</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> nodeclass => [ </td> </tr> <tr> <td class="h" > <a name="3215">3215</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The class into which all nodes of this group are put.', </td> </tr> <tr> <td class="h" > <a name="3216">3216</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^(|[a-zA-Z][a-zA-Z0-9_]*)\z/, </td> </tr> <tr> <td class="h" > <a name="3217">3217</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="3218">3218</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'cities', </td> </tr> <tr> <td class="h" > <a name="3219">3219</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3220">3220</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3221">3221</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> edgeclass => [ </td> </tr> <tr> <td class="h" > <a name="3222">3222</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'The class into which all edges defined in this group are put. This includes edges that run between two nodes belonging to the same group.', </td> </tr> <tr> <td class="h" > <a name="3223">3223</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^(|[a-zA-Z][a-zA-Z0-9_]*)\z/, </td> </tr> <tr> <td class="h" > <a name="3224">3224</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="3225">3225</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'connections', </td> </tr> <tr> <td class="h" > <a name="3226">3226</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3227">3227</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3228">3228</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> rank => [ </td> </tr> <tr> <td class="h" > <a name="3229">3229</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The rank of the group, used by the layouter to find the order and placement of group. " . </td> </tr> <tr> <td class="h" > <a name="3230">3230</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "Set to C<auto> (the default), C<same> or a positive number. " . </td> </tr> <tr> <td class="h" > <a name="3231">3231</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "See the section about ranks for reference and more examples.", </td> </tr> <tr> <td class="h" > <a name="3232">3232</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> qr/^(auto|same|\d{1,6})\z/, </td> </tr> <tr> <td class="h" > <a name="3233">3233</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'auto', </td> </tr> <tr> <td class="h" > <a name="3234">3234</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'same', </td> </tr> <tr> <td class="h" > <a name="3235">3235</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3236">3236</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "( Cities: [ Bonn ], [ Berlin ] ) { rank: 0; } ( Rivers: [ Rhein ], [ Sieg ] ) { rank: 0; }", </td> </tr> <tr> <td class="h" > <a name="3237">3237</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3238">3238</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3239">3239</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> root => [ </td> </tr> <tr> <td class="h" > <a name="3240">3240</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The name of the root node, given as hint to the layouter to start the layout there. When not set, the layouter will pick a node at semi-random.", </td> </tr> <tr> <td class="h" > <a name="3241">3241</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3242">3242</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="3243">3243</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'My Node', </td> </tr> <tr> <td class="h" > <a name="3244">3244</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_TEXT, </td> </tr> <tr> <td class="h" > <a name="3245">3245</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "( Cities: [ A ] --> [ B ] --> [ C ] --> [ D ] --> [ A ] ) { root: B; }", </td> </tr> <tr> <td class="h" > <a name="3246">3246</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3247">3247</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3248">3248</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> group => [ </td> </tr> <tr> <td class="h" > <a name="3249">3249</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "Puts the group inside this group, nesting the two groups inside each other.", </td> </tr> <tr> <td class="h" > <a name="3250">3250</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3251">3251</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '', </td> </tr> <tr> <td class="h" > <a name="3252">3252</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'Cities', </td> </tr> <tr> <td class="h" > <a name="3253">3253</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> undef, </td> </tr> <tr> <td class="h" > <a name="3254">3254</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "( Cities: [ Bonn ] ) ( Rivers: [ Rhein ] ) { group: Cities:; }", </td> </tr> <tr> <td class="h" > <a name="3255">3255</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3256">3256</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3257">3257</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> labelpos => [ </td> </tr> <tr> <td class="h" > <a name="3258">3258</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "The position of the group label.", </td> </tr> <tr> <td class="h" > <a name="3259">3259</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ qw/top bottom/ ], </td> </tr> <tr> <td class="h" > <a name="3260">3260</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'top', </td> </tr> <tr> <td class="h" > <a name="3261">3261</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'bottom', </td> </tr> <tr> <td class="h" > <a name="3262">3262</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ATTR_LIST, </td> </tr> <tr> <td class="h" > <a name="3263">3263</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> "group { labelpos: bottom; }\n\n ( My Group: [ Buxtehude ] -> [ Fuchsberg ] )\n" </td> </tr> <tr> <td class="h" > <a name="3264">3264</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ], </td> </tr> <tr> <td class="h" > <a name="3265">3265</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3266">3266</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }, # group </td> </tr> <tr> <td class="h" > <a name="3267">3267</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3268">3268</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # These entries will be allowed temporarily during Graphviz parsing for </td> </tr> <tr> <td class="h" > <a name="3269">3269</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # intermidiate values, like "shape=record". </td> </tr> <tr> <td class="h" > <a name="3270">3270</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> special => { }, </td> </tr> <tr> <td class="h" > <a name="3271">3271</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }; # end of attribute definitions </td> </tr> <tr> <td class="h" > <a name="3272">3272</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3273">3273</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub _allow_special_attributes </td> </tr> <tr> <td class="h" > <a name="3274">3274</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3275">3275</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # store a hash with special temp. attributes </td> </tr> <tr> <td class="h" > <a name="3276">3276</a> </td> <td class="c3" > 224 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3276-1"> 224 </a> </td> <td >   </td> <td > 203 </td> <td class="s"> my ($self, $att) = @_; </td> </tr> <tr> <td class="h" > <a name="3277">3277</a> </td> <td class="c3" > 224 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 321 </td> <td class="s"> $attributes->{special} = $att; </td> </tr> <tr> <td class="h" > <a name="3278">3278</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3279">3279</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3280">3280</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub _drop_special_attributes </td> </tr> <tr> <td class="h" > <a name="3281">3281</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3282">3282</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # drop the hash with special temp. attributes </td> </tr> <tr> <td class="h" > <a name="3283">3283</a> </td> <td class="c3" > 1241 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3283-1"> 1241 </a> </td> <td >   </td> <td > 1278 </td> <td class="s"> my ($self) = @_; </td> </tr> <tr> <td class="h" > <a name="3284">3284</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3285">3285</a> </td> <td class="c3" > 1241 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2256 </td> <td class="s"> $attributes->{special} = {}; </td> </tr> <tr> <td class="h" > <a name="3286">3286</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3287">3287</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3288">3288</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub _attribute_entries </td> </tr> <tr> <td class="h" > <a name="3289">3289</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3290">3290</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # for building the manual page </td> </tr> <tr> <td class="h" > <a name="3291">3291</a> </td> <td class="c0" > <a href="#3492"> 0 </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3291-1"> 0 </a> </td> <td >   </td> <td > 0 </td> <td class="s"> $attributes; </td> </tr> <tr> <td class="h" > <a name="3292">3292</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3293">3293</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3294">3294</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub border_attribute </td> </tr> <tr> <td class="h" > <a name="3295">3295</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3296">3296</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Return "1px solid red" from the border-(style|color|width) attributes, </td> </tr> <tr> <td class="h" > <a name="3297">3297</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # mainly used by as_txt() output. Does not use colorscheme! </td> </tr> <tr> <td class="h" > <a name="3298">3298</a> </td> <td class="c3" > 2168 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3298-1"> 2168 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3298-1"> 1 </a> </td> <td > 2073 </td> <td class="s"> my ($self, $class) = @_; </td> </tr> <tr> <td class="h" > <a name="3299">3299</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3300">3300</a> </td> <td class="c3" > 2168 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1353 </td> <td class="s"> my ($style,$width,$color); </td> </tr> <tr> <td class="h" > <a name="3301">3301</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3302">3302</a> </td> <td class="c3" > 2168 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3302-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1595 </td> <td class="s"> my $g = $self; $g = $self->{graph} if ref($self->{graph}); </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 2168 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 3605 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3303">3303</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3304">3304</a> </td> <td class="c3" > 2168 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1428 </td> <td class="s"> my ($def_style, $def_color, $def_width); </td> </tr> <tr> <td class="h" > <a name="3305">3305</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3306">3306</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # XXX TODO need no_default_attribute() </td> </tr> <tr> <td class="h" > <a name="3307">3307</a> </td> <td class="c3" > 2168 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3307-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 2563 </td> <td class="s"> if (defined $class) </td> </tr> <tr> <td class="h" > <a name="3308">3308</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3309">3309</a> </td> <td class="c3" > 1299 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1830 </td> <td class="s"> $style = $g->attribute($class, 'borderstyle'); </td> </tr> <tr> <td class="h" > <a name="3310">3310</a> </td> <td class="c3" > 1299 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3310-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 2490 </td> <td class="s"> return $style if $style eq 'none'; </td> </tr> <tr> <td class="h" > <a name="3311">3311</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3312">3312</a> </td> <td class="c3" > 1077 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1669 </td> <td class="s"> $def_style = $g->default_attribute('borderstyle'); </td> </tr> <tr> <td class="h" > <a name="3313">3313</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3314">3314</a> </td> <td class="c3" > 1077 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1525 </td> <td class="s"> $width = $g->attribute($class,'borderwidth'); </td> </tr> <tr> <td class="h" > <a name="3315">3315</a> </td> <td class="c3" > 1077 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1990 </td> <td class="s"> $def_width = $g->default_attribute($class,'borderwidth'); </td> </tr> <tr> <td class="h" > <a name="3316">3316</a> </td> <td class="c3" > 1077 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3316-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1742 </td> <td class="s"> $width = '' if $def_width eq $width; </td> </tr> <tr> <td class="h" > <a name="3317">3317</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3318">3318</a> </td> <td class="c3" > 1077 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1275 </td> <td class="s"> $color = $g->attribute($class,'bordercolor'); </td> </tr> <tr> <td class="h" > <a name="3319">3319</a> </td> <td class="c3" > 1077 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1568 </td> <td class="s"> $def_color = $g->default_attribute($class,'bordercolor'); </td> </tr> <tr> <td class="h" > <a name="3320">3320</a> </td> <td class="c3" > 1077 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3320-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1814 </td> <td class="s"> $color = '' if $def_color eq $color; </td> </tr> <tr> <td class="h" > <a name="3321">3321</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3322">3322</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else </td> </tr> <tr> <td class="h" > <a name="3323">3323</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3324">3324</a> </td> <td class="c3" > 869 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1188 </td> <td class="s"> $style = $self->attribute('borderstyle'); </td> </tr> <tr> <td class="h" > <a name="3325">3325</a> </td> <td class="c3" > 869 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3325-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1405 </td> <td class="s"> return $style if $style eq 'none'; </td> </tr> <tr> <td class="h" > <a name="3326">3326</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3327">3327</a> </td> <td class="c3" > 830 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1271 </td> <td class="s"> $def_style = $self->default_attribute('borderstyle'); </td> </tr> <tr> <td class="h" > <a name="3328">3328</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3329">3329</a> </td> <td class="c3" > 830 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1114 </td> <td class="s"> $width = $self->attribute('borderwidth'); </td> </tr> <tr> <td class="h" > <a name="3330">3330</a> </td> <td class="c3" > 830 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1255 </td> <td class="s"> $def_width = $self->default_attribute('borderwidth'); </td> </tr> <tr> <td class="h" > <a name="3331">3331</a> </td> <td class="c3" > 830 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3331-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1356 </td> <td class="s"> $width = '' if $def_width eq $width; </td> </tr> <tr> <td class="h" > <a name="3332">3332</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3333">3333</a> </td> <td class="c3" > 830 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 987 </td> <td class="s"> $color = $self->attribute('bordercolor'); </td> </tr> <tr> <td class="h" > <a name="3334">3334</a> </td> <td class="c3" > 830 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1402 </td> <td class="s"> $def_color = $self->default_attribute('bordercolor'); </td> </tr> <tr> <td class="h" > <a name="3335">3335</a> </td> <td class="c3" > 830 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3335-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1451 </td> <td class="s"> $color = '' if $def_color eq $color; </td> </tr> <tr> <td class="h" > <a name="3336">3336</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3337">3337</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3338">3338</a> </td> <td class="c3" > 1907 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3338-1"> 100 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3338-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 5704 </td> <td class="s"> return '' if $def_style eq $style and $color eq '' && $width eq ''; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#-2"> 66 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3339">3339</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3340">3340</a> </td> <td class="c3" > 1120 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1669 </td> <td class="s"> Graph::Easy::_border_attribute($style, $width, $color); </td> </tr> <tr> <td class="h" > <a name="3341">3341</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3342">3342</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3343">3343</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub _unknown_attribute </td> </tr> <tr> <td class="h" > <a name="3344">3344</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3345">3345</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # either just warn, or raise an error for unknown attributes </td> </tr> <tr> <td class="h" > <a name="3346">3346</a> </td> <td class="c3" > 54 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3346-1"> 54 </a> </td> <td >   </td> <td > 52 </td> <td class="s"> my ($self, $name, $class) = @_; </td> </tr> <tr> <td class="h" > <a name="3347">3347</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3348">3348</a> </td> <td class="c3" > 54 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3348-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 78 </td> <td class="s"> if ($self->{_warn_on_unknown_attributes}) </td> </tr> <tr> <td class="h" > <a name="3349">3349</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3350">3350</a> </td> <td class="c3" > 6 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 24 </td> <td class="s"> $self->warn("Ignoring unknown attribute '$name' for class $class") </td> </tr> <tr> <td class="h" > <a name="3351">3351</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3352">3352</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else </td> </tr> <tr> <td class="h" > <a name="3353">3353</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3354">3354</a> </td> <td class="c3" > 48 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 123 </td> <td class="s"> $self->error("Error in attribute: '$name' is not a valid attribute name for a $class"); </td> </tr> <tr> <td class="h" > <a name="3355">3355</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3356">3356</a> </td> <td class="c3" > 54 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 116 </td> <td class="s"> return; </td> </tr> <tr> <td class="h" > <a name="3357">3357</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3358">3358</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3359">3359</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub default_attribute </td> </tr> <tr> <td class="h" > <a name="3360">3360</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3361">3361</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Return the default value for the attribute. </td> </tr> <tr> <td class="h" > <a name="3362">3362</a> </td> <td class="c3" > 6274 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3362-1"> 6274 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3362-1"> 1 </a> </td> <td > 5653 </td> <td class="s"> my ($self, $class, $name) = @_; </td> </tr> <tr> <td class="h" > <a name="3363">3363</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3364">3364</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # allow $self->default_attribute('fill'); </td> </tr> <tr> <td class="h" > <a name="3365">3365</a> </td> <td class="c3" > 6274 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3365-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 8514 </td> <td class="s"> if (scalar @_ == 2) </td> </tr> <tr> <td class="h" > <a name="3366">3366</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3367">3367</a> </td> <td class="c3" > 3683 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2631 </td> <td class="s"> $name = $class; </td> </tr> <tr> <td class="h" > <a name="3368">3368</a> </td> <td class="c3" > 3683 </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3368-1"> 50 </a> </td> <td >   </td> <td >   </td> <td > 5945 </td> <td class="s"> $class = $self->{class} || 'graph'; </td> </tr> <tr> <td class="h" > <a name="3369">3369</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3370">3370</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3371">3371</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # get the base class: node.foo => node </td> </tr> <tr> <td class="h" > <a name="3372">3372</a> </td> <td class="c3" > 6274 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4516 </td> <td class="s"> my $base_class = $class; $base_class =~ s/\..*//; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 6274 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 5441 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3373">3373</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3374">3374</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Remap alias names without "-" to their hyphenated version: </td> </tr> <tr> <td class="h" > <a name="3375">3375</a> </td> <td class="c3" > 6274 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3375-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 8098 </td> <td class="s"> $name = $att_aliases->{$name} if exists $att_aliases->{$name}; </td> </tr> <tr> <td class="h" > <a name="3376">3376</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3377">3377</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # "x-foo-bar" is a custom attribute, so allow it always. The name must </td> </tr> <tr> <td class="h" > <a name="3378">3378</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # consist only of letters and hyphens, and end in a letter or number. </td> </tr> <tr> <td class="h" > <a name="3379">3379</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Hyphens must be separated by letters. Custom attributes do not have a default. </td> </tr> <tr> <td class="h" > <a name="3380">3380</a> </td> <td class="c3" > 6274 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3380-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 14438 </td> <td class="s"> return '' if $name =~ $qr_custom_attribute; </td> </tr> <tr> <td class="h" > <a name="3381">3381</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3382">3382</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # prevent ->{special}->{node} from springing into existence </td> </tr> <tr> <td class="h" > <a name="3383">3383</a> </td> <td class="c3" > 6274 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3383-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 4951 </td> <td class="s"> my $s = $attributes->{special}; $s = $s->{$class} if exists $s->{$class}; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 6274 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 7164 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3384">3384</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3385">3385</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $entry = $s->{$name} || </td> </tr> <tr> <td class="h" > <a name="3386">3386</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $attributes->{all}->{$name} || </td> </tr> <tr> <td class="h" > <a name="3387">3387</a> </td> <td class="c3" > 6274 </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3387-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 15316 </td> <td class="s"> $attributes->{$base_class}->{$name}; </td> </tr> <tr> <td class="h" > <a name="3388">3388</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3389">3389</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Didn't found an entry: </td> </tr> <tr> <td class="h" > <a name="3390">3390</a> </td> <td class="c3" > 6274 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3390-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 8677 </td> <td class="s"> return $self->_unknown_attribute($name,$class) unless ref($entry); </td> </tr> <tr> <td class="h" > <a name="3391">3391</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3392">3392</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # get the default attribute from the entry </td> </tr> <tr> <td class="h" > <a name="3393">3393</a> </td> <td class="c3" > 6274 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4516 </td> <td class="s"> my $def = $entry->[ ATTR_DEFAULT_SLOT ]; my $val = $def; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 6274 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4104 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3394">3394</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3395">3395</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # "node.subclass" gets the default from "node", 'edge' from 'default': </td> </tr> <tr> <td class="h" > <a name="3396">3396</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # " { default => 'foo', 'node.anon' => 'none', node => 'solid' }": </td> </tr> <tr> <td class="h" > <a name="3397">3397</a> </td> <td class="c3" > 6274 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3397-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 7522 </td> <td class="s"> if (ref $def) </td> </tr> <tr> <td class="h" > <a name="3398">3398</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3399">3399</a> </td> <td class="c3" > 4341 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 3866 </td> <td class="s"> $val = $def->{$class}; </td> </tr> <tr> <td class="h" > <a name="3400">3400</a> </td> <td class="c3" > 4341 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3400-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 5770 </td> <td class="s"> $val = $def->{$base_class} unless defined $val; </td> </tr> <tr> <td class="h" > <a name="3401">3401</a> </td> <td class="c3" > 4341 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3401-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 5621 </td> <td class="s"> $val = $def->{default} unless defined $val; </td> </tr> <tr> <td class="h" > <a name="3402">3402</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3403">3403</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3404">3404</a> </td> <td class="c3" > 6274 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 12892 </td> <td class="s"> $val; </td> </tr> <tr> <td class="h" > <a name="3405">3405</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3406">3406</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3407">3407</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub raw_attribute </td> </tr> <tr> <td class="h" > <a name="3408">3408</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3409">3409</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Return either the raw attribute set on an object (honoring inheritance), </td> </tr> <tr> <td class="h" > <a name="3410">3410</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # or undef for when that specific attribute is not set. Does *not* </td> </tr> <tr> <td class="h" > <a name="3411">3411</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # inspect class attributes. </td> </tr> <tr> <td class="h" > <a name="3412">3412</a> </td> <td class="c3" > 7354 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3412-1"> 7354 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3412-1"> 1 </a> </td> <td > 6522 </td> <td class="s"> my ($self, $name) = @_; </td> </tr> <tr> <td class="h" > <a name="3413">3413</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3414">3414</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Remap alias names without "-" to their hyphenated version: </td> </tr> <tr> <td class="h" > <a name="3415">3415</a> </td> <td class="c3" > 7354 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3415-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 10021 </td> <td class="s"> $name = $att_aliases->{$name} if exists $att_aliases->{$name}; </td> </tr> <tr> <td class="h" > <a name="3416">3416</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3417">3417</a> </td> <td class="c3" > 7354 </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3417-1"> 50 </a> </td> <td >   </td> <td >   </td> <td > 10638 </td> <td class="s"> my $class = $self->{class} || 'graph'; </td> </tr> <tr> <td class="h" > <a name="3418">3418</a> </td> <td class="c3" > 7354 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4950 </td> <td class="s"> my $base_class = $class; $base_class =~ s/\..*//; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 7354 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 7532 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3419">3419</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3420">3420</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # prevent ->{special}->{node} from springing into existence </td> </tr> <tr> <td class="h" > <a name="3421">3421</a> </td> <td class="c3" > 7354 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3421-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 5997 </td> <td class="s"> my $s = $attributes->{special}; $s = $s->{$class} if exists $s->{$class}; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 7354 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 8901 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3422">3422</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3423">3423</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $entry = $s->{$name} || </td> </tr> <tr> <td class="h" > <a name="3424">3424</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $attributes->{all}->{$name} || </td> </tr> <tr> <td class="h" > <a name="3425">3425</a> </td> <td class="c3" > 7354 </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3425-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 18436 </td> <td class="s"> $attributes->{$base_class}->{$name}; </td> </tr> <tr> <td class="h" > <a name="3426">3426</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3427">3427</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # create a fake entry for custom attributes </td> </tr> <tr> <td class="h" > <a name="3428">3428</a> </td> <td class="c3" > 7354 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3428-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 19275 </td> <td class="s"> $entry = [ '', undef, '', '', ATTR_STRING, '' ] </td> </tr> <tr> <td class="h" > <a name="3429">3429</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if $name =~ $qr_custom_attribute; </td> </tr> <tr> <td class="h" > <a name="3430">3430</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3431">3431</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Didn't found an entry: </td> </tr> <tr> <td class="h" > <a name="3432">3432</a> </td> <td class="c3" > 7354 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3432-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 10514 </td> <td class="s"> return $self->_unknown_attribute($name,$class) unless ref($entry); </td> </tr> <tr> <td class="h" > <a name="3433">3433</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3434">3434</a> </td> <td class="c3" > 7354 </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3434-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 16544 </td> <td class="s"> my $type = $entry->[ ATTR_TYPE_SLOT ] || ATTR_STRING; </td> </tr> <tr> <td class="h" > <a name="3435">3435</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3436">3436</a> </td> <td class="c3" > 7354 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4627 </td> <td class="s"> my $val; </td> </tr> <tr> <td class="h" > <a name="3437">3437</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3438">3438</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ########################################################################### </td> </tr> <tr> <td class="h" > <a name="3439">3439</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Check the object directly first </td> </tr> <tr> <td class="h" > <a name="3440">3440</a> </td> <td class="c3" > 7354 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 6258 </td> <td class="s"> my $a = $self->{att}; </td> </tr> <tr> <td class="h" > <a name="3441">3441</a> </td> <td class="c3" > 7354 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3441-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 8773 </td> <td class="s"> if (exists $a->{graph}) </td> </tr> <tr> <td class="h" > <a name="3442">3442</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3443">3443</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # for graphs, look directly in the class to save time: </td> </tr> <tr> <td class="h" > <a name="3444">3444</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $val = $a->{graph}->{$name} </td> </tr> <tr> <td class="h" > <a name="3445">3445</a> </td> <td class="c3" > 1125 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3445-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 2028 </td> <td class="s"> if exists $a->{graph}->{$name}; </td> </tr> <tr> <td class="h" > <a name="3446">3446</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3447">3447</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else </td> </tr> <tr> <td class="h" > <a name="3448">3448</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3449">3449</a> </td> <td class="c3" > 6229 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3449-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 8572 </td> <td class="s"> $val = $a->{$name} if exists $a->{$name}; </td> </tr> <tr> <td class="h" > <a name="3450">3450</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3451">3451</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3452">3452</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # For "background", and objects that are in a group, we inherit "fill": </td> </tr> <tr> <td class="h" > <a name="3453">3453</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $val = $self->{group}->color_attribute('fill') </td> </tr> <tr> <td class="h" > <a name="3454">3454</a> </td> <td class="c3" > 7354 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3454-1"> 50 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3454-1"> 33 </a> </td> <td >   </td> <td >   </td> <td > 11372 </td> <td class="s"> if $name eq 'background' && ref $self->{group}; </td> </tr> <tr> <td class="h" > <a name="3455">3455</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3456">3456</a> </td> <td class="c3" > 7354 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3456-1"> 100 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3456-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 22012 </td> <td class="s"> return $val if !defined $val || $val ne 'inherit' || </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#-2"> 66 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3457">3457</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $name =~ /^x-([a-z_]+-)*[a-z_]+([0-9]*)\z/; </td> </tr> <tr> <td class="h" > <a name="3458">3458</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3459">3459</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # $val is defined, and "inherit" (and it is not a special attribute) </td> </tr> <tr> <td class="h" > <a name="3460">3460</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3461">3461</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # for graphs, there is nothing to inherit from </td> </tr> <tr> <td class="h" > <a name="3462">3462</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3462-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 3 </td> <td class="s"> return $val if $class eq 'graph'; </td> </tr> <tr> <td class="h" > <a name="3463">3463</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3464">3464</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # we try classes in this order: </td> </tr> <tr> <td class="h" > <a name="3465">3465</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # "node", "graph" </td> </tr> <tr> <td class="h" > <a name="3466">3466</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3467">3467</a> </td> <td class="c3" > 1 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2 </td> <td class="s"> my @tries = (); </td> </tr> <tr> <td class="h" > <a name="3468">3468</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # if the class is already "node", skip it: </td> </tr> <tr> <td class="h" > <a name="3469">3469</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3469-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 3 </td> <td class="s"> if ($class =~ /\./) </td> </tr> <tr> <td class="h" > <a name="3470">3470</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3471">3471</a> </td> <td class="c3" > 1 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2 </td> <td class="s"> my $parent_class = $class; $parent_class =~ s/\..*//; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 1 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 3 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3472">3472</a> </td> <td class="c3" > 1 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2 </td> <td class="s"> push @tries, $parent_class; </td> </tr> <tr> <td class="h" > <a name="3473">3473</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3474">3474</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3475">3475</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # If not part of a graph, we cannot have class attributes, but </td> </tr> <tr> <td class="h" > <a name="3476">3476</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # we still can find default attributes. So fake a "graph": </td> </tr> <tr> <td class="h" > <a name="3477">3477</a> </td> <td class="c3" > 1 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2 </td> <td class="s"> my $g = $self->{graph}; # for objects in a graph </td> </tr> <tr> <td class="h" > <a name="3478">3478</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3478-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 3 </td> <td class="s"> $g = { att => {} } unless ref($g); # for objects not in a graph </td> </tr> <tr> <td class="h" > <a name="3479">3479</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3480">3480</a> </td> <td class="c3" > 1 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1 </td> <td class="s"> $val = undef; </td> </tr> <tr> <td class="h" > <a name="3481">3481</a> </td> <td class="c3" > 1 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 3 </td> <td class="s"> for my $try (@tries) </td> </tr> <tr> <td class="h" > <a name="3482">3482</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3483">3483</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # print STDERR "# Trying class $try for attribute $name\n"; </td> </tr> <tr> <td class="h" > <a name="3484">3484</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3485">3485</a> </td> <td class="c3" > 1 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2 </td> <td class="s"> my $att = $g->{att}->{$try}; </td> </tr> <tr> <td class="h" > <a name="3486">3486</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3487">3487</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3487-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 3 </td> <td class="s"> $val = $att->{$name} if exists $att->{$name}; </td> </tr> <tr> <td class="h" > <a name="3488">3488</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3489">3489</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # value was not defined, so get the default value </td> </tr> <tr> <td class="h" > <a name="3490">3490</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3490-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 4 </td> <td class="s"> if (!defined $val) </td> </tr> <tr> <td class="h" > <a name="3491">3491</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3492">3492</a> </td> <td class="c0" > <a href="# "> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> my $def = $entry->[ ATTR_DEFAULT_SLOT ]; $val = $def; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c0" > <a href="#3496"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3493">3493</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3494">3494</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # "node.subclass" gets the default from "node", 'edge' from 'default': </td> </tr> <tr> <td class="h" > <a name="3495">3495</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # " { default => 'foo', 'node.anon' => 'none', node => 'solid' }": </td> </tr> <tr> <td class="h" > <a name="3496">3496</a> </td> <td class="c0" > <a href="#3498"> 0 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3496-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> if (ref $def) </td> </tr> <tr> <td class="h" > <a name="3497">3497</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3498">3498</a> </td> <td class="c0" > <a href="#3499"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $val = $def->{$try}; </td> </tr> <tr> <td class="h" > <a name="3499">3499</a> </td> <td class="c0" > <a href="#3501"> 0 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3499-1"> 0 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3499-1"> 0 </a> </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> if (!defined $val && $try =~ /\./) </td> </tr> <tr> <td class="h" > <a name="3500">3500</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3501">3501</a> </td> <td class="c0" > <a href="# "> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> my $base = $try; $base =~ s/\..*//; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c0" > <a href="#3502"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3502">3502</a> </td> <td class="c0" > <a href="#3504"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $val = $def->{$base}; </td> </tr> <tr> <td class="h" > <a name="3503">3503</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3504">3504</a> </td> <td class="c0" > <a href="#3523"> 0 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3504-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $val = $def->{default} unless defined $val; </td> </tr> <tr> <td class="h" > <a name="3505">3505</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3506">3506</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3507">3507</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # $val must now be defined, because default value must exist. </td> </tr> <tr> <td class="h" > <a name="3508">3508</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3509">3509</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # print STDERR "# Found '$val' for $try\n"; </td> </tr> <tr> <td class="h" > <a name="3510">3510</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3511">3511</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3511-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 2 </td> <td class="s"> if ($name ne 'label') </td> </tr> <tr> <td class="h" > <a name="3512">3512</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3513">3513</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3513-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 13 </td> <td class="s"> $self->warn("Uninitialized default for attribute '$name' on class '$try'\n") </td> </tr> <tr> <td class="h" > <a name="3514">3514</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> unless defined $val; </td> </tr> <tr> <td class="h" > <a name="3515">3515</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3516">3516</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3517">3517</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3517-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 4 </td> <td class="s"> return $val if $type >= ATTR_NO_INHERIT; </td> </tr> <tr> <td class="h" > <a name="3518">3518</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3519">3519</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # got some value other than inherit or already at top of tree: </td> </tr> <tr> <td class="h" > <a name="3520">3520</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3520-1"> 50 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3520-1"> 33 </a> </td> <td >   </td> <td >   </td> <td > 16 </td> <td class="s"> return $val if defined $val && $val ne 'inherit'; </td> </tr> <tr> <td class="h" > <a name="3521">3521</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3522">3522</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # try next class in inheritance tree </td> </tr> <tr> <td class="h" > <a name="3523">3523</a> </td> <td class="c0" > <a href="#3526"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $val = undef; </td> </tr> <tr> <td class="h" > <a name="3524">3524</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3525">3525</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3526">3526</a> </td> <td class="c0" > <a href="#3596"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $val; </td> </tr> <tr> <td class="h" > <a name="3527">3527</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3528">3528</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3529">3529</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub color_attribute </td> </tr> <tr> <td class="h" > <a name="3530">3530</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3531">3531</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Just like get_attribute(), but for colors, and returns them as hex, </td> </tr> <tr> <td class="h" > <a name="3532">3532</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # using the current colorscheme. </td> </tr> <tr> <td class="h" > <a name="3533">3533</a> </td> <td class="c3" > 332 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3533-1"> 332 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3533-1"> 1 </a> </td> <td > 284 </td> <td class="s"> my $self = shift; </td> </tr> <tr> <td class="h" > <a name="3534">3534</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3535">3535</a> </td> <td class="c3" > 332 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 583 </td> <td class="s"> my $color = $self->attribute(@_); </td> </tr> <tr> <td class="h" > <a name="3536">3536</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3537">3537</a> </td> <td class="c3" > 332 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3537-1"> 100 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3537-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 1154 </td> <td class="s"> if ($color !~ /^#/ && $color ne '') </td> </tr> <tr> <td class="h" > <a name="3538">3538</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3539">3539</a> </td> <td class="c3" > 297 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 456 </td> <td class="s"> my $scheme = $self->attribute('colorscheme'); </td> </tr> <tr> <td class="h" > <a name="3540">3540</a> </td> <td class="c3" > 297 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 656 </td> <td class="s"> $color = Graph::Easy->color_as_hex($color, $scheme); </td> </tr> <tr> <td class="h" > <a name="3541">3541</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3542">3542</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3543">3543</a> </td> <td class="c3" > 332 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 716 </td> <td class="s"> $color; </td> </tr> <tr> <td class="h" > <a name="3544">3544</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3545">3545</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3546">3546</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub raw_color_attribute </td> </tr> <tr> <td class="h" > <a name="3547">3547</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3548">3548</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Just like raw_attribute(), but for colors, and returns them as hex, </td> </tr> <tr> <td class="h" > <a name="3549">3549</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # using the current colorscheme. </td> </tr> <tr> <td class="h" > <a name="3550">3550</a> </td> <td class="c3" > 34 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3550-1"> 34 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3550-1"> 1 </a> </td> <td > 29 </td> <td class="s"> my $self = shift; </td> </tr> <tr> <td class="h" > <a name="3551">3551</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3552">3552</a> </td> <td class="c3" > 34 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 53 </td> <td class="s"> my $color = $self->raw_attribute(@_); </td> </tr> <tr> <td class="h" > <a name="3553">3553</a> </td> <td class="c3" > 34 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3553-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 116 </td> <td class="s"> return undef unless defined $color; # default to undef </td> </tr> <tr> <td class="h" > <a name="3554">3554</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3555">3555</a> </td> <td class="c3" > 7 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3555-1"> 50 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3555-1"> 33 </a> </td> <td >   </td> <td >   </td> <td > 27 </td> <td class="s"> if ($color !~ /^#/ && $color ne '') </td> </tr> <tr> <td class="h" > <a name="3556">3556</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3557">3557</a> </td> <td class="c3" > 7 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 15 </td> <td class="s"> my $scheme = $self->attribute('colorscheme'); </td> </tr> <tr> <td class="h" > <a name="3558">3558</a> </td> <td class="c3" > 7 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 17 </td> <td class="s"> $color = Graph::Easy->color_as_hex($color, $scheme); </td> </tr> <tr> <td class="h" > <a name="3559">3559</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3560">3560</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3561">3561</a> </td> <td class="c3" > 7 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 18 </td> <td class="s"> $color; </td> </tr> <tr> <td class="h" > <a name="3562">3562</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3563">3563</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3564">3564</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub _attribute_entry </td> </tr> <tr> <td class="h" > <a name="3565">3565</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3566">3566</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # return the entry defining an attribute, based on the attribute name </td> </tr> <tr> <td class="h" > <a name="3567">3567</a> </td> <td class="c3" > 452 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3567-1"> 452 </a> </td> <td >   </td> <td > 404 </td> <td class="s"> my ($self, $class, $name) = @_; </td> </tr> <tr> <td class="h" > <a name="3568">3568</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3569">3569</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # font-size => fontsize </td> </tr> <tr> <td class="h" > <a name="3570">3570</a> </td> <td class="c3" > 452 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3570-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 560 </td> <td class="s"> $name = $att_aliases->{$name} if exists $att_aliases->{$name}; </td> </tr> <tr> <td class="h" > <a name="3571">3571</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3572">3572</a> </td> <td class="c3" > 452 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 286 </td> <td class="s"> my $base_class = $class; $base_class =~ s/\.(.*)//; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 452 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 463 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3573">3573</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3574">3574</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # prevent ->{special}->{node} from springing into existence </td> </tr> <tr> <td class="h" > <a name="3575">3575</a> </td> <td class="c3" > 452 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3575-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 360 </td> <td class="s"> my $s = $attributes->{special}; $s = $s->{$class} if exists $s->{$class}; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 452 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 503 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3576">3576</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $entry = $s->{$name} || </td> </tr> <tr> <td class="h" > <a name="3577">3577</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $attributes->{all}->{$name} || </td> </tr> <tr> <td class="h" > <a name="3578">3578</a> </td> <td class="c3" > 452 </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3578-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 1056 </td> <td class="s"> $attributes->{$base_class}->{$name}; </td> </tr> <tr> <td class="h" > <a name="3579">3579</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3580">3580</a> </td> <td class="c3" > 452 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 599 </td> <td class="s"> $entry; </td> </tr> <tr> <td class="h" > <a name="3581">3581</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3582">3582</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3583">3583</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub attribute </td> </tr> <tr> <td class="h" > <a name="3584">3584</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3585">3585</a> </td> <td class="c3" > 71190 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3585-1"> 71190 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3585-1"> 1 </a> </td> <td > 68243 </td> <td class="s"> my ($self, $class, $name) = @_; </td> </tr> <tr> <td class="h" > <a name="3586">3586</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3587">3587</a> </td> <td class="c3" > 71190 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 48681 </td> <td class="s"> my $three_arg = 0; </td> </tr> <tr> <td class="h" > <a name="3588">3588</a> </td> <td class="c3" > 71190 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3588-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 82437 </td> <td class="s"> if (scalar @_ == 3) </td> </tr> <tr> <td class="h" > <a name="3589">3589</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3590">3590</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # $self->attribute($class,$name) if only allowed on graphs </td> </tr> <tr> <td class="h" > <a name="3591">3591</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> return $self->error("Calling $self->attribute($class,$name) only allowed for graphs") </td> </tr> <tr> <td class="h" > <a name="3592">3592</a> </td> <td class="c3" > 8309 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3592-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 11177 </td> <td class="s"> if exists $self->{graph}; </td> </tr> <tr> <td class="h" > <a name="3593">3593</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3594">3594</a> </td> <td class="c3" > 8309 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3594-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 19569 </td> <td class="s"> if ($class !~ /^(node|group|edge|graph\z)/) </td> </tr> <tr> <td class="h" > <a name="3595">3595</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3596">3596</a> </td> <td class="c0" > <a href="#3667"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> return $self->error ("Illegal class '$class' when trying to get attribute '$name'"); </td> </tr> <tr> <td class="h" > <a name="3597">3597</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3598">3598</a> </td> <td class="c3" > 8309 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 5434 </td> <td class="s"> $three_arg = 1; </td> </tr> <tr> <td class="h" > <a name="3599">3599</a> </td> <td class="c3" > 8309 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3599-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 11368 </td> <td class="s"> return $self->border_attribute($class) if $name eq 'border'; # virtual attribute </td> </tr> <tr> <td class="h" > <a name="3600">3600</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3601">3601</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else </td> </tr> <tr> <td class="h" > <a name="3602">3602</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3603">3603</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # allow calls of the style get_attribute('background'); </td> </tr> <tr> <td class="h" > <a name="3604">3604</a> </td> <td class="c3" > 62881 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 43427 </td> <td class="s"> $name = $class; </td> </tr> <tr> <td class="h" > <a name="3605">3605</a> </td> <td class="c3" > 62881 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3605-1"> 100 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3605-1"> 50 </a> </td> <td >   </td> <td >   </td> <td > 81770 </td> <td class="s"> $class = $self->{class} || 'graph' if $name eq 'class'; # avoid deep recursion </td> </tr> <tr> <td class="h" > <a name="3606">3606</a> </td> <td class="c3" > 62881 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3606-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 75603 </td> <td class="s"> if ($name ne 'class') </td> </tr> <tr> <td class="h" > <a name="3607">3607</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3608">3608</a> </td> <td class="c3" > 62805 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 58036 </td> <td class="s"> $class = $self->{cache}->{class}; </td> </tr> <tr> <td class="h" > <a name="3609">3609</a> </td> <td class="c3" > 62805 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3609-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 117212 </td> <td class="s"> $class = $self->class() unless defined $class; </td> </tr> <tr> <td class="h" > <a name="3610">3610</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3611">3611</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3612">3612</a> </td> <td class="c3" > 62881 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3612-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 84943 </td> <td class="s"> return $self->border_attribute() if $name eq 'border'; # virtual attribute </td> </tr> <tr> <td class="h" > <a name="3613">3613</a> </td> <td class="c3" > 62819 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3613-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 77792 </td> <td class="s"> return join (",",$self->size()) if $name eq 'size'; # virtual attribute </td> </tr> <tr> <td class="h" > <a name="3614">3614</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3615">3615</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3616">3616</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # print STDERR "# called attribute($class,$name)\n"; </td> </tr> <tr> <td class="h" > <a name="3617">3617</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3618">3618</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # font-size => fontsize </td> </tr> <tr> <td class="h" > <a name="3619">3619</a> </td> <td class="c3" > 70252 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3619-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 93113 </td> <td class="s"> $name = $att_aliases->{$name} if exists $att_aliases->{$name}; </td> </tr> <tr> <td class="h" > <a name="3620">3620</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3621">3621</a> </td> <td class="c3" > 70252 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 48927 </td> <td class="s"> my $base_class = $class; $base_class =~ s/\.(.*)//; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 70252 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 61473 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3622">3622</a> </td> <td class="c3" > 70252 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3622-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 62907 </td> <td class="s"> my $sub_class = $1; $sub_class = '' unless defined $sub_class; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 70252 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 85824 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3623">3623</a> </td> <td class="c3" > 70252 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3623-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 81014 </td> <td class="s"> if ($name eq 'class') </td> </tr> <tr> <td class="h" > <a name="3624">3624</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3625">3625</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # "[A] { class: red; }" => "red" </td> </tr> <tr> <td class="h" > <a name="3626">3626</a> </td> <td class="c3" > 76 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3626-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 114 </td> <td class="s"> return $sub_class if $sub_class ne ''; </td> </tr> <tr> <td class="h" > <a name="3627">3627</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # "node { class: green; } [A]" => "green": fall through and let the code </td> </tr> <tr> <td class="h" > <a name="3628">3628</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # below look up the attribute or fall back to the default '': </td> </tr> <tr> <td class="h" > <a name="3629">3629</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3630">3630</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3631">3631</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # prevent ->{special}->{node} from springing into existence </td> </tr> <tr> <td class="h" > <a name="3632">3632</a> </td> <td class="c3" > 70243 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3632-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 54590 </td> <td class="s"> my $s = $attributes->{special}; $s = $s->{$class} if exists $s->{$class}; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 70243 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 82756 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3633">3633</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $entry = $s->{$name} || </td> </tr> <tr> <td class="h" > <a name="3634">3634</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $attributes->{all}->{$name} || </td> </tr> <tr> <td class="h" > <a name="3635">3635</a> </td> <td class="c3" > 70243 </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3635-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 169231 </td> <td class="s"> $attributes->{$base_class}->{$name}; </td> </tr> <tr> <td class="h" > <a name="3636">3636</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3637">3637</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # create a fake entry for custom attributes </td> </tr> <tr> <td class="h" > <a name="3638">3638</a> </td> <td class="c3" > 70243 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3638-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 182805 </td> <td class="s"> $entry = [ '', undef, '', '', ATTR_STRING, '' ] </td> </tr> <tr> <td class="h" > <a name="3639">3639</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if $name =~ $qr_custom_attribute; </td> </tr> <tr> <td class="h" > <a name="3640">3640</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3641">3641</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Didn't found an entry: </td> </tr> <tr> <td class="h" > <a name="3642">3642</a> </td> <td class="c3" > 70243 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3642-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 93696 </td> <td class="s"> return $self->_unknown_attribute($name,$class) unless ref($entry); </td> </tr> <tr> <td class="h" > <a name="3643">3643</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3644">3644</a> </td> <td class="c3" > 70243 </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3644-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 142474 </td> <td class="s"> my $type = $entry->[ ATTR_TYPE_SLOT ] || ATTR_STRING; </td> </tr> <tr> <td class="h" > <a name="3645">3645</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3646">3646</a> </td> <td class="c3" > 70243 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 43245 </td> <td class="s"> my $val; </td> </tr> <tr> <td class="h" > <a name="3647">3647</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3648">3648</a> </td> <td class="c3" > 70243 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3648-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 87940 </td> <td class="s"> if ($three_arg == 0) </td> </tr> <tr> <td class="h" > <a name="3649">3649</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3650">3650</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ########################################################################### </td> </tr> <tr> <td class="h" > <a name="3651">3651</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Check the object directly first </td> </tr> <tr> <td class="h" > <a name="3652">3652</a> </td> <td class="c3" > 62785 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 51821 </td> <td class="s"> my $a = $self->{att}; </td> </tr> <tr> <td class="h" > <a name="3653">3653</a> </td> <td class="c3" > 62785 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3653-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 62284 </td> <td class="s"> if (exists $a->{graph}) </td> </tr> <tr> <td class="h" > <a name="3654">3654</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3655">3655</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # for graphs, look directly in the class to save time: </td> </tr> <tr> <td class="h" > <a name="3656">3656</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $val = $a->{graph}->{$name} </td> </tr> <tr> <td class="h" > <a name="3657">3657</a> </td> <td class="c3" > 2212 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3657-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 3644 </td> <td class="s"> if exists $a->{graph}->{$name}; </td> </tr> <tr> <td class="h" > <a name="3658">3658</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3659">3659</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else </td> </tr> <tr> <td class="h" > <a name="3660">3660</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3661">3661</a> </td> <td class="c3" > 60573 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3661-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 80634 </td> <td class="s"> $val = $a->{$name} if exists $a->{$name}; </td> </tr> <tr> <td class="h" > <a name="3662">3662</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3663">3663</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3664">3664</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # For "background", and objects that are in a group, we inherit "fill": </td> </tr> <tr> <td class="h" > <a name="3665">3665</a> </td> <td class="c3" > 62785 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3665-1"> 50 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3665-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 91279 </td> <td class="s"> if ($name eq 'background' && $val && $val eq 'inherit') </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#-2"> 33 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3666">3666</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3667">3667</a> </td> <td class="c0" > <a href="#3668"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> my $parent = $self->parent(); </td> </tr> <tr> <td class="h" > <a name="3668">3668</a> </td> <td class="c0" > <a href="#4126"> 0 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3668-1"> 0 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3668-1"> 0 </a> </td> <td >   </td> <td >   </td> <td > 0 </td> <td class="s"> $val = $parent->color_attribute('fill') if $parent && $parent != $self; </td> </tr> <tr> <td class="h" > <a name="3669">3669</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3670">3670</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3671">3671</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # XXX BENCHMARK THIS </td> </tr> <tr> <td class="h" > <a name="3672">3672</a> </td> <td class="c3" > 62785 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3672-1"> 100 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3672-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 89379 </td> <td class="s"> return $val if defined $val && </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#-2"> 66 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3673">3673</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # no inheritance ("inherit" is just a normal string value) </td> </tr> <tr> <td class="h" > <a name="3674">3674</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ($type >= ATTR_NO_INHERIT || </td> </tr> <tr> <td class="h" > <a name="3675">3675</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # no inheritance since value is something else like "red" </td> </tr> <tr> <td class="h" > <a name="3676">3676</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $val ne 'inherit' || </td> </tr> <tr> <td class="h" > <a name="3677">3677</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # for graphs, there is nothing to inherit from </td> </tr> <tr> <td class="h" > <a name="3678">3678</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $class eq 'graph'); </td> </tr> <tr> <td class="h" > <a name="3679">3679</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3680">3680</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3681">3681</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # $val not defined, or 'inherit' </td> </tr> <tr> <td class="h" > <a name="3682">3682</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3683">3683</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ########################################################################### </td> </tr> <tr> <td class="h" > <a name="3684">3684</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Check the classes now </td> </tr> <tr> <td class="h" > <a name="3685">3685</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3686">3686</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # print STDERR "# Called self->attribute($class,$name) (#2)\n"; </td> </tr> <tr> <td class="h" > <a name="3687">3687</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3688">3688</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # we try them in this order: </td> </tr> <tr> <td class="h" > <a name="3689">3689</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # node.subclass, node, graph </td> </tr> <tr> <td class="h" > <a name="3690">3690</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3691">3691</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # print STDERR "# $self->{name} class=$class ", join(" ", caller),"\n" if $name eq 'align'; </td> </tr> <tr> <td class="h" > <a name="3692">3692</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3693">3693</a> </td> <td class="c3" > 68119 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 62274 </td> <td class="s"> my @tries = (); </td> </tr> <tr> <td class="h" > <a name="3694">3694</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # skip "node.foo" if value is 'inherit' </td> </tr> <tr> <td class="h" > <a name="3695">3695</a> </td> <td class="c3" > 68119 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3695-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 103302 </td> <td class="s"> push @tries, $class unless defined $val; </td> </tr> <tr> <td class="h" > <a name="3696">3696</a> </td> <td class="c3" > 68119 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3696-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 89368 </td> <td class="s"> push @tries, $base_class if $class =~ /\./; </td> </tr> <tr> <td class="h" > <a name="3697">3697</a> </td> <td class="c3" > 68119 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3697-1"> 100 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3697-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 201363 </td> <td class="s"> push @tries, 'graph' unless @tries && $tries[-1] eq 'graph'; </td> </tr> <tr> <td class="h" > <a name="3698">3698</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3699">3699</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # If not part of a graph, we cannot have class attributes, but </td> </tr> <tr> <td class="h" > <a name="3700">3700</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # we still can find default attributes. So fake a "graph": </td> </tr> <tr> <td class="h" > <a name="3701">3701</a> </td> <td class="c3" > 68119 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 59239 </td> <td class="s"> my $g = $self->{graph}; # for objects in a graph </td> </tr> <tr> <td class="h" > <a name="3702">3702</a> </td> <td class="c3" > 68119 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3702-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 97280 </td> <td class="s"> $g = { att => {} } unless ref($g); # for objects not in a graph </td> </tr> <tr> <td class="h" > <a name="3703">3703</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3704">3704</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # XXX TODO should not happen </td> </tr> <tr> <td class="h" > <a name="3705">3705</a> </td> <td class="c3" > 68119 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3705-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 90768 </td> <td class="s"> $g = $self if $self->{class} eq 'graph'; # for the graph itself </td> </tr> <tr> <td class="h" > <a name="3706">3706</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3707">3707</a> </td> <td class="c3" > 68119 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 50228 </td> <td class="s"> $val = undef; </td> </tr> <tr> <td class="h" > <a name="3708">3708</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> TRY: </td> </tr> <tr> <td class="h" > <a name="3709">3709</a> </td> <td class="c3" > 68119 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 65006 </td> <td class="s"> for my $try (@tries) </td> </tr> <tr> <td class="h" > <a name="3710">3710</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3711">3711</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # print STDERR "# Trying class $try for attribute $name\n" if $name eq 'align'; </td> </tr> <tr> <td class="h" > <a name="3712">3712</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3713">3713</a> </td> <td class="c3" > 80667 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 69990 </td> <td class="s"> my $att = $g->{att}->{$try}; </td> </tr> <tr> <td class="h" > <a name="3714">3714</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3715">3715</a> </td> <td class="c3" > 80667 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3715-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 97640 </td> <td class="s"> $val = $att->{$name} if exists $att->{$name}; </td> </tr> <tr> <td class="h" > <a name="3716">3716</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3717">3717</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # value was not defined, so get the default value (but not for subclasses!) </td> </tr> <tr> <td class="h" > <a name="3718">3718</a> </td> <td class="c3" > 80667 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3718-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 94011 </td> <td class="s"> if (!defined $val) </td> </tr> <tr> <td class="h" > <a name="3719">3719</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3720">3720</a> </td> <td class="c3" > 79195 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 60399 </td> <td class="s"> my $def = $entry->[ ATTR_DEFAULT_SLOT ]; $val = $def; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 79195 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 49687 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3721">3721</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3722">3722</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # "node.subclass" gets the default from "node", 'edge' from 'default': </td> </tr> <tr> <td class="h" > <a name="3723">3723</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # " { default => 'foo', 'node.anon' => 'none', node => 'solid' }": </td> </tr> <tr> <td class="h" > <a name="3724">3724</a> </td> <td class="c3" > 79195 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3724-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 101702 </td> <td class="s"> if (ref $def) </td> </tr> <tr> <td class="h" > <a name="3725">3725</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3726">3726</a> </td> <td class="c3" > 38220 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 32906 </td> <td class="s"> $val = $def->{$try}; </td> </tr> <tr> <td class="h" > <a name="3727">3727</a> </td> <td class="c3" > 38220 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3727-1"> 100 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3727-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 91128 </td> <td class="s"> if (!defined $val && $try =~ /\./) </td> </tr> <tr> <td class="h" > <a name="3728">3728</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3729">3729</a> </td> <td class="c3" > 1231 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1023 </td> <td class="s"> my $base = $try; $base =~ s/\..*//; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 1231 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2315 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3730">3730</a> </td> <td class="c3" > 1231 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1276 </td> <td class="s"> $val = $def->{$base}; </td> </tr> <tr> <td class="h" > <a name="3731">3731</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3732">3732</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # if this is not a subclass, get the default value </td> </tr> <tr> <td class="h" > <a name="3733">3733</a> </td> <td class="c3" > 38220 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3733-1"> 100 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3733-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 75021 </td> <td class="s"> next TRY if !defined $val && $try =~ /\./; </td> </tr> <tr> <td class="h" > <a name="3734">3734</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3735">3735</a> </td> <td class="c3" > 37336 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3735-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 52755 </td> <td class="s"> $val = $def->{default} unless defined $val; </td> </tr> <tr> <td class="h" > <a name="3736">3736</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3737">3737</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3738">3738</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # $val must now be defined, because default value must exist. </td> </tr> <tr> <td class="h" > <a name="3739">3739</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3740">3740</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # print STDERR "# Found '$val' for $try ($class)\n" if $name eq 'color'; </td> </tr> <tr> <td class="h" > <a name="3741">3741</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3742">3742</a> </td> <td class="c3" > 79783 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3742-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 96682 </td> <td class="s"> if ($name ne 'label') </td> </tr> <tr> <td class="h" > <a name="3743">3743</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3744">3744</a> </td> <td class="c3" > 74206 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3744-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 85750 </td> <td class="s"> $self->warn("Uninitialized default for attribute '$name' on class '$try'\n") </td> </tr> <tr> <td class="h" > <a name="3745">3745</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> unless defined $val; </td> </tr> <tr> <td class="h" > <a name="3746">3746</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3747">3747</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3748">3748</a> </td> <td class="c3" > 79783 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3748-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 104907 </td> <td class="s"> return $val if $type >= ATTR_NO_INHERIT; </td> </tr> <tr> <td class="h" > <a name="3749">3749</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3750">3750</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # got some value other than inherit or already at top of tree: </td> </tr> <tr> <td class="h" > <a name="3751">3751</a> </td> <td class="c3" > 72554 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3751-1"> 100 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3751-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 186200 </td> <td class="s"> last if defined $val && ($val ne 'inherit' || $try eq 'graph'); </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#-2"> 33 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3752">3752</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3753">3753</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # try next class in inheritance tree </td> </tr> <tr> <td class="h" > <a name="3754">3754</a> </td> <td class="c3" > 11664 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 10909 </td> <td class="s"> $val = undef; </td> </tr> <tr> <td class="h" > <a name="3755">3755</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3756">3756</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3757">3757</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # For "background", and objects that are in a group, we inherit "fill": </td> </tr> <tr> <td class="h" > <a name="3758">3758</a> </td> <td class="c3" > 60890 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3758-1"> 100 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3758-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 87810 </td> <td class="s"> if ($name eq 'background' && $val && $val eq 'inherit') </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#-2"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3759">3759</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3760">3760</a> </td> <td class="c3" > 141 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 308 </td> <td class="s"> my $parent = $self->parent(); </td> </tr> <tr> <td class="h" > <a name="3761">3761</a> </td> <td class="c3" > 141 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3761-1"> 100 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3761-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 494 </td> <td class="s"> $val = $parent->color_attribute('fill') if $parent && $parent != $self; </td> </tr> <tr> <td class="h" > <a name="3762">3762</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3763">3763</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3764">3764</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # If we fell through here, $val is 'inherit' for graph. That happens </td> </tr> <tr> <td class="h" > <a name="3765">3765</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # for instance for 'background': </td> </tr> <tr> <td class="h" > <a name="3766">3766</a> </td> <td class="c3" > 60890 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 128437 </td> <td class="s"> $val; </td> </tr> <tr> <td class="h" > <a name="3767">3767</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3768">3768</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3769">3769</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub unquote_attribute </td> </tr> <tr> <td class="h" > <a name="3770">3770</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3771">3771</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # The parser leaves quotes and escapes in the attribute, these things </td> </tr> <tr> <td class="h" > <a name="3772">3772</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # are only removed upon storing the attribute at the object/class. </td> </tr> <tr> <td class="h" > <a name="3773">3773</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Return the attribute unquoted (remove quotes on labels, links etc). </td> </tr> <tr> <td class="h" > <a name="3774">3774</a> </td> <td class="c3" > 2464 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3774-1"> 2464 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3774-1"> 1 </a> </td> <td > 3036 </td> <td class="s"> my ($self,$class,$name,$val) = @_; </td> </tr> <tr> <td class="h" > <a name="3775">3775</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3776">3776</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # clean quoted strings </td> </tr> <tr> <td class="h" > <a name="3777">3777</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # XXX TODO </td> </tr> <tr> <td class="h" > <a name="3778">3778</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # $val =~ s/^["'](.*[^\\])["']\z/$1/; </td> </tr> <tr> <td class="h" > <a name="3779">3779</a> </td> <td class="c3" > 2464 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 3155 </td> <td class="s"> $val =~ s/^["'](.*)["']\z/$1/; </td> </tr> <tr> <td class="h" > <a name="3780">3780</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3781">3781</a> </td> <td class="c3" > 2464 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1931 </td> <td class="s"> $val =~ s/\\([#"';\\])/$1/g; # reverse backslashed chars </td> </tr> <tr> <td class="h" > <a name="3782">3782</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3783">3783</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # remove any %00-%1f, %7f and high-bit chars to avoid exploits and problems </td> </tr> <tr> <td class="h" > <a name="3784">3784</a> </td> <td class="c3" > 2464 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 3582 </td> <td class="s"> $val =~ s/%[^2-7][a-fA-F0-9]|%7f//g; </td> </tr> <tr> <td class="h" > <a name="3785">3785</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3786">3786</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # decode %XX entities </td> </tr> <tr> <td class="h" > <a name="3787">3787</a> </td> <td class="c3" > 2464 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1919 </td> <td class="s"> $val =~ s/%([2-7][a-fA-F0-9])/sprintf("%c",hex($1))/eg; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 9 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 36 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3788">3788</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3789">3789</a> </td> <td class="c3" > 2464 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 3322 </td> <td class="s"> $val; </td> </tr> <tr> <td class="h" > <a name="3790">3790</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3791">3791</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3792">3792</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub valid_attribute </td> </tr> <tr> <td class="h" > <a name="3793">3793</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3794">3794</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Only for compatibility, use validate_attribute()! </td> </tr> <tr> <td class="h" > <a name="3795">3795</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3796">3796</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Check that an name/value pair is an valid attribute, returns: </td> </tr> <tr> <td class="h" > <a name="3797">3797</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # scalar value: valid, new attribute </td> </tr> <tr> <td class="h" > <a name="3798">3798</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # undef: not valid </td> </tr> <tr> <td class="h" > <a name="3799">3799</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # []: unknown attribute (might also warn) </td> </tr> <tr> <td class="h" > <a name="3800">3800</a> </td> <td class="c3" > 84 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3800-1"> 84 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3800-1"> 1 </a> </td> <td > 30561 </td> <td class="s"> my ($self, $name, $value, $class) = @_; </td> </tr> <tr> <td class="h" > <a name="3801">3801</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3802">3802</a> </td> <td class="c3" > 84 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 153 </td> <td class="s"> my ($error,$newname,$v) = $self->validate_attribute($name,$value,$class); </td> </tr> <tr> <td class="h" > <a name="3803">3803</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3804">3804</a> </td> <td class="c3" > 84 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3804-1"> 100 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3804-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 218 </td> <td class="s"> return [] if defined $error && $error == 1; </td> </tr> <tr> <td class="h" > <a name="3805">3805</a> </td> <td class="c3" > 59 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3805-1"> 100 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3805-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 95 </td> <td class="s"> return undef if defined $error && $error == 2; </td> </tr> <tr> <td class="h" > <a name="3806">3806</a> </td> <td class="c3" > 57 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 84 </td> <td class="s"> $v; </td> </tr> <tr> <td class="h" > <a name="3807">3807</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3808">3808</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3809">3809</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub validate_attribute </td> </tr> <tr> <td class="h" > <a name="3810">3810</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3811">3811</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Check that an name/value pair is an valid attribute, returns: </td> </tr> <tr> <td class="h" > <a name="3812">3812</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # $error, $newname, @values </td> </tr> <tr> <td class="h" > <a name="3813">3813</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3814">3814</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # A possible new name is in $newname, this is f.i. used to convert </td> </tr> <tr> <td class="h" > <a name="3815">3815</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # "font-size" # to "fontsize". </td> </tr> <tr> <td class="h" > <a name="3816">3816</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3817">3817</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Upon errors, $error contains the error code: </td> </tr> <tr> <td class="h" > <a name="3818">3818</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # undef: all went well </td> </tr> <tr> <td class="h" > <a name="3819">3819</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # 1 unknown attribute name </td> </tr> <tr> <td class="h" > <a name="3820">3820</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # 2 invalid attribute value </td> </tr> <tr> <td class="h" > <a name="3821">3821</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # 4 found multiple attributes, but these aren't </td> </tr> <tr> <td class="h" > <a name="3822">3822</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # allowed at this place </td> </tr> <tr> <td class="h" > <a name="3823">3823</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3824">3824</a> </td> <td class="c3" > 1254 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3824-1"> 1254 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3824-1"> 1 </a> </td> <td > 13026 </td> <td class="s"> my ($self, $name, $value, $class, $no_multiples) = @_; </td> </tr> <tr> <td class="h" > <a name="3825">3825</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3826">3826</a> </td> <td class="c3" > 1254 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3826-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1787 </td> <td class="s"> $self->error("Got reference $value as value, but expected scalar") if ref($value); </td> </tr> <tr> <td class="h" > <a name="3827">3827</a> </td> <td class="c3" > 1254 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3827-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1666 </td> <td class="s"> $self->error("Got reference $name as name, but expected scalar") if ref($name); </td> </tr> <tr> <td class="h" > <a name="3828">3828</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3829">3829</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # "x-foo-bar" is a custom attribute, so allow it always. The name must </td> </tr> <tr> <td class="h" > <a name="3830">3830</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # consist only of letters and hyphens, and end in a letter. Hyphens </td> </tr> <tr> <td class="h" > <a name="3831">3831</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # must be separated by letters. </td> </tr> <tr> <td class="h" > <a name="3832">3832</a> </td> <td class="c3" > 1254 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3832-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 4762 </td> <td class="s"> return (undef, $name, $value) if $name =~ $qr_custom_attribute; </td> </tr> <tr> <td class="h" > <a name="3833">3833</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3834">3834</a> </td> <td class="c3" > 1174 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3834-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1803 </td> <td class="s"> $class = 'all' unless defined $class; </td> </tr> <tr> <td class="h" > <a name="3835">3835</a> </td> <td class="c3" > 1174 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1153 </td> <td class="s"> $class =~ s/\..*\z//; # remove subclasses </td> </tr> <tr> <td class="h" > <a name="3836">3836</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3837">3837</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Remap alias names without "-" to their hyphenated version: </td> </tr> <tr> <td class="h" > <a name="3838">3838</a> </td> <td class="c3" > 1174 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3838-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 2052 </td> <td class="s"> $name = $att_aliases->{$name} if exists $att_aliases->{$name}; </td> </tr> <tr> <td class="h" > <a name="3839">3839</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3840">3840</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # prevent ->{special}->{node} from springing into existence </td> </tr> <tr> <td class="h" > <a name="3841">3841</a> </td> <td class="c3" > 1174 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3841-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1182 </td> <td class="s"> my $s = $attributes->{special}; $s = $s->{$class} if exists $s->{$class}; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 1174 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1782 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3842">3842</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3843">3843</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $entry = $s->{$name} || </td> </tr> <tr> <td class="h" > <a name="3844">3844</a> </td> <td class="c3" > 1174 </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3844-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 3901 </td> <td class="s"> $attributes->{all}->{$name} || $attributes->{$class}->{$name}; </td> </tr> <tr> <td class="h" > <a name="3845">3845</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3846">3846</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Didn't found an entry: </td> </tr> <tr> <td class="h" > <a name="3847">3847</a> </td> <td class="c3" > 1174 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3847-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1910 </td> <td class="s"> return (1,undef,$self->_unknown_attribute($name,$class)) unless ref($entry); </td> </tr> <tr> <td class="h" > <a name="3848">3848</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3849">3849</a> </td> <td class="c3" > 1120 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1141 </td> <td class="s"> my $check = $entry->[ATTR_MATCH_SLOT]; </td> </tr> <tr> <td class="h" > <a name="3850">3850</a> </td> <td class="c3" > 1120 </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3850-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 2377 </td> <td class="s"> my $type = $entry->[ATTR_TYPE_SLOT] || ATTR_STRING; </td> </tr> <tr> <td class="h" > <a name="3851">3851</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3852">3852</a> </td> <td class="c3" > 1120 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3852-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1672 </td> <td class="s"> $check = '_color' if $type == ATTR_COLOR; </td> </tr> <tr> <td class="h" > <a name="3853">3853</a> </td> <td class="c3" > 1120 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3853-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1449 </td> <td class="s"> $check = '_angle' if $type == ATTR_ANGLE; </td> </tr> <tr> <td class="h" > <a name="3854">3854</a> </td> <td class="c3" > 1120 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3854-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1493 </td> <td class="s"> $check = '_uint' if $type == ATTR_UINT; </td> </tr> <tr> <td class="h" > <a name="3855">3855</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3856">3856</a> </td> <td class="c3" > 1120 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1780 </td> <td class="s"> my @values = ($value); </td> </tr> <tr> <td class="h" > <a name="3857">3857</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3858">3858</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # split on "|", but not on "\|" </td> </tr> <tr> <td class="h" > <a name="3859">3859</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # XXX TODO: </td> </tr> <tr> <td class="h" > <a name="3860">3860</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # This will not work in case of mixed " $i \|\| 0| $a = 1;" </td> </tr> <tr> <td class="h" > <a name="3861">3861</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3862">3862</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # When special attributes are set, we are parsing Graphviz, and do </td> </tr> <tr> <td class="h" > <a name="3863">3863</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # not allow/use multiple attributes. So skip the split. </td> </tr> <tr> <td class="h" > <a name="3864">3864</a> </td> <td class="c3" > 1120 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3864-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 778 </td> <td class="s"> if (keys %{$attributes->{special}} == 0) </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 1120 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2675 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3865">3865</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3866">3866</a> </td> <td class="c3" > 920 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3866-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 1697 </td> <td class="s"> @values = split (/\s*\|\s*/, $value, -1) if $value =~ /(^|[^\\])\|/; </td> </tr> <tr> <td class="h" > <a name="3867">3867</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3868">3868</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3869">3869</a> </td> <td class="c3" > 1120 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3869-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 954 </td> <td class="s"> my $multiples = 0; $multiples = 1 if @values > 1; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 1120 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1677 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3870">3870</a> </td> <td class="c3" > 1120 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3870-1"> 50 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3870-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 2246 </td> <td class="s"> return (4) if $no_multiples && $multiples; # | and no multiples => error </td> </tr> <tr> <td class="h" > <a name="3871">3871</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3872">3872</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # check each part on it's own </td> </tr> <tr> <td class="h" > <a name="3873">3873</a> </td> <td class="c3" > 1120 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 791 </td> <td class="s"> my @rc; </td> </tr> <tr> <td class="h" > <a name="3874">3874</a> </td> <td class="c3" > 1120 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1183 </td> <td class="s"> for my $v (@values) </td> </tr> <tr> <td class="h" > <a name="3875">3875</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3876">3876</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # don't check empty parts for being valid </td> </tr> <tr> <td class="h" > <a name="3877">3877</a> </td> <td class="c3" > 1134 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3877-1"> 100 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3877-1"> 50 </a> </td> <td >   </td> <td >   </td> <td > 1949 </td> <td class="s"> push @rc, undef and next if $multiples && $v eq ''; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#-2"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3878">3878</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3879">3879</a> </td> <td class="c3" > 1129 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3879-1"> 100 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3879-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 3778 </td> <td class="s"> if (defined $check && !ref($check)) </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#-2"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3880">3880</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3881">3881</a> </td> <td class="c3" > 48 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3881-1"> 48 </a> </td> <td >   </td> <td > 283 </td> <td class="s"> no strict 'refs'; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 48 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 94 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 48 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 43021 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3882">3882</a> </td> <td class="c3" > 381 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 954 </td> <td class="s"> my $checked = $self->$check($v, $name); </td> </tr> <tr> <td class="h" > <a name="3883">3883</a> </td> <td class="c3" > 381 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3883-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 647 </td> <td class="s"> if (!defined $checked) </td> </tr> <tr> <td class="h" > <a name="3884">3884</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3885">3885</a> </td> <td class="c3" > 7 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 29 </td> <td class="s"> $self->error("Error in attribute: '$v' is not a valid $name for a $class"); </td> </tr> <tr> <td class="h" > <a name="3886">3886</a> </td> <td class="c3" > 7 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 20 </td> <td class="s"> return (2); </td> </tr> <tr> <td class="h" > <a name="3887">3887</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3888">3888</a> </td> <td class="c3" > 374 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 470 </td> <td class="s"> push @rc, $checked; </td> </tr> <tr> <td class="h" > <a name="3889">3889</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3890">3890</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> elsif ($check) </td> </tr> <tr> <td class="h" > <a name="3891">3891</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3892">3892</a> </td> <td class="c3" > 431 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3892-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 867 </td> <td class="s"> if (ref($check) eq 'ARRAY') </td> </tr> <tr> <td class="h" > <a name="3893">3893</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3894">3894</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # build a regexp from the list of words </td> </tr> <tr> <td class="h" > <a name="3895">3895</a> </td> <td class="c3" > 71 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 307 </td> <td class="s"> my $list = 'qr/^(' . join ('|', @$check) . ')\z/;'; </td> </tr> <tr> <td class="h" > <a name="3896">3896</a> </td> <td class="c3" > 71 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 6519 </td> <td class="s"> $entry->[1] = eval($list); </td> </tr> <tr> <td class="h" > <a name="3897">3897</a> </td> <td class="c3" > 71 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 194 </td> <td class="s"> $check = $entry->[1]; </td> </tr> <tr> <td class="h" > <a name="3898">3898</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3899">3899</a> </td> <td class="c3" > 431 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3899-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 2578 </td> <td class="s"> if ($v !~ $check) # invalid? </td> </tr> <tr> <td class="h" > <a name="3900">3900</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3901">3901</a> </td> <td class="c3" > 7 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 25 </td> <td class="s"> $self->error("Error in attribute: '$v' is not a valid $name for a $class"); </td> </tr> <tr> <td class="h" > <a name="3902">3902</a> </td> <td class="c3" > 7 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 21 </td> <td class="s"> return (2); </td> </tr> <tr> <td class="h" > <a name="3903">3903</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3904">3904</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3905">3905</a> </td> <td class="c3" > 424 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 549 </td> <td class="s"> push @rc, $v; # valid </td> </tr> <tr> <td class="h" > <a name="3906">3906</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3907">3907</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # entry found, but no specific check => anything goes as value </td> </tr> <tr> <td class="h" > <a name="3908">3908</a> </td> <td class="c3" > 317 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 386 </td> <td class="s"> else { push @rc, $v; } </td> </tr> <tr> <td class="h" > <a name="3909">3909</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3910">3910</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # "ClAss" => "class" for LCTEXT entries </td> </tr> <tr> <td class="h" > <a name="3911">3911</a> </td> <td class="c3" > 1115 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3911-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 2053 </td> <td class="s"> $rc[-1] = lc($rc[-1]) if $type == ATTR_LCTEXT; </td> </tr> <tr> <td class="h" > <a name="3912">3912</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3913">3913</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3914">3914</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # only one value ('green') </td> </tr> <tr> <td class="h" > <a name="3915">3915</a> </td> <td class="c3" > 1106 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3915-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 4068 </td> <td class="s"> return (undef, $name, $rc[0]) unless $multiples; </td> </tr> <tr> <td class="h" > <a name="3916">3916</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3917">3917</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # multiple values ('green|red') </td> </tr> <tr> <td class="h" > <a name="3918">3918</a> </td> <td class="c3" > 10 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 35 </td> <td class="s"> (undef, $name, \@rc); </td> </tr> <tr> <td class="h" > <a name="3919">3919</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3920">3920</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3921">3921</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ########################################################################### </td> </tr> <tr> <td class="h" > <a name="3922">3922</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ########################################################################### </td> </tr> <tr> <td class="h" > <a name="3923">3923</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3924">3924</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub _remap_attributes </td> </tr> <tr> <td class="h" > <a name="3925">3925</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3926">3926</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Take a hash with: </td> </tr> <tr> <td class="h" > <a name="3927">3927</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # { </td> </tr> <tr> <td class="h" > <a name="3928">3928</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # class => { </td> </tr> <tr> <td class="h" > <a name="3929">3929</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # color => 'red' </td> </tr> <tr> <td class="h" > <a name="3930">3930</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # } </td> </tr> <tr> <td class="h" > <a name="3931">3931</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # } </td> </tr> <tr> <td class="h" > <a name="3932">3932</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # and remap it according to the given remap hash (similar structured). </td> </tr> <tr> <td class="h" > <a name="3933">3933</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Also encode/quote the value. Suppresses default attributes. </td> </tr> <tr> <td class="h" > <a name="3934">3934</a> </td> <td class="c3" > 2886 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#3934-1"> 2886 </a> </td> <td >   </td> <td > 3586 </td> <td class="s"> my ($self, $object, $att, $remap, $noquote, $encode, $color_remap ) = @_; </td> </tr> <tr> <td class="h" > <a name="3935">3935</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3936">3936</a> </td> <td class="c3" > 2886 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2508 </td> <td class="s"> my $out = {}; </td> </tr> <tr> <td class="h" > <a name="3937">3937</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3938">3938</a> </td> <td class="c3" > 2886 </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3938-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 4581 </td> <td class="s"> my $class = $object || 'node'; </td> </tr> <tr> <td class="h" > <a name="3939">3939</a> </td> <td class="c3" > 2886 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3939-1"> 100 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3939-1"> 50 </a> </td> <td >   </td> <td >   </td> <td > 6325 </td> <td class="s"> $class = $object->{class} || 'graph' if ref($object); </td> </tr> <tr> <td class="h" > <a name="3940">3940</a> </td> <td class="c3" > 2886 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2941 </td> <td class="s"> $class =~ s/\..*//; # remove subclass </td> </tr> <tr> <td class="h" > <a name="3941">3941</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3942">3942</a> </td> <td class="c3" > 2886 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2691 </td> <td class="s"> my $r = $remap->{$class}; </td> </tr> <tr> <td class="h" > <a name="3943">3943</a> </td> <td class="c3" > 2886 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2272 </td> <td class="s"> my $ra = $remap->{all}; </td> </tr> <tr> <td class="h" > <a name="3944">3944</a> </td> <td class="c3" > 2886 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2059 </td> <td class="s"> my $ral = $remap->{always}; </td> </tr> <tr> <td class="h" > <a name="3945">3945</a> </td> <td class="c3" > 2886 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2383 </td> <td class="s"> my $x = $remap->{x}; </td> </tr> <tr> <td class="h" > <a name="3946">3946</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3947">3947</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # This loop does also handle the individual "bordercolor" attributes. </td> </tr> <tr> <td class="h" > <a name="3948">3948</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # If the output should contain only "border", but not "bordercolor", then </td> </tr> <tr> <td class="h" > <a name="3949">3949</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # the caller must filter them out. </td> </tr> <tr> <td class="h" > <a name="3950">3950</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3951">3951</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # do these attributes </td> </tr> <tr> <td class="h" > <a name="3952">3952</a> </td> <td class="c3" > 2886 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 7930 </td> <td class="s"> my @keys = sort keys %$att; </td> </tr> <tr> <td class="h" > <a name="3953">3953</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3954">3954</a> </td> <td class="c3" > 2886 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2570 </td> <td class="s"> my $color_scheme = 'w3c'; </td> </tr> <tr> <td class="h" > <a name="3955">3955</a> </td> <td class="c3" > 2886 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3955-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 5334 </td> <td class="s"> $color_scheme = $object->attribute('colorscheme') if ref($object); </td> </tr> <tr> <td class="h" > <a name="3956">3956</a> </td> <td class="c3" > 2886 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3956-1"> 100 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3956-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 9740 </td> <td class="s"> $color_scheme = $self->get_attribute($object,'colorscheme') </td> </tr> <tr> <td class="h" > <a name="3957">3957</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if defined $object && !ref($object); </td> </tr> <tr> <td class="h" > <a name="3958">3958</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3959">3959</a> </td> <td class="c3" > 2886 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3959-1"> 50 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3959-1"> 33 </a> </td> <td >   </td> <td >   </td> <td > 7544 </td> <td class="s"> $color_scheme = $self->get_attribute('graph','colorscheme') </td> </tr> <tr> <td class="h" > <a name="3960">3960</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if defined $color_scheme && $color_scheme eq 'inherit'; </td> </tr> <tr> <td class="h" > <a name="3961">3961</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3962">3962</a> </td> <td class="c3" > 2886 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2935 </td> <td class="s"> for my $atr (@keys) </td> </tr> <tr> <td class="h" > <a name="3963">3963</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3964">3964</a> </td> <td class="c3" > 5071 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4868 </td> <td class="s"> my $val = $att->{$atr}; </td> </tr> <tr> <td class="h" > <a name="3965">3965</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3966">3966</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Only for objects (not for classes like "node"), and not if </td> </tr> <tr> <td class="h" > <a name="3967">3967</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # always says we need to always call the CODE handler: </td> </tr> <tr> <td class="h" > <a name="3968">3968</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3969">3969</a> </td> <td class="c3" > 5071 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3969-1"> 50 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3969-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 7849 </td> <td class="s"> if (!ref($object) && !exists $ral->{$atr}) </td> </tr> <tr> <td class="h" > <a name="3970">3970</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3971">3971</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # attribute not defined </td> </tr> <tr> <td class="h" > <a name="3972">3972</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> next if !defined $val || $val eq '' || </td> </tr> <tr> <td class="h" > <a name="3973">3973</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # or $remap says we should suppress it </td> </tr> <tr> <td class="h" > <a name="3974">3974</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> (exists $r->{$atr} && !defined $r->{$atr}) || </td> </tr> <tr> <td class="h" > <a name="3975">3975</a> </td> <td class="c3" > 1141 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3975-1"> 100 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3975-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 5886 </td> <td class="s"> (exists $ra->{$atr} && !defined $ra->{$atr}); </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#-2"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#-3"> 66 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#-4"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#-5"> 66 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3976">3976</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3977">3977</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3978">3978</a> </td> <td class="c3" > 4643 </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3978-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 8064 </td> <td class="s"> my $entry = $attributes->{all}->{$atr} || $attributes->{$class}->{$atr}; </td> </tr> <tr> <td class="h" > <a name="3979">3979</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3980">3980</a> </td> <td class="c3" > 4643 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3980-1"> 50 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3980-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 7070 </td> <td class="s"> if ($color_remap && defined $entry && defined $val) </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#-2"> 66 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3981">3981</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3982">3982</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # look up whether attribute is a color </td> </tr> <tr> <td class="h" > <a name="3983">3983</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # if yes, convert to hex </td> </tr> <tr> <td class="h" > <a name="3984">3984</a> </td> <td class="c3" > 63 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3984-1"> 100 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3984-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 196 </td> <td class="s"> $val = $self->color_as_hex($val,$color_scheme) </td> </tr> <tr> <td class="h" > <a name="3985">3985</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if ($entry->[ ATTR_TYPE_SLOT ]||ATTR_STRING) == ATTR_COLOR; </td> </tr> <tr> <td class="h" > <a name="3986">3986</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="3987">3987</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3988">3988</a> </td> <td class="c3" > 4643 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 5818 </td> <td class="s"> my $temp = { $atr => $val }; </td> </tr> <tr> <td class="h" > <a name="3989">3989</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3990">3990</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # see if there is a handler for custom attributes </td> </tr> <tr> <td class="h" > <a name="3991">3991</a> </td> <td class="c3" > 4643 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3991-1"> 100 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#3991-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 10761 </td> <td class="s"> if (exists $r->{$atr} || exists $ra->{$atr} || (defined $x && $atr =~ /^x-/)) </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#-2"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#-3"> 66 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3992">3992</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3993">3993</a> </td> <td class="c3" > 3441 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3993-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 2731 </td> <td class="s"> my $rc = $r->{$atr}; $rc = $ra->{$atr} unless defined $rc; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 3441 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4545 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3994">3994</a> </td> <td class="c3" > 3441 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3994-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 3905 </td> <td class="s"> $rc = $x unless defined $rc; </td> </tr> <tr> <td class="h" > <a name="3995">3995</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3996">3996</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # if given a code ref, call it to remap name and/or value </td> </tr> <tr> <td class="h" > <a name="3997">3997</a> </td> <td class="c3" > 3441 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#3997-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 4292 </td> <td class="s"> if (ref($rc) eq 'CODE') </td> </tr> <tr> <td class="h" > <a name="3998">3998</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="3999">3999</a> </td> <td class="c3" > 2055 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1546 </td> <td class="s"> my @rc = &{$rc}($self,$atr,$val,$object); </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 2055 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 3544 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4000">4000</a> </td> <td class="c3" > 2055 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2020 </td> <td class="s"> $temp = {}; </td> </tr> <tr> <td class="h" > <a name="4001">4001</a> </td> <td class="c3" > 2055 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 3496 </td> <td class="s"> while (@rc) </td> </tr> <tr> <td class="h" > <a name="4002">4002</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="4003">4003</a> </td> <td class="c3" > 2074 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1694 </td> <td class="s"> my $a = shift @rc; my $v = shift @rc; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 2074 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1435 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4004">4004</a> </td> <td class="c3" > 2074 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4004-1"> 100 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#4004-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 8043 </td> <td class="s"> $temp->{ $a } = $v if defined $a && defined $v; </td> </tr> <tr> <td class="h" > <a name="4005">4005</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4006">4006</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4007">4007</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> else </td> </tr> <tr> <td class="h" > <a name="4008">4008</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="4009">4009</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # otherwise, rename the attribute name if nec. </td> </tr> <tr> <td class="h" > <a name="4010">4010</a> </td> <td class="c3" > 1386 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 1211 </td> <td class="s"> $temp = { }; </td> </tr> <tr> <td class="h" > <a name="4011">4011</a> </td> <td class="c3" > 1386 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4011-1"> 100 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#4011-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 3673 </td> <td class="s"> $temp = { $rc => $val } if defined $val && defined $rc; </td> </tr> <tr> <td class="h" > <a name="4012">4012</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4013">4013</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4014">4014</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4015">4015</a> </td> <td class="c3" > 4643 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 9441 </td> <td class="s"> for my $at (sort keys %$temp) </td> </tr> <tr> <td class="h" > <a name="4016">4016</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="4017">4017</a> </td> <td class="c3" > 2594 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2355 </td> <td class="s"> my $v = $temp->{$at}; </td> </tr> <tr> <td class="h" > <a name="4018">4018</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4019">4019</a> </td> <td class="c3" > 2594 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4019-1"> 100 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#4019-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 11140 </td> <td class="s"> next if !defined $at || !defined $v || $v eq ''; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#-2"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4020">4020</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4021">4021</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # encode critical characters (including "), but only if the value actually </td> </tr> <tr> <td class="h" > <a name="4022">4022</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # contains anything else than '%' (so rgb(10%,0,0) stays as it is) </td> </tr> <tr> <td class="h" > <a name="4023">4023</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4024">4024</a> </td> <td class="c3" > 2211 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4024-1"> 100 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#4024-1"> 100 </a> </td> <td >   </td> <td >   </td> <td > 5223 </td> <td class="s"> $v =~ s/([;"%\x00-\x1f])/sprintf("%%%02x",ord($1))/eg </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 7 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 20 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4025">4025</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if $encode && $v =~ /[;"\x00-\x1f]/; </td> </tr> <tr> <td class="h" > <a name="4026">4026</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # quote if nec. </td> </tr> <tr> <td class="h" > <a name="4027">4027</a> </td> <td class="c3" > 2211 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4027-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 2708 </td> <td class="s"> $v = '"' . $v . '"' unless $noquote; </td> </tr> <tr> <td class="h" > <a name="4028">4028</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4029">4029</a> </td> <td class="c3" > 2211 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 4804 </td> <td class="s"> $out->{$at} = $v; </td> </tr> <tr> <td class="h" > <a name="4030">4030</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4031">4031</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4032">4032</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4033">4033</a> </td> <td class="c3" > 2886 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 6274 </td> <td class="s"> $out; </td> </tr> <tr> <td class="h" > <a name="4034">4034</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4035">4035</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4036">4036</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub raw_attributes </td> </tr> <tr> <td class="h" > <a name="4037">4037</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="4038">4038</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # return all set attributes on this object (graph/node/group/edge) as </td> </tr> <tr> <td class="h" > <a name="4039">4039</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # an anonymous hash ref </td> </tr> <tr> <td class="h" > <a name="4040">4040</a> </td> <td class="c3" > 436 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#4040-1"> 436 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#4040-1"> 1 </a> </td> <td > 1039 </td> <td class="s"> my $self = shift; </td> </tr> <tr> <td class="h" > <a name="4041">4041</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4042">4042</a> </td> <td class="c3" > 436 </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#4042-1"> 50 </a> </td> <td >   </td> <td >   </td> <td > 635 </td> <td class="s"> my $class = $self->{class} || 'graph'; </td> </tr> <tr> <td class="h" > <a name="4043">4043</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4044">4044</a> </td> <td class="c3" > 436 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 348 </td> <td class="s"> my $att = $self->{att}; </td> </tr> <tr> <td class="h" > <a name="4045">4045</a> </td> <td class="c3" > 436 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4045-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 607 </td> <td class="s"> $att = $self->{att}->{graph} if $class eq 'graph'; </td> </tr> <tr> <td class="h" > <a name="4046">4046</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4047">4047</a> </td> <td class="c3" > 436 </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#4047-1"> 66 </a> </td> <td >   </td> <td >   </td> <td > 675 </td> <td class="s"> my $g = $self->{graph} || $self; </td> </tr> <tr> <td class="h" > <a name="4048">4048</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4049">4049</a> </td> <td class="c3" > 436 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 396 </td> <td class="s"> my $out = {}; </td> </tr> <tr> <td class="h" > <a name="4050">4050</a> </td> <td class="c3" > 436 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4050-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 615 </td> <td class="s"> if (!$g->{strict}) </td> </tr> <tr> <td class="h" > <a name="4051">4051</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="4052">4052</a> </td> <td class="c3" > 2 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 8 </td> <td class="s"> for my $name (sort keys %$att) </td> </tr> <tr> <td class="h" > <a name="4053">4053</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="4054">4054</a> </td> <td class="c3" > 6 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 10 </td> <td class="s"> my $val = $att->{$name}; </td> </tr> <tr> <td class="h" > <a name="4055">4055</a> </td> <td class="c3" > 6 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4055-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 8 </td> <td class="s"> next unless defined $val; # set to undef? </td> </tr> <tr> <td class="h" > <a name="4056">4056</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4057">4057</a> </td> <td class="c3" > 6 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 9 </td> <td class="s"> $out->{$name} = $val; </td> </tr> <tr> <td class="h" > <a name="4058">4058</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4059">4059</a> </td> <td class="c3" > 2 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 5 </td> <td class="s"> return $out; </td> </tr> <tr> <td class="h" > <a name="4060">4060</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4061">4061</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4062">4062</a> </td> <td class="c3" > 434 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 325 </td> <td class="s"> my $base_class = $class; $base_class =~ s/\..*//; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 434 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 470 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4063">4063</a> </td> <td class="c3" > 434 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 896 </td> <td class="s"> for my $name (sort keys %$att) </td> </tr> <tr> <td class="h" > <a name="4064">4064</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="4065">4065</a> </td> <td class="c3" > 506 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 438 </td> <td class="s"> my $val = $att->{$name}; </td> </tr> <tr> <td class="h" > <a name="4066">4066</a> </td> <td class="c3" > 506 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4066-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 586 </td> <td class="s"> next unless defined $val; # set to undef? </td> </tr> <tr> <td class="h" > <a name="4067">4067</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4068">4068</a> </td> <td class="c3" > 500 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 555 </td> <td class="s"> $out->{$name} = $val; </td> </tr> <tr> <td class="h" > <a name="4069">4069</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4070">4070</a> </td> <td class="c3" > 500 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4070-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 735 </td> <td class="s"> next unless $val eq 'inherit'; </td> </tr> <tr> <td class="h" > <a name="4071">4071</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4072">4072</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # prevent ->{special}->{node} from springing into existence </td> </tr> <tr> <td class="h" > <a name="4073">4073</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4073-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 2 </td> <td class="s"> my $s = $attributes->{special}; $s = $s->{$class} if exists $s->{$class}; </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 1 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4074">4074</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $entry = $s->{$name} || </td> </tr> <tr> <td class="h" > <a name="4075">4075</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $attributes->{all}->{$name} || </td> </tr> <tr> <td class="h" > <a name="4076">4076</a> </td> <td class="c3" > 1 </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#4076-1"> 33 </a> </td> <td >   </td> <td >   </td> <td > 5 </td> <td class="s"> $attributes->{$base_class}->{$name}; </td> </tr> <tr> <td class="h" > <a name="4077">4077</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4078">4078</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Didn't found an entry: </td> </tr> <tr> <td class="h" > <a name="4079">4079</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4079-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 2 </td> <td class="s"> return $self->_unknown_attribute($name,$class) unless ref($entry); </td> </tr> <tr> <td class="h" > <a name="4080">4080</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4081">4081</a> </td> <td class="c3" > 1 </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--condition.html#4081-1"> 50 </a> </td> <td >   </td> <td >   </td> <td > 3 </td> <td class="s"> my $type = $entry->[ ATTR_TYPE_SLOT ] || ATTR_STRING; </td> </tr> <tr> <td class="h" > <a name="4082">4082</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4083">4083</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # need to inherit value? </td> </tr> <tr> <td class="h" > <a name="4084">4084</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4084-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 3 </td> <td class="s"> $out->{$name} = $self->attribute($name) if $type < ATTR_NO_INHERIT; </td> </tr> <tr> <td class="h" > <a name="4085">4085</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4086">4086</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4087">4087</a> </td> <td class="c3" > 434 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 715 </td> <td class="s"> $out; </td> </tr> <tr> <td class="h" > <a name="4088">4088</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4089">4089</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4090">4090</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub get_attributes </td> </tr> <tr> <td class="h" > <a name="4091">4091</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="4092">4092</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Return all effective attributes on this object (graph/node/group/edge) as </td> </tr> <tr> <td class="h" > <a name="4093">4093</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # an anonymous hash ref. This respects inheritance and default values. </td> </tr> <tr> <td class="h" > <a name="4094">4094</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Does not return custom attributes, see get_custom_attributes(). </td> </tr> <tr> <td class="h" > <a name="4095">4095</a> </td> <td class="c3" > 70 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#4095-1"> 70 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#4095-1"> 1 </a> </td> <td > 63 </td> <td class="s"> my $self = shift; </td> </tr> <tr> <td class="h" > <a name="4096">4096</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4097">4097</a> </td> <td class="c3" > 70 </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4097-1"> 50 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 117 </td> <td class="s"> $self->error("get_attributes() doesn't take arguments") if @_ > 0; </td> </tr> <tr> <td class="h" > <a name="4098">4098</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4099">4099</a> </td> <td class="c3" > 70 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 67 </td> <td class="s"> my $att = {}; </td> </tr> <tr> <td class="h" > <a name="4100">4100</a> </td> <td class="c3" > 70 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 136 </td> <td class="s"> my $class = $self->main_class(); </td> </tr> <tr> <td class="h" > <a name="4101">4101</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4102">4102</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # f.i. "all", "node" </td> </tr> <tr> <td class="h" > <a name="4103">4103</a> </td> <td class="c3" > 70 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 80 </td> <td class="s"> for my $type ('all', $class) </td> </tr> <tr> <td class="h" > <a name="4104">4104</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="4105">4105</a> </td> <td class="c3" > 140 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 101 </td> <td class="s"> for my $a (sort keys %{$attributes->{$type}}) </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c3" > 140 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 862 </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4106">4106</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="4107">4107</a> </td> <td class="c3" > 2284 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 2597 </td> <td class="s"> my $val = $self->attribute($a); # respect inheritance </td> </tr> <tr> <td class="h" > <a name="4108">4108</a> </td> <td class="c3" > 2284 </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4108-1"> 100 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td > 4246 </td> <td class="s"> $att->{$a} = $val if defined $val; </td> </tr> <tr> <td class="h" > <a name="4109">4109</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4110">4110</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4111">4111</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4112">4112</a> </td> <td class="c3" > 70 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td > 116 </td> <td class="s"> $att; </td> </tr> <tr> <td class="h" > <a name="4113">4113</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4114">4114</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4115">4115</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> package Graph::Easy::Node; </td> </tr> <tr> <td class="h" > <a name="4116">4116</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4117">4117</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> BEGIN </td> </tr> <tr> <td class="h" > <a name="4118">4118</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="4119">4119</a> </td> <td class="c3" > 48 </td> <td >   </td> <td >   </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#4119-1"> 48 </a> </td> <td >   </td> <td > 16674 </td> <td class="s"> *custom_attributes = \&get_custom_attributes; </td> </tr> <tr> <td class="h" > <a name="4120">4120</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4121">4121</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4122">4122</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> sub get_custom_attributes </td> </tr> <tr> <td class="h" > <a name="4123">4123</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="4124">4124</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Return all custom attributes on this object (graph/node/group/edge) as </td> </tr> <tr> <td class="h" > <a name="4125">4125</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # an anonymous hash ref. </td> </tr> <tr> <td class="h" > <a name="4126">4126</a> </td> <td class="c0" > <a href="#4128"> 0 </a> </td> <td >   </td> <td >   </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#4126-1"> 0 </a> </td> <td class="c3" > <a href="lib-Graph-Easy-Attributes-pm--subroutine.html#4126-1"> 1 </a> </td> <td >   </td> <td class="s"> my $self = shift; </td> </tr> <tr> <td class="h" > <a name="4127">4127</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4128">4128</a> </td> <td class="c0" > <a href="#4130"> 0 </a> </td> <td class="c0" > <a href="lib-Graph-Easy-Attributes-pm--branch.html#4128-1"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $self->error("get_custom_attributes() doesn't take arguments") if @_ > 0; </td> </tr> <tr> <td class="h" > <a name="4129">4129</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4130">4130</a> </td> <td class="c0" > <a href="#4132"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $att = {}; </td> </tr> <tr> <td class="h" > <a name="4131">4131</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4132">4132</a> </td> <td class="c0" > <a href="# "> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> for my $key (sort keys %{$self->{att}}) </td> </tr> <tr> <td class="h" > <a > </a> </td> <td class="c0" > <a href="#4134"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4133">4133</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="4134">4134</a> </td> <td class="c0" > <a href="#4137"> 0 </a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $att->{$key} = $self->{att}->{$key}; </td> </tr> <tr> <td class="h" > <a name="4135">4135</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4136">4136</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4137">4137</a> </td> <td class="c0" > 0 </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $att; </td> </tr> <tr> <td class="h" > <a name="4138">4138</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="4139">4139</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="4140">4140</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 1; </td> </tr> <tr> <td class="h" > <a name="4141">4141</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> __END__ </td> </tr> </table> </body> </html>