package gradfont; #------------------------------------------------------------------------ # gradfont.pl: 文字列グラデーション化ライブラリ Ver1.00 # # Copyright (c) 1999 qz@ca.sakura.ne.jp # # 著作権は放棄しませんが、自由に使用・改造・再配布可能です。 # 改造版を再配布する際は、必ずファイル名を変更して、オリジナルを添付して # 配布してください。 # # ---------------------------------------------------------------- # 基本的な使い方 # require "gradfont.pl"; # print &gradfont'GradStr("12345", "#000000", "#FFFFFF"); # ---------------------------------------------------------------- # 最新版入手先 # http://www.ca.sakura.ne.jp/~qz/ # # 更新履歴: # 1999.03.11 初版。 #------------------------------------------------------------------------ #文字列グラデーション化(文字列、開始色、終了色) sub GradStr{ local($Str, $ColorFrom, $ColorTo, %Red, %Green, %Blue, $Len , $TagStr, $i, $StaTag, $EndTag, $FColor); $Str = $_[0]; $ColorFrom = $_[1]; $ColorTo = $_[2]; $StaTag = "" . &KcharAt($Str, $i + 1) . $EndTag; } return $TagStr; } #グラデーション階調を算出 引数(開始色,終了色,段階) sub GetLev{ local($F, $T, $n, $sa, $am); $F = $_[0]; $T = $_[1]; $n = $_[2]; $sa = $T - $F; if ($n == 0) {$am = 0;} else {$am = $sa % $n; $am = ($sa - $am) / $n;} return($am); } #--シフトJISコード: #--1バイト目 : 0x81 - 0x9F, 0xE0 - 0xFC #--2バイト目 : 0x40 - 0x7E, 0x80 - 0xFC #--EUCコード: #--0x80-0xff #日本語混在の文字列の長さを取得(Shift JIS)(文字列) sub Klength{ local($moji, $klen, $ki, $c, $cb); $moji = $_[0]; $klen = 0; for ($ki=0; $ki=0x81) && ($cb<=0x9F)) || (($cb>=0xE0) && ($cb<=0xFC))){ $ki++; } $klen++; } return $klen; } #日本語混在の文字列から指定した1文字を取得(Shift JIS)(文字列、位置) sub KcharAt{ local($moji, $len, $ai, $c, $cb); $moji = $_[0]; $pos = $_[1]; $len = 1; for($ai=0; $ai=0x81) && ($cb<=0x9F)) || (($cb>=0xE0) && ($cb<=0xFC))){ $c = $c . substr($moji, $ai + 1, 1); $ai++; } if ($pos == $len){last;} $len++; } return $c; } 1; #______________________________________________________________________End Of Script