#!/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... #