#!/bin/csh
#######################################################################################################################################
# #
# E X E C U T I O N D ' U N E C O M M A N D E E N F O R M A T ' Sdu ' #
# ( O B L I G A T O I R E P O U R L E S T R A N S F O R M E E S D E F O U R I E R ) : #
# #
# #
# Utilisation : #
# #
# $xci/ExecSdu$vv$Z <commande> [<arguments>] #
# #
# #
# Author of '$xci/ExecSdu$vv$Z' : #
# #
# Jean-Francois Colonna (LACTAMME, 20060309101727). #
# #
#######################################################################################################################################
set Commande=$1
# Le nom de la commande a ete isole le 20060311112652... #
set CommandeArguments=($*)
set SePaRaTeUr="="
#20060312091233____:set SePaRaTeUr_1_A=":A""$SePaRaTeUr" #
#20060312091233____:set SePaRaTeUr_1_R=":R""$SePaRaTeUr" #
#20060312091233____:set SePaRaTeUr_1_X=":X""$SePaRaTeUr" #
set SePaRaTeUr_1_A=`$CA $xcc/cpp$Z | $GRE "^ *set *InDiCaTeUr_____A=" | $SE -e "s/^.*=//" -e s'/"//g'`
set SePaRaTeUr_1_R=`$CA $xcc/cpp$Z | $GRE "^ *set *InDiCaTeUr_____R=" | $SE -e "s/^.*=//" -e s'/"//g'`
set SePaRaTeUr_1_X=`$CA $xcc/cpp$Z | $GRE "^ *set *InDiCaTeUr_____X=" | $SE -e "s/^.*=//" -e s'/"//g'`
if (("$SePaRaTeUr_1_A" == "$K_VIDE") || ("$SePaRaTeUr_1_X" == "$K_VIDE") || ("$SePaRaTeUr_1_R" == "$K_VIDE")) then
EROR "La programmation de '"'$xcc/cpp$Z'"' a du etre modifiee."
else
endif
set SePaRaTeUr_1_A="$SePaRaTeUr_1_A$SePaRaTeUr"
set SePaRaTeUr_1_R="$SePaRaTeUr_1_R$SePaRaTeUr"
set SePaRaTeUr_1_X="$SePaRaTeUr_1_X$SePaRaTeUr"
set SePaRaTeUr_2_A="<"
set SePaRaTeUr_2_R=">"
# On notera que pour etre utilisee, la commande '$xci/ExecSdu$vv$Z' demande le remplacement #
# du separateur habituel "=" par deux symboles differents dans les circonstances suivantes : #
# #
# < : pour introduire le nom d'une image Argument (ATTENTION : #
# celle-ci doit correspondre a un fichier unique, ce qui #
# exclue, par exemple, l'option "A=" de 'v $xci/luminance.01$K' #
# et demande l'utilisation des trois options {"AR=","AV=","AB="). #
# #
# > : pour introduire le nom d'une image Resultat (ATTENTION : #
# celle-ci doit correspondre a un fichier unique, ce qui #
# exclue, par exemple, l'option "R=" de 'v $xci/vraies_C$K' #
# et demande l'utilisation des trois options {"RR=","RV=","RB="). #
# #
# Cela implique donc que la liste '$CommandeArguments' soit quotee afin que "<" et ">" ne #
# soient pas interpretes par le '$CSH'... #
# #
# On notera le qu'il serait utile de se debarasser de "<" et ">" et que '$xci/ExecSdu$vv$Z' #
# detecte automatiquement ce qui est image Argument et ce qui est image Resultat, mais je #
# sais pas comment faire a cette date... #
# #
# Le 20060309185742, furent introduits les separateurs ":A=" et ":R=" directement utilisables #
# dans les '$K' ('v $xci/interpole.03$K :A=') pour resoudre partiellement et "manuellement" #
# ce probleme... #
# #
# On notera que ces valeurs sont definies dans 'v $xcc/cpp$Z InDiCaTeUr_____'... #
set CommandeSdu="$K_VIDE"
# Future commande a executer en mode 'Sdu'... #
set ListeResultat=($K_VIDE)
# Future liste des images Resultat... #
foreach ElEmEnT ($CommandeArguments)
set DeCoMpOsE=`echo "$ElEmEnT" | $SE -e "s/$SePaRaTeUr_1_A/$SePaRaTeUr_2_A/g"`
set DeCoMpOsE=`echo "$DeCoMpOsE" | $SE -e "s/$SePaRaTeUr_1_R/$SePaRaTeUr_2_R/g"`
set DeCoMpOsE=`echo "$DeCoMpOsE" | $SE -e "s/\([$SePaRaTeUr$SePaRaTeUr_2_A$SePaRaTeUr_2_R]\)/ \1 /g"`
# Isolation du separateur de l'element courant (s'il existe...). #
if ($#DeCoMpOsE == 1) then
set CommandeSdu="$CommandeSdu"" $ElEmEnT"
# Lorsqu'il n'y a pas de separateur, l'element courant est conserve tel quel... #
else
if ($#DeCoMpOsE == 2) then
EROR "L'element courant $K_QS""$ElEmEnT""$K_QS est mal structure."
else
if ($#DeCoMpOsE > 3) then
EROR "L'element courant $K_QS""$ElEmEnT""$K_QS possede plus d'un separateur, \c"
ECHO "seul le premier est conserve"
else
endif
set PartieGauche=$DeCoMpOsE[1]
set SeparateurCourant=$DeCoMpOsE[2]
set PartieDRoite=$DeCoMpOsE[3]
# Lorsqu'il n'y a pas de signe "=", l'element courant est conserve tel quel... #
if ("$SeparateurCourant" == "$SePaRaTeUr") then
# Test introduit le 20060311112652... #
set PaRaM=`$Commande Parametres=VRAI |& $GRE " $PartieGauche$SePaRaTeUr "`
set PaRaM=`echo "$PaRaM" | $SE -e "s/^.* $PartieGauche$SePaRaTeUr *//"`
set PaRaM=`echo "$PaRaM" | $AW ' { print $1 } '`
set PaRaM=`echo "$PaRaM" | $SE -e "s/^.//"`
# Recuperation du type de la '$PartieGauche' courante (par exemple ":A" ou ":R"...). #
if ( ("$PaRaM$SePaRaTeUr" == "$SePaRaTeUr_1_A") \
|| ("$PaRaM$SePaRaTeUr" == "$SePaRaTeUr_1_R") \
) then
set SeparateurCourant=`echo "$PaRaM$SePaRaTeUr" | $SE -e "s/$SePaRaTeUr_1_A/$SePaRaTeUr_2_A/"`
set SeparateurCourant=`echo "$SeparateurCourant" | $SE -e "s/$SePaRaTeUr_1_R/$SePaRaTeUr_2_R/"`
# Si le type de la '$PartieGauche' courante a ete trouve (et s'il est bien ":A" ou ":R"), #
# alors on fait comme si il figurait a l'origine dans '$CommandeArguments'... #
else
# Dans le cas ou ni ":A" ni ":R" n'ont ete retrouve dans '$Commande' en ce qui concerne #
# le parametre '$PartieGauche', le '$SeparateurCourant' est conserve tel quel... #
if ( ("$PaRaM$SePaRaTeUr" == "$SePaRaTeUr_1_X") \
) then
set SeparateurCourant=`echo "$SeparateurCourant" | $SE -e "s/$SePaRaTeUr_1_X/$SePaRaTeUr_2_R/"`
# Si le type de la '$PartieGauche' courante a ete trouve (et s'il est bien ":X"), #
# alors on fait comme si il figurait a l'origine dans '$CommandeArguments' comme un ":R"... #
# Ceci a ete introduit le 20060312084828... #
else
# Dans le cas ou ni ":A" ni ":R" ni ":X" n'ont ete retrouve dans '$Commande' en ce qui #
# concerne le parametre '$PartieGauche', le '$SeparateurCourant' est conserve tel quel... #
endif
endif
else
endif
if ("$SeparateurCourant" == "$SePaRaTeUr_2_A") then
FileTmpB TeMpOrAiRe
$xci/format.01$X A=$PartieDRoite \
mode=2 \
$formatI \
R=$TeMpOrAiRe \
$formatR_Sdu
set CommandeSdu="$CommandeSdu"" $PartieGauche$SePaRaTeUr$TeMpOrAiRe"
# Lorsque le fichier de nom '$PartieDRoite' correspond a '$SePaRaTeUr_2_A", on fait #
# l'hypothese qu'il s'agit d'une image que l'on va changer de format... #
FileTmpE TeMpOrAiRe $NEXIST
# Les fichiers '$TeMpOrAiRe*' ne peuvent etre detruits car ils sont encore utiles par la #
# suite via les commandes lancees avec '$CommandeSdu'... #
else
if ("$SeparateurCourant" == "$SePaRaTeUr_2_R") then
set ListeResultat=($ListeResultat $PartieDRoite)
# Constitution de la liste des images qu'il faudra reformater a la fin... #
else
endif
set CommandeSdu="$CommandeSdu"" $PartieGauche$SePaRaTeUr$PartieDRoite"
# Dans les autres cas, on conserve l'element courant tel quel... #
endif
endif
endif
end
set CommandeSdu="$CommandeSdu"" $format_Sdu"
# En etant mis en dernier, le format '$format_Sdu' "ecrase" le '$formatI' Argument... #
SformatI
Sdu
# Sauvegarde de '$formatI' et mise en mode 'Sdu'... #
eval "$CommandeSdu"
# Execution de la commande Argument en format 'Sdu'... #
foreach ImAgE ($ListeResultat)
$xci/format.01$X A=$ImAgE \
mode=2 \
$formatI \
R=$ImAgE \
XminR=$sXmin XmaxR=$sXmax YminR=$sYmin YmaxR=$sYmax
# Remise au '$formatI' Argument des images Resultat... #
end
RformatI
# Retour au '$formatI' Argument... #
xT
$DELETE * >& $nul
# Nettoyage introduit le 20060311105846 de tous les fichiers de type '$TeMpOrAiRe'... #
# #
# Le '$nul' a ete introduit le 20060317144236 au cas ou aucun fichier n'aurait ete cree. #
# C'est, par exemple, le cas si l'on tape la commande : #
# #
# $xci/interpole.03$X #
# #
# sans aucun argument... #