| 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 | |
|---|