#!/bin/csh

#######################################################################################################################################
#                                                                                                                                     #
#         C O M P R E S S I O N   E T   A R C H I V A G E   D ' U N E   L I S T E   D ' I M A G E S                                   #
#         O U   O P E R A T I O N   I N V E R S E  :                                                                                  #
#                                                                                                                                     #
#                                                                                                                                     #
#         Utilisation :                                                                                                               #
#                                                                                                                                     #
#              $xci/Gen_COMPR$vv$Z <Racine_images> <premiere> <derniere> <palette> <FluxResultat> [<Inverser> [<NomArchive> [<Pas>]]  #
#              $xci/Gen_COMPR$vv$Z <Racine_images> <premiere> <derniere>    RVB    <FluxResultat> [<Inverser> [<NomArchive> [<Pas>]]  #
#                                                                                                                                     #
#                                                                                                                                     #
#         Nota :                                                                                                                      #
#                                                                                                                                     #
#                       Cette commande se veut similaire a la                                                                         #
#                     commande 'v $xci/Gen_MPEG$vv$Z'. La                                                                             #
#                     difference majeure est que d'une part                                                                           #
#                     '$xci/Gen_COMPR$vv$Z' est reversible et                                                                         #
#                     que d'autre part, elle sauvegarde les                                                                           #
#                     images originales d'une sequence. Enfin,                                                                        #
#                     en mode fausses couleurs ("$Palette" != "$RVB_DKVP")                                                            #
#                     elle est independante evidemment de toute                                                                       #
#                     palette de couleurs...                                                                                          #
#                                                                                                                                     #
#                       Suivant la nature de '$Palette' le fichier                                                                    #
#                     genere par '$xci/Gen_COMPR$vv$Z' sera plus                                                                      #
#                     volumineux que celui genere par '$xci/Gen_MPEG$vv$Z'                                                            #
#                     ("$Palette" == "$RVB_DKVP") ; cela sera le                                                                      #
#                     contraire pour la condition opposee ("$Palette" != "$RVB_DKVP").                                                #
#                     a titre d'exemple :                                                                                             #
#                                                                                                                                     #
#                                       SIZE($xiak/NCOR.f9$MPEG) = 27.098.157    --> 74.885.120 > 27.098.157                          #
#                                       SIZE($xiad/TREF.41$MPEG) = 51.791.397    --> 30.801.920 < 51.791.397                          #
#                                                                                                                                     #
#                     la premiere taille correspondant a '$xci/Gen_MPEG$vv$Z'                                                         #
#                     et la seconde a '$xci/Gen_COMPR$vv$Z'. Evidemment, ces                                                          #
#                     conclusions ne sont pas "absolues" car, en effet, la                                                            #
#                     nature des images intervient aussi...                                                                           #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xci/Gen_COMPR$vv$Z' :                                                                                           #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20030925094306).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

set       RacineP=($1)
set       premiereI=$2
set       derniereI=$3
set       Palette=$4
                                        # On notera que le test sur '$Palette' ne concerne que la valeur particuliere '$RVB_DKVP'     #
                                        # (etre egal a, ou ne pas etre egal a...).                                                    #
set       FluxResultat=$5
set       Inverser=$6
set       NomArchive=$7
set       Pas=$8

setArgum  Inverser                      $NEXIST
                                        # Par defaut, on procede a une compression puis a un archivage...                             #

if        ("$NomArchive" == "$K_VIDE") then
#20030926094217____:          set       NomArchive="SEQUENCE"                                                                         #
          set       NomArchive="IMAG"
                                        # Par defaut, la sequence s'appellera 'SEQUENCE' dans le fichier '$FluxResultat'. Ce nom,     #
                                        # trop long, a ete change en 'IMAG' le 20030926094217...                                      #
else
endif

setArgum  Pas                           1
                                        # Lorsque cet argument est absent, on lui donne la valeur '1' parce que c'est la valeur la    #
                                        # plus logique (qui etait aussi la valeur implicite anterieure...).                           #

set       Racine=$RacineP[1]
                                        # Recuperation de la racine...                                                                #

set       NoError_DKVP=$EXIST
source    $Fdisk_video_P
unset     NoError_DKVP

set       Postfixe="$K_VIDE"
                                        # A priori, on considere qu'il n'y a pas de postfixe...                                       #
