📄 util.pm
字号:
sienna3 => [0.803921568627451, 0.407843137254902, 0.223529411764706],
sienna4 => [0.545098039215686, 0.27843137254902, 0.149019607843137],
silver => [0.752941176470588,0.752941176470588,0.752941176470588],
skyblue => [0.529411764705882, 0.807843137254902, 0.92156862745098],
skyblue1 => [0.529411764705882, 0.807843137254902, 1],
skyblue2 => [0.494117647058824, 0.752941176470588, 0.933333333333333],
skyblue3 => [0.423529411764706, 0.650980392156863, 0.803921568627451],
skyblue4 => [0.290196078431373, 0.43921568627451, 0.545098039215686],
slateblue => [0.415686274509804, 0.352941176470588, 0.803921568627451],
slateblue1 => [0.513725490196078, 0.435294117647059, 1],
slateblue2 => [0.47843137254902, 0.403921568627451, 0.933333333333333],
slateblue3 => [0.411764705882353, 0.349019607843137, 0.803921568627451],
slateblue4 => [0.27843137254902, 0.235294117647059, 0.545098039215686],
slategray => [0.43921568627451, 0.501960784313725, 0.564705882352941],
slategray1 => [0.776470588235294, 0.886274509803922, 1],
slategray2 => [0.725490196078431, 0.827450980392157, 0.933333333333333],
slategray3 => [0.623529411764706, 0.713725490196078, 0.803921568627451],
slategray4 => [0.423529411764706, 0.482352941176471, 0.545098039215686],
slategrey => [0.43921568627451, 0.501960784313725, 0.564705882352941],
snow => [1, 0.980392156862745, 0.980392156862745],
snow1 => [1, 0.980392156862745, 0.980392156862745],
snow2 => [0.933333333333333, 0.913725490196078, 0.913725490196078],
snow3 => [0.803921568627451, 0.788235294117647, 0.788235294117647],
snow4 => [0.545098039215686, 0.537254901960784, 0.537254901960784],
springgreen => [0, 1, 0.498039215686275],
springgreen1 => [0, 1, 0.498039215686275],
springgreen2 => [0, 0.933333333333333, 0.462745098039216],
springgreen3 => [0, 0.803921568627451, 0.4],
springgreen4 => [0, 0.545098039215686, 0.270588235294118],
steelblue => [0.274509803921569, 0.509803921568627, 0.705882352941177],
steelblue1 => [0.388235294117647, 0.72156862745098, 1],
steelblue2 => [0.36078431372549, 0.674509803921569, 0.933333333333333],
steelblue3 => [0.309803921568627, 0.580392156862745, 0.803921568627451],
steelblue4 => [0.211764705882353, 0.392156862745098, 0.545098039215686],
summersky => [0.219607843137255, 0.690196078431373, 0.870588235294118],
tan => [0.823529411764706, 0.705882352941177, 0.549019607843137],
tan1 => [1, 0.647058823529412, 0.309803921568627],
tan2 => [0.933333333333333, 0.603921568627451, 0.286274509803922],
tan3 => [0.803921568627451, 0.52156862745098, 0.247058823529412],
tan4 => [0.545098039215686, 0.352941176470588, 0.168627450980392],
teal => [0,0.501960784313725,0.501960784313725],
thistle => [0.847058823529412, 0.749019607843137, 0.847058823529412],
thistle1 => [1, 0.882352941176471, 1],
thistle2 => [0.933333333333333, 0.823529411764706, 0.933333333333333],
thistle3 => [0.803921568627451, 0.709803921568627, 0.803921568627451],
thistle4 => [0.545098039215686, 0.482352941176471, 0.545098039215686],
tomato => [1, 0.388235294117647, 0.27843137254902],
tomato1 => [1, 0.388235294117647, 0.27843137254902],
tomato2 => [0.933333333333333, 0.36078431372549, 0.258823529411765],
tomato3 => [0.803921568627451, 0.309803921568627, 0.223529411764706],
tomato4 => [0.545098039215686, 0.211764705882353, 0.149019607843137],
turquoise => [0.250980392156863,0.87843137254902,0.815686274509804],
turquoise1 => [0, 0.96078431372549, 1],
turquoise2 => [0, 0.898039215686275, 0.933333333333333],
turquoise3 => [0, 0.772549019607843, 0.803921568627451],
turquoise4 => [0, 0.525490196078431, 0.545098039215686],
violet => [0.933333333333333, 0.509803921568627, 0.933333333333333],
violetred => [0.815686274509804, 0.125490196078431, 0.564705882352941],
violetred1 => [1, 0.243137254901961, 0.588235294117647],
violetred2 => [0.933333333333333, 0.227450980392157, 0.549019607843137],
violetred3 => [0.803921568627451, 0.196078431372549, 0.470588235294118],
violetred4 => [0.545098039215686, 0.133333333333333, 0.32156862745098],
wheat => [0.96078431372549,0.870588235294118,0.701960784313725],
wheat1 => [1, 0.905882352941176, 0.729411764705882],
wheat2 => [0.933333333333333, 0.847058823529412, 0.682352941176471],
wheat3 => [0.803921568627451, 0.729411764705882, 0.588235294117647],
wheat4 => [0.545098039215686, 0.494117647058824, 0.4],
white => [1, 1, 1],
whitesmoke => [0.96078431372549, 0.96078431372549, 0.96078431372549],
yellow => [1, 1, 0],
yellow1 => [1, 1, 0],
yellow2 => [0.933333333333333, 0.933333333333333, 0],
yellow3 => [0.803921568627451, 0.803921568627451, 0],
yellow4 => [0.545098039215686, 0.545098039215686, 0],
yellowgreen => [0.6, 0.8, 0.196078431372549],
);
}
sub mMin {
my $n=HUGE_VAL;
map { $n=($n>$_) ? $_ : $n } @_;
return($n);
}
sub mMax {
my $n=-(HUGE_VAL);
map { $n=($n<$_) ? $_ : $n } @_;
return($n);
}
sub cRGB {
my @cmy=(map { 1-$_ } @_);
my $k=mMin(@cmy);
return((map { $_-$k } @cmy),$k);
}
sub cRGB8 {
return cRGB(map { $_/255 } @_);
}
sub RGBasCMYK {
my @rgb=@_;
my @cmy=(map { 1-$_ } @rgb);
my $k=mMin(@cmy);
return((map { $_-$k } @cmy),$k);
}
sub HSVtoRGB ($$$) {
my ($h,$s,$v)=@_;
my ($r,$g,$b,$i,$f,$p,$q,$t);
if( $s == 0 ) {
## achromatic (grey)
return ($v,$v,$v);
}
$h %= 360;
$h /= 60; ## sector 0 to 5
$i = POSIX::floor( $h );
$f = $h - $i; ## factorial part of h
$p = $v * ( 1 - $s );
$q = $v * ( 1 - $s * $f );
$t = $v * ( 1 - $s * ( 1 - $f ) );
if($i<1) {
$r = $v;
$g = $t;
$b = $p;
} elsif($i<2){
$r = $q;
$g = $v;
$b = $p;
} elsif($i<3){
$r = $p;
$g = $v;
$b = $t;
} elsif($i<4){
$r = $p;
$g = $q;
$b = $v;
} elsif($i<5){
$r = $t;
$g = $p;
$b = $v;
} else {
$r = $v;
$g = $p;
$b = $q;
}
return ($r,$g,$b);
}
sub namecolor {
my $name=lc(shift @_);
$name=~s/[^\#!%a-z0-9]//cg;
my $col;
if($name=~/^#/) {
my ($r,$g,$b,$h);
if(length($name)<5) { # zb. #fa4, #cf0
$r=hex(substr($name,1,1))/0xf;
$g=hex(substr($name,2,1))/0xf;
$b=hex(substr($name,3,1))/0xf;
} elsif(length($name)<8) { # zb. #ffaa44, #ccff00
$r=hex(substr($name,1,2))/0xff;
$g=hex(substr($name,3,2))/0xff;
$b=hex(substr($name,5,2))/0xff;
} elsif(length($name)<11) { # zb. #fffaaa444, #cccfff000
$r=hex(substr($name,1,3))/0xfff;
$g=hex(substr($name,4,3))/0xfff;
$b=hex(substr($name,7,3))/0xfff;
} else { # zb. #ffffaaaa4444, #ccccffff0000
$r=hex(substr($name,1,4))/0xffff;
$g=hex(substr($name,5,4))/0xffff;
$b=hex(substr($name,9,4))/0xffff;
}
$col=[$r,$g,$b];
} elsif($name=~/^%/) {
my ($r,$g,$b,$c,$y,$m,$k);
if(length($name)<6) { # zb. %cmyk
$c=hex(substr($name,1,1))/0xf;
$m=hex(substr($name,2,1))/0xf;
$y=hex(substr($name,3,1))/0xf;
$k=hex(substr($name,4,1))/0xf;
} elsif(length($name)<10) { # zb. %ccmmyykk
$c=hex(substr($name,1,2))/0xff;
$m=hex(substr($name,3,2))/0xff;
$y=hex(substr($name,5,2))/0xff;
$k=hex(substr($name,7,2))/0xff;
} elsif(length($name)<14) { # zb. %cccmmmyyykkk
$c=hex(substr($name,1,3))/0xfff;
$m=hex(substr($name,4,3))/0xfff;
$y=hex(substr($name,7,3))/0xfff;
$k=hex(substr($name,10,3))/0xfff;
} else { # zb. %ccccmmmmyyyykkkk
$c=hex(substr($name,1,4))/0xffff;
$m=hex(substr($name,5,4))/0xffff;
$y=hex(substr($name,9,4))/0xffff;
$k=hex(substr($name,13,4))/0xffff;
}
$r=1-$c-$k;
$g=1-$m-$k;
$b=1-$y-$k;
$col=[$r,$g,$b];
} elsif($name=~/^!/) {
my ($r,$g,$b,$h,$s,$v);
if(length($name)<5) {
$h=360*hex(substr($name,1,1))/0xf;
$s=hex(substr($name,2,1))/0xf;
$v=hex(substr($name,3,1))/0xf;
} elsif(length($name)<8) {
$h=360*hex(substr($name,1,2))/0xff;
$s=hex(substr($name,3,2))/0xff;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -