[42] | 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 | |
---|