if        ($#RacineP > 1) then
          if        ("$Palette" == "$RVB_DKVP") then
                    EROR      "En mode 'RVB' les noms des images ne peuvent etre postfixes."
          else
                    set       Postfixe=$RacineP[2]
                                        # Cas ou il y a un postfixe et que l'on est en mode "palette"...                              #
          endif
else
endif

set       DiReCtOrY=`GetPath $Racine`
set       SeQuEnCe=`GetLeaf $Racine`
                                        # Recuperation du directory d'appartenance de la sequence et de son nom relatif...            #

FileTmpB  FLiStE
FileTmpB  Fcompression $Y

if        ("$Palette" == "$RVB_DKVP") then
          $xci/nombres$X                                                                                                                \
                    A=$K_VIDE p=$premiereI d=$derniereI pas=$Pas postfixe=$ROUGE lignes=VRAI CAL1=FAUX                                  \
                                                                                                    >   $FLiStE
          $xci/nombres$X                                                                                                                \
                    A=$K_VIDE p=$premiereI d=$derniereI pas=$Pas postfixe=$VERTE lignes=VRAI CAL1=FAUX                                  \
                                                                                                    >>! $FLiStE
          $xci/nombres$X                                                                                                                \
                    A=$K_VIDE p=$premiereI d=$derniereI pas=$Pas postfixe=$BLEUE lignes=VRAI CAL1=FAUX                                  \
                                                                                                    >>! $FLiStE
else
          $xci/nombres$X                                                                                                                \
                    A=$K_VIDE p=$premiereI d=$derniereI pas=$Pas                 lignes=VRAI CAL1=FAUX                                  \
                                                                                                    >   $FLiStE
                                        # Le 'CAL1=FAUX' est destine a eliminer les messages emis dans le cas ou le pas n'est pas     #
                                        # egal a l'unite ('v $xil/defi_K2$vv$DEF DoQu')...                                            #
endif

$CA       $xcs/csh$Y                                                                                                                    \
                                                                                          >   $Fcompression

$CA       $FLiStE                                                                                                                 |     \
$SOR                                                                                                                              |     \
$R        "$K_BLANC" "$K_NL"                                                                                                      |     \
$GRE      -v '^ *$'                                                                                                               |     \
$SE       -e "s/^/CoDaGe  /"                                                                                                            \
                                                                                          >>! $Fcompression
                                        # Generation du programme de compression de la sequence argument...                           #

FileTmpE  FLiStE

if        ($Inverser == "$NEXIST") then
                                        # Cas de la compression et de l'archivage :                                                   #

          xT
                                        # On se place dans le directory ou implanter les images compressees de la sequence.           #

          $DELETE   $NomArchive.*                                                                                       >& $nul
                                        # Nettoyage a priori...                                                                       #

          alias     CoDaGe    'set       ImAgE="\!*"                                                                              ;    \\
                               set       ImA_A=$DiReCtOrY$K_sepS$SeQuEnCe.$ImAgE$Postfixe ; set ImA_R=$NomArchive.$ImAgE$Postfixe ;    \\
                               DATEf     $ImA_A ; set DaTe=`DATEfD` ; unset Fdate                                                 ;    \\
                               $DELETE   $ImA_R                                                                                   ;    \\
                               $CA       $ImA_A                                                                                   |    \\
                               $bCOMPRES                                        > $ImA_R                                          ;    \\
                               retouche  $ImA_R $DaTe                                                                             ;    \\
                               unset     ImAgE DaTe ImA_A ImA_R'
                                        # Compression du fichier courant avec conservation de la date...                              #
          source    $Fcompression
                                        # Compression de la sequence argument...                                                      #

          unalias   CoDaGe

          $TAR      cvf                                                                                                                 \
                    $FluxResultat                                                                                                       \
                    $NomArchive.*                                                                                                       \
                                                                                                                        >&  $nul
                                        # Et enfin, archivage de la sequence argument...                                              #

          $DELETE   $NomArchive.*                                                                                       >& $nul
                                        # Nettoyage a posteriori...                                                                   #
else
                                        # Cas du desarchivage et de la decompression :                                                #

          xT
                                        # On se place dans le directory ou implanter les images compressees de la sequence.           #

          $DELETE   $NomArchive.*                                                                                       >& $nul
                                        # Nettoyage a priori...                                                                       #

          $TAR      xvf                                                                                                                 \
                    $FluxResultat                                                                                                       \
                                                                                                                        >&  $nul
                                        # Au pralable, desarchivage de la sequence argument...                                        #


          alias     CoDaGe    'set       ImAgE="\!*"                                                                              ;    \\
                               set       ImA_A=$NomArchive.$ImAgE$Postfixe ; set ImA_R=$DiReCtOrY$K_sepS$SeQuEnCe.$ImAgE$Postfixe ;    \\
                               DATEf     $ImA_A ; set DaTe=`DATEfD` ; unset Fdate                                                 ;    \\
                               $DELETE   $ImA_R                                                                                   ;    \\
                               $CA       $ImA_A                                                                                   |    \\
                               $bUNCOMPRES                                      > $ImA_R                                          ;    \\
                               retouche  $ImA_R $DaTe                                                                             ;    \\
                               unset     ImAgE DaTe ImA_A ImA_R'
                                        # Decompression du fichier courant avec conservation de la date...                            #

          source    $Fcompression
                                        # Decompression de la sequence argument...                                                    #

          unalias   CoDaGe

          $DELETE   $NomArchive.*                                                                                       >& $nul
                                        # Nettoyage a posteriori...                                                                   #
endif

FileTmpE  Fcompression



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.