#! /usr/bin/perl # # color.cgi # Display color code and actual color. # # http://www.hidekik.com/ # # $Id: color.cgi,v 1.3 2006/11/16 16:50:19 Hideki Kanayama Exp $ # Copyright(c) 2006, Hideki Kanayama All Rights Reserved use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-Type:text/html\n\n"; my $zero = 0; my $end = 256 * 256 * 256 - 1; my $offset = 4096; my $script = "color.cgi"; my $data; if ($ENV{"REQUEST_METHOD"} eq "POST"){ read(STDIN,$data,$ENV{"CONTENT_LENGTH"}); } else { $data = $ENV{"QUERY_STRING"}; } my @tmparry=split(/&/,$data); my ($key, $value); my %all; foreach my $string (@tmparry){ ($key,$value)=split(/=/,$string); $value =~ tr/+/ /; $all{"$key"}=$value; } my $from; my $to; if ($all{from} eq 'all'){ $from = $zero; $to = $end; } else { $from = $all{from}; $to = $from + $offset; } print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "解説ページへ
\n"; print "\n"; print "\n"; print "
\n"; &showlist; print "\n"; my $i; my $j; print "\n"; for($i=$from;$i<$to;$i=$i+16){ print "\n"; for($j=0;$j<=15;$j=$j+1){ &display; } print "\n"; } print "
"; print "
\n"; print "\n"; exit; sub showlist { for($i=$zero;$i<=$end;$i=$i+$offset){ my $printi = $from + $i - $offset * 3; if ($printi < $zero) {$printi = $printi + $end + 1;} if ($printi > $end) {$printi = $printi - $end - 1;} my $xhex = sprintf("%06x",$printi); my $x_reverse = &get_reverse($printi); print "
"; print "#$xhex"; print "
\n"; } } sub display { my $x=$i+$j; my $xhex = sprintf("%06x",$x); my $x_reverse = &get_reverse($x); print ""; printf("#$xhex\n",$x); } sub get_reverse { my $x = shift; my $tmp1 = int($x/256); my $top = int($tmp1/256); my $mid = $tmp1 - $top * 256; my $bot = $x - $mid * 256 - $top * 65536; # my $reverse_top = 255 - $top; # my $reverse_mid = 255 - $mid; # my $reverse_bot = 255 - $bot; my $reverse_top; my $reverse_mid; my $reverse_bot; my $thres = 200; if ((($top >= $thres) + ($mid >= $thres) + ($bot >= $thres)) >= 2) { $reverse_top = 0; $reverse_mid = 0; $reverse_bot = 0; } else { $reverse_top = 255; $reverse_mid = 255; $reverse_bot = 255; } my $x_reverse_top = sprintf("%02x",$reverse_top); my $x_reverse_mid = sprintf("%02x",$reverse_mid); my $x_reverse_bot = sprintf("%02x",$reverse_bot); my $x_reverse = $x_reverse_top . $x_reverse_mid . $x_reverse_bot; return $x_reverse; }