1 | #!/usr/bin/perl |
---|
2 | |
---|
3 | # File: $Id: testcolor.cgi,v 1.2 2005/10/08 05:55:08 sauber Exp $ |
---|
4 | # Author: (c) Soren Dossing, 2005 |
---|
5 | # License: OSI Artistic License |
---|
6 | # http://www.opensource.org/licenses/artistic-license.php |
---|
7 | |
---|
8 | use strict; |
---|
9 | use CGI qw/:standard/; |
---|
10 | |
---|
11 | # Suggest some commonly used keywords |
---|
12 | my $w = param('words') ? join ' ', param('words') : 'response rta pctfree'; |
---|
13 | |
---|
14 | # Start each page with an input field |
---|
15 | print <<EOF; |
---|
16 | Content-type: text/html |
---|
17 | |
---|
18 | <html><body> |
---|
19 | <form> |
---|
20 | Type some space seperated nagiosgraph line names here:<br> |
---|
21 | <input name=words size=80 value="$w"> |
---|
22 | <input type=submit> |
---|
23 | </form><br> |
---|
24 | EOF |
---|
25 | |
---|
26 | # Render a table of colors of all schemes for each keyword |
---|
27 | if ( param('words') ) { |
---|
28 | print "<table cellpadding=0><tr><td></td>"; |
---|
29 | print "<th>$_</th>" for 1..8; |
---|
30 | print "</tr>\n"; |
---|
31 | for my $w ( split /\s+/, param('words') ) { |
---|
32 | print "<tr><td>$w</td>"; |
---|
33 | for my $c ( 1..8 ) { |
---|
34 | my $h = hashcolor($w, $c); |
---|
35 | print "<td><table bgcolor=#000000><tr><td bgcolor=#$h> </td></tr></table></td>"; |
---|
36 | } |
---|
37 | print "</tr>\n"; |
---|
38 | } |
---|
39 | print "</table>\n"; |
---|
40 | } |
---|
41 | |
---|
42 | # End of page |
---|
43 | print "</body></html>\n"; |
---|
44 | |
---|
45 | # Calculate a color for a keyword |
---|
46 | # |
---|
47 | sub hashcolor { |
---|
48 | my$c=$_[1];map{$c=1+(51*$c+ord)%(216)}split//,$_[0]; |
---|
49 | my($i,$n,$m,@h);@h=(51*int$c/36,51*int$c/6%6,51*($c%6)); |
---|
50 | for$i(0..2){$m=$i if$h[$i]<$h[$m];$n=$i if$h[$i]>$h[$n]} |
---|
51 | $h[$m]=102if$h[$m]>102;$h[$n]=153if$h[$n]<153; |
---|
52 | $c=sprintf"%06X",$h[2]+$h[1]*256+$h[0]*16**4; |
---|
53 | return $c; |
---|
54 | } |
---|
55 | |
---|