#!/usr/bin/perl
#
# dcnote-smil : 
#   SMIL, REALPIX ファイルを作成する
# Copyright (C) GFD_Dennou_Club, 2001.  All rights reserved.
#
#  ●Usage : dcreal-smil.pl 
#
# 履歴  2001/04/10 杉山耕一朗;
#       2002/11/27 小高正嗣
#       2003/09/06 杉山耕一朗
#       2004/08/16 中神雄一    : 森羅万象学校用に改訂
#
#   libjcode-pm-perl 必要
######################################################################
#Jcode.pm モジュールの読み込み
use Jcode; 

#文字コード設定
$target_code = "euc"; 

# 設定ファイルの読み込み
$CONF = 'dcreal.conf'; 
while (@ARGV) {
    last unless ($ARGV[0] =~ /^-/);
    $_ = shift;                           
    if (/^-c/) { $CONF = shift; next; }; 
    die "unknown option $_";
}
require "$CONF";


#realpix の bit per seconds
# 削除 2004/08/16 

#画像用として使える広さを計算
#修正 2004/08/16 
if ($OHPSW) {
    $WIDTH = $WIDTH_SR + $WIDTH_PER; 
    if ($HEIGHT_SR <= $HEIGHT_PER) {
	$HEIGHT = $HEIGHT_PER ;
    }else{
	$HEIGHT = $HEIGHT_SR ;
    }
}else{
    $WIDTH = $WIDTH_PER;
    $HEIGHT = $HEIGHT_PER;
}

#格納先ディレクトリ定義
$RMDIR = "../$RMDIR"; 
$SMILDIR = "$RMDIR/smi";
$IMGDIR = "$RMDIR/img-real";

#ビデオ資源ディレクトリ作成 & リンク
#スライドビデオ、講演者ビデオの 2 つを用意 : 2004/08/17

unless (-d $RMDIR) {
    mkdir $RMDIR, 0777  ;
    $i = 0; 
    while ($TRT_FILES[$i]) {
	if ($RM_FILES[$i] !~ /^$/){
#	    print "cd $RMDIR; ln -s ../$SRC/$RM_FILES[$i] ./ \n";
	    system("cd $RMDIR; ln -s ../$SRC/$RM_FILES[$i] ./");
	}
	if ($RM_PER[$i] !~ /^$/){
#	    print "cd $RMDIR; ln -s ../$SRC/$RM_PER[$i] ./ \n";
	    system("cd $RMDIR; ln -s ../$SRC/$RM_PER[$i] ./");
	}
	$i++;
    }
}

#SMIL ファイル格納ディレクトリ作成
mkdir $SMILDIR, 0777  unless -d $SMILDIR ;

#画像ファイル格納ディレクトリ作成 & リンク
if ($OHPSW){
    unless (-d $IMGDIR) {
	mkdir $IMGDIR, 0777; 
	system("cd $IMGDIR; ln -s ../../$IMGDIR_RM/* ./");
    }
}

#タイミングファイルが存在するか確認
foreach $TRT (@TRT_FILES) {
    unless (-f $TRT) {
	print "Not $TRT \n"; 
	exit 1;
    }
}

# RealPix ファイル名を作成
# 削除 2004/08/16


#タイミングファイルのオープン, 必要な情報の抽出. 
$i = 0; 
$e = 0;
while (@TRT_FILES[$e]) {
    open (TIMING, "$TRT_FILES[$e]");
    $start[$e] = $i; 
    while (<TIMING>) {
	chomp(@_);
	#開始時間, OHP 番号, OHP タイトルを別々に保存
	$_ =~ /([0-9]+:[0-9]+:[0-9]+),(\d+):(.*)/;
	$time[$i] = $1;
	$ohp_num[$i] = $2;
	($code, $nmatch) = getcode($3);
	print "$code, $nmatch \n"; 
	$ohp_title[$i] = Jcode::convert($3, $target_code, $code); 
	$end[$e] = $i; 
	print "$time[$i], $ohp_num[$i], $ohp_title[$i] \n"; 
	$i++;
    }
    $e++;
    close (TIMING);
}
#print "@start, @end \n" ;


# SMIL ファイルの作成
$i = 0;
while ($ohp_num[$i]) {
    #ファイル名の準備
    $num = sprintf("%03d", $ohp_num[$i]);
    
    #既にファイルが存在しない場合のみ SMIL ファイルを作成
    $SMIL = "$SMILDIR/$num.smi";
    
    $e = 0;
    while ($end[$e]) {
	if ($i >= $start[$e]) {
	    $RM_SR = "$RM_FILES[$e]"; 
	    $RM_PER = "$RM_PER[$e]"; 
	}
	$e ++;
    }
    
    unless (-f $SMIL) {
        print "Making Smil files";
	&print_smi($SMIL, $time[$i], $RM_SR, $RM_PER);
    }  
    $i++;
}

# RealPix ファイルの作成
# 削除 2004/08/16 中神雄一

exit 0;

#=======================================================================


# SMIL ファイル作成用サブルーチン
sub print_smi{
    my($smifile, $time, $RM, $PER) = @_;
    open (SMIL, ">$smifile");

    #ファイルへの書き出し. 所々変数を代入. 
    if ($OHPSW) {
	print SMIL <<EOT
<smil>
<head>
  <meta name="title" content="$TITLE_EN"/>
  <meta name="author" content="$NAME_EN"/>
  <meta name="copyright" content="$COPYRIGHT"/> 
  <layout>
    <root-layout width="$WIDTH" height="$HEIGHT"/>
    <region id="sraid_reg" top="0" left="0" width="$WIDTH_SR" height="$HEIGHT_SR"/>
    <region id="person_reg" top="0" left="$WIDTH_SR" width="$WIDTH_PER" height="$HEIGHT_PER"/>
  </layout>
</head>
<body>
  <par>
     <seq>
       <video src="../$RM" region="sraid_reg" clip-begin="$time"/>
     </seq>
      <video src="../$PER" region="person_reg" clip-begin="$time"/>
  </par>
</body>
</smil>
EOT
;
    }else{
	print SMIL <<EOT
<smil>
<head>
  <meta name="title" content="$TITLE_EN"/>
  <meta name="author" content="$NAME_EN"/>
  <meta name="copyright" content="$COPYRIGHT"/> 
  <layout>
    <root-layout width="$WIDTH" height="$HEIGHT"/>
    <region id="person_reg" top="0" left="0" width="$WIDTH" height="$HEIGHT"/>
  </layout>
</head>
<body>
  <par>
     <seq>
       <video src="../$PER" region="person_reg" clip-begin="$time"/>
     </seq>
  </par>
</body>
</smil>
EOT
;
    }
    close (SMIL);
}


# RealPix 作成用サブルーチン
# 削除 2004/08/16 中神雄一

