#!/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"シアンの値は?"; &IN; $CC=$C*0.01; $CM=$M*0.01; $CY=$Y*0.01; $CK=$K*0.01; #マゼンダ print"マゼンダの値は?"; &IN; $MC=$C*0.01; $MM=$M*0.01; $MY=$Y*0.01; $MK=$K*0.01; #イエロー print"イエローの値は?"; &IN; $YC=$C*0.01; $YM=$M*0.01; $YY=$Y*0.01; $YK=$K*0.01; #ブラック print"ブラックの値は?"; &IN; $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"; }