#!/usr/local/bin/jperl
BEGIN {
if (scalar(@ARGV) == 0) {
MacPerl::Answer("フォルダ又はファイルをDrag&Dropしてください。");
&MacPerl'Quit(2);
exit;
}
}
print"例)C100M100Y30K0\n";
print"例)Y100M100\n";
print"例)DIC112\n";
print"ヒント)グレースケールに変換 シアン→K30 マゼンダ→K50 イエロー→K10 ブラック→K100\n";
#シアン
print"シアンの値は?";
∈
$CC=$C*0.01;
$CM=$M*0.01;
$CY=$Y*0.01;
$CK=$K*0.01;
#マゼンダ
print"マゼンダの値は?";
∈
$MC=$C*0.01;
$MM=$M*0.01;
$MY=$Y*0.01;
$MK=$K*0.01;
#イエロー
print"イエローの値は?";
∈
$YC=$C*0.01;
$YM=$M*0.01;
$YY=$Y*0.01;
$YK=$K*0.01;
#ブラック
print"ブラックの値は?";
∈
$BC=$C*0.01;
$BM=$M*0.01;
$BY=$Y*0.01;
$BK=$K*0.01;
foreach $INPUT (@ARGV){
($creator, $type) = &MacPerl'GetFileInfo($INPUT);
$Name=$INPUT;
open(INPUT,"<$INPUT");
open(OUTPUT, ">$Name.新");
&MacPerl'SetFileInfo("$creator", "$type", "$Name.新");
print OUTPUT"%!PS-Adobe-3.0 \n";
while(){
#プロセス4色の変換
if (s/([0-9.]*) ([0-9.]*) ([0-9.]*) ([0-9.]*) ([Kk])//){
$C=$1;#シアン
$M=$2;#マゼンダ
$Y=$3;#イエロー
$K=$4;#ブラック
$OB=$5;
&HENKAN;
print OUTPUT"$CA $MA $YA $KA $OB";
}
#特色の処理
if(s/^([0-9.]*) ([0-9.]*) ([0-9.]*) ([0-9.]*) \(.*\) ([0-9.]*) ([Xx])$//){
$Li=1-$5;
$C=$1*$Li;
$M=$2*$Li;
$Y=$3*$Li;
$K=$4*$Li;
if ($6 eq X){$OB=K;}
if ($6 eq x){$OB=k;}
&HENKAN;
print OUTPUT"$CA $MA $YA $KA $OB";
}
#グレースケールの変換
if (s/^([0-9\.]*) ([Gg])//){
$C=0;
$M=0;
$Y=0;
$K=1-$1;
if ($2 eq G){$OB=K;}
if ($2 eq g){$OB=k;}
&HENKAN;
print OUTPUT"$CA $MA $YA $KA $OB";
}
#グラデーションの変換
if (s/([0-9.]*) ([0-9.]*) ([0-9.]*) ([0-9.]*) ([0-9.]*) ([0-9.]*) ([0-9.]*) Bs//){
$C=$1;
$M=$2;
$Y=$3;
$K=$4;
$Z=$5;
$V=$6;
$N=$7;
&HENKAN;
print OUTPUT"$CA $MA $YA $KA $Z $V $N Bs";
}
#グレースケールのグラデーションの変換
#if(s/\%\_([0-9.]*) ([0-9.]*) ([0-9.]*) ([0-9.]*) Bs//){
#$C=0;
#$M=0;
#$Y=0;
#$K=$1;
#$Z=$2;
#$V=$3;
#$N=$4;
#&HENKAN;
#print OUTPUT"$CA $MA $YA $KA $Z $V $N Bs";
#z}
#グラデーションメッシュの変換
if(s"\%\_\[([0-9.]*) ([0-9.]*) ([0-9.]*) ([0-9.]*) (.*)\] \/N X\#""){
$C=$1;
$M=$2;
$Y=$3;
$K=$4;
$Z=$5;
&HENKAN;
print OUTPUT"\%\_\[$CA $MA $YA $KA $Z\] \/N X\#";
}
print OUTPUT;
}
close INPUT;
close OUTPUT;
}
&MacPerl'Answer("置換を終了しました。");
&MacPerl'Quit(2);
sub HENKAN{
#シアン振分
$C1=$CC*$C;
$C2=$CM*$C;
$C3=$CY*$C;
$C4=$CK*$C;
#マゼンダ振分
$M1=$MC*$M;
$M2=$MM*$M;
$M3=$MY*$M;
$M4=$MK*$M;
#イエロー振分
$Y1=$YC*$Y;
$Y2=$YM*$Y;
$Y3=$YY*$Y;
$Y4=$YK*$Y;
#ブラック振分
$B1=$BC*$K;
$B2=$BM*$K;
$B3=$BY*$K;
$B4=$BK*$K;
#統合
$CA=$C1+$M1+$Y1+$B1;
$MA=$C2+$M2+$Y2+$B2;
$YA=$C3+$M3+$Y3+$B3;
$KA=$C4+$M4+$Y4+$B4;
}
#変換リスト読み込み
sub Dic{
open(DIC,"DIC");
while($line=){
if ($line=~/^DIC$NUM (.*)/){
$INPUT=$1;
}#end IF
}#end WHILE
close DIC;
}#end DIC
sub IN{
$C=0;
$M=0;
$Y=0;
$K=0;
$INPUT =;
if($INPUT=~s/DIC([0-9]*)//i){
$NUM=$1;
&Dic;
}
if($INPUT=~/[cCCc青]([0-9]*)/){$C=$1;}
if($INPUT=~/[mMMm赤]([0-9]*)/){$M=$1;}
if($INPUT=~/[yYYy黄]([0-9]*)/){$Y=$1;}
if($INPUT=~/[bBkKBbKk黒]([0-9]*)/){$K=$1;}
print"それぞれC$C M$M Y$Y K$Kに振分けます。\n\n";
}