#!/usr/bin/perl
use strict;
#########################################################
#しらぎくさいと実験室                                   #
#画像変換バイナリ検索スクリプト                第0.920版#
#########################################################
#平成19年 5月13日 しらぎくさいと                       #
#Copyright (c)2007      MINOBE Hiroyuki, Saitama, JAPAN.#
#Copyright (c)2007      Marguerite Site, Saitama, JAPAN.#
#   www.marguerite.jp                                   #
#########################################################
use vars qw(
	@paths $answer $path $magick $pbm
	);
my ($i, $j, $answer2);
#検索対象となるパス。
if (($i=$ENV{'PATH'})=~/\A[a-zA-Z]:\\/) { @paths=split(/;/,$ENV{'PATH'}); }
else { @paths=split(/:/,$ENV{'PATH'}); }
#イメージマジックは使えるか?
$magick=0;
$answer="
イメージマジック。
\n";
eval { require Image::Magick; };
if (!$@) { $answer.="お使いの環境はイメージマジックに対応しております。
\n"; ++$magick; }
else { $answer.="お使いの環境はイメージマジックには対応しておりません。
\n"; }
#NetPBMの主要なコマンドは使えるか?
#ウィンドウズ以外のOSである事が条件。
$answer.="NetPBM。
\n";
eval {
	$i=`perl -v`;
	$j=&search('perl');
	$i=`$j/perl -v` if !$i;
	};
if (!($i=~/MSWin32-/)) {
	$pbm=1;
	#GIF関連。
	$path='';
	$answer2="\n\t- GIF画像\n";
	$i=&search('giftopnm');
	if ($i ne '') { $answer2.="\t
- 読込: 可/"; $path=$i; }
	else { $answer2.="\t- 読込: 不可/"; $pbm=0; }
	if ($path eq '') { $i=&search('ppmtogif') || &search('pamtogif'); }
	else { $i=((-e "$path/ppmtogif") || (-e "$path/pamtogif")) && $path; }
	if ($i) { $answer2.="書出: 可\n\n"; $path=$i; }
	else { $answer2.="書出: 不可
\n\n"; $pbm=0; }
	#JPEG関連。
	$answer2.="\t- JPEG画像\n";
	if ($path eq '') { $i=&search('djpeg') || &search('jpegtopnm'); }
	else { $i=((-e "$path/djpeg") || (-e "$path/jpegtopnm")) && $path; }
	if ($i) { $answer2.="\t
- 読込: 可/"; $path=$i; }
	else { $answer2.="\t- 読込: 不可/"; $pbm=0; }
	if ($path eq '') { $i=&search('cjpeg') || &search('pnmtojpeg'); }
	else { $i=((-e "$path/cjpeg") || (-e "$path/pnmtojpeg")) && $path; }
	if ($i) { $answer2.="書出: 可\n\n"; $path=$i; }
	else { $answer2.="書出: 不可
\n\n"; $pbm=0; }
	#ビットマップ関連。
	$answer2.="\t- ビットマップ\n";
	if ($path eq '') { $i=&search('ppmtobmp'); }
	else { $i=(-e "$path/ppmtobmp") && $path; }
	if ($i) { $answer2.="\t
- BMP : 書出可\n"; $path=$i; }
	else { $answer2.="\t
- BMP : 書出不可\n"; $pbm=0; }
	if ($path eq '') { $i=&search('pbmtowbmp'); }
	else { $i=(-e "$path/pbmtowbmp") && $path; }
	if ($i) { $answer2.="\t
- WBMP: 書出可\n\n"; $path=$i; }
	else { $answer2.="\t
- WBMP: 書出不可\n\n"; $pbm=0; }
	#PNG関連。
	$answer2.="\t
- PNG画像\n";
	if ($path eq '') { $i=&search('pngtopnm'); }
	else { $i=(-e "$path/pngtopnm") && $path; }
	if ($i) { $answer2.="\t
- 読込: 可/"; $path=$i; }
	else { $answer2.="\t- 読込: 不可/"; $pbm=0; }
	if ($path eq '') { $i=&search('pnmtopng'); }
	else { $i=(-e "$path/pnmtopng") && $path; }
	if ($i) { $answer2.="書出: 可\n\n"; $path=$i; }
	else { $answer2.="書出: 不可
\n\n"; $pbm=0; }
	#処理関連。
	$answer2.="\t- 画像処理\n";
	if ($path eq '') { $i=&search('pnmscale') || &search('pamscale'); }
	else { $i=((-e "$path/pnmscale") || (-e "$path/pamscale")) && $path; }
	if ($i) { $answer2.="\t
- 縮小: 可\n"; $path=$i; }
	else { $answer2.="\t
- 縮小: 不可\n"; $pbm=0; }
	if ($path eq '') { $i=&search('pnmquant') || &search('pamquant'); }
	else { $i=((-e "$path/pnmquant") || (-e "$path/pamquant")) && $path; }
	if ($i) { $answer2.="\t
- 減色: 可\n\n"; $path=$i; }
	else { $answer2.="\t
- 減色: 不可\n\n"; $pbm=0; }
	if ($path eq '') { $i=&search('ppmtopgm') && &search('pgmtopbm'); }
	else { $i=(-e "$path/ppmtopgm") && (-e "$path/pgmtopbm") && $path; }
	if ($i) { $answer2.="\t
- 白黒: 可\n\n"; $path=$i; }
	else { $answer2.="\t
- 白黒: 不可\n\n"; $pbm=0; }
	#結論。
	$answer2.="\t
\n";
	if ($pbm) {
		$answer.=<お使いの環境ではNetPBMが利用出来ます。NetPBMへのパスは $path/ です。
NetPBMの詳細。
$answer2
ED
		}
	else {
		$answer.="お使いの環境ではNetPBMは利用出来ません。
\n";
		$answer.="NetPBMへのパスは $path/ ですが、一部実装されていないものがあります。\n" if $path ne '';
		$answer.=$answer2;
		}
	}
else {
	$answer.="
お使いの環境はウィンドウズのため、NetPBMは利用出来ません。
\n";
	$pbm=0;
	}
#結論。
if (!$magick && !$pbm) {
	eval { require Compress::Zlib; };
	$i='';
	if ($@) { $i="Zlibも使えないため、PNG画像の扱いにも制限が加わります。
"; }
	$answer=<お使いの環境では利用出来る画像に大きな制限が加わります。
$i
『しらぎくさいと実験室』の作品をご利用になるのであれば、サーヴァの変更を強く推奨致します。
$answer
ED
	}
else {
	$answer=<お使いのサーヴァは以下のような環境となっております。
$answer
ED
	}
$answer=<
お使いのサーヴァの画像処理環境。
お使いのサーヴァの画像処理環境。
$answer
Copyright (c)平成19年 さいたま・しらぎくさいと 版権所有
ED
binmode(STDOUT);
print "content-type: text/html;charset=shift_jis\ncontent-length: ",length($answer),"\n\n$answer";
exit();
	
#検索。
sub search {
	my $n=$_[0];
	my ($i);
	foreach $i (@paths) {
		return($i) if (-e "$i/$n");
		}
	return('');
}