#!/bin/csh

#######################################################################################################################################
#                                                                                                                                     #
#         M I S E   D ' U N E   I M A G E   A U   F O R M A T   ' PostScript '  :                                                     #
#                                                                                                                                     #
#                                                                                                                                     #
#         Utilisation :                                                                                                               #
#                                                                                                                                     #
#    $xci/PostScript$Z   <imageA> <palette> <fichierR> [<Nexemplar> [<Signer> [<Titre> [<Ex> [<Ey> [<Tx> [<Ty> [<BB> [<PS>]]]]]]]]]   #
#    $xci/PostScript$Z   <imageA> RVB       <fichierR> [<Nexemplar> [<Signer> [<Titre> [<Ex> [<Ey> [<Tx> [<Ty> [<BB> [<PS>]]]]]]]]]   #
#                                                                                                                                     #
#                                                                                                                                     #
#         Nota :                                                                                                                      #
#                                                                                                                                     #
#                     Le 20180203105626 a ete introduite la                                                                           #
#                   variable d'environnement '$PostScript_NoMes'                                                                      #
#                   qui permet, si elle existe, de ne pas editer                                                                      #
#                   les messages relatifs a la coexistence des                                                                        #
#                   des images fausses et vraies couleurs. Ainsi :                                                                    #
#                                                                                                                                     #
#                                       setenv              PostScript_NoMes    $EXIST                                                #
#                                       $xci/PostScript$Z   (...)                                                                     #
#                                       unsetenv            PostScript_NoMes                                                          #
#                                                                                                                                     #
#                   procedera a cette elimination...                                                                                  #
#                                                                                                                                     #
#                                                                                                                                     #
#         Nota :                                                                                                                      #
#                                                                                                                                     #
#                     Le 20180205162037 a ete introduite la                                                                           #
#                   variable d'environnement '$PostScript_RVB'                                                                        #
#                   qui permet, si elle existe, de ne pas generer                                                                     #
#                   du '$PostScript' mais du '$RVB'. Ainsi :                                                                          #
#                                                                                                                                     #
#                                       setenv              PostScript_RVB      $EXIST                                                #
#                                       $xci/PostScript$Z   (...)                                                                     #
#                                       unsetenv            PostScript_RVB                                                            #
#                                                                                                                                     #
#                   procedera a cela. Cela a ete introduit pour                                                                       #
#                   'v $xci/Gen_MPEG$vv$Z PostScript_RVB' afin                                                                        #
#                   qu'il n'utilise plus '$PostScript' mais '$RVB'...                                                                 #
#                                                                                                                                     #
#                                                                                                                                     #
#         Nota :                                                                                                                      #
#                                                                                                                                     #
#                     Pour faire du "papier a lettres",                                                                               #
#                   il suffit de remplacer :                                                                                          #
#                                                                                                                                     #
#                                       0064 0100           translate                                                                 #
#                                       0512 ????           scale                                                                     #
#                                                                                                                                     #
#                   par (pour une image 'Std' ou pour une image 'Pal' que l'on veut sortir en format "carre") :                       #
#                                                                                                                                     #
#                                       0064 0600           translate                                                                 #
#                                       0128 0128           scale                                                                     #
#                                                                                                                                     #
#                   et par (pour une image 'Pal') :                                                                                   #
#                                                                                                                                     #
#                                       0064 0600           translate                                                                 #
#                                       0128 0094           scale                                                                     #
#                                                                                                                                     #
#                   et le tour est joue...                                                                                            #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xci/PostScript$Z' :                                                                                             #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

set       nomA=$1
set       palette=$2
set       nomR=$3
set       exemplaires=$4
set       Signer=$5
set       Titre=$6
set       EchelleX=$7
set       EchelleY=$8
set       TranslationX=$9
set       TranslationY=$10
set       BoundingBox=$11
set       PageSize=$12

set       NoError_DKVP=$EXIST
source    $Fdisk_video_P
unset     NoError_DKVP

source    $Fdivers

if        ("$palette" == "$RVB_DKVP") then
          set       palette=$xiP/gris.01
                                        # Dans le cas ou 'RVB' apparait a la place d'une palette "explicite", on force la palette     #
                                        # "neutre" (soit '$xiP/gris.01').                                                             #
else
endif

if        ("$exemplaires" == "$K_VIDE") then
#20030219092127____:          set       exemplaires=4                                                                                 #
          set       exemplaires=1
                                        # A compter du 20030219092127 on ne sort plus qu'un seul exemplaire (et non plus 4)...        #
else
endif

if        ("$Signer" == "$K_VIDE") then
#20030219092127____:          set       Signer=VRAI                                                                                   #
          set       Signer=FAUX
                                        # A compter du 20030219092127 on ne signe plus a priori...                                    #
else
endif

set       Conserver=FAUX
                                        # Indicateur introduit le 20030601130943, 'FAUX' a priori...                                  #

if        ("$EchelleX" == "$K_VIDE") then
          set       EchelleX=$dimX
                                        # Argument introduit le 20021016121239.                                                       #
else
          set       Conserver=VRAI
                                        # Lorsque l'une des echelles au moins est specifiee, la conservation des echelles est         #
                                        # demandee (introduit le 20030601130943).                                                     #
endif

if        ("$EchelleY" == "$K_VIDE") then
          set       EchelleY=$dimY
                                        # Argument introduit le 20021016121239.                                                       #
else
          set       Conserver=VRAI
                                        # Lorsque l'une des echelles au moins est specifiee, la conservation des echelles est         #
                                        # demandee (introduit le 20030601130943).                                                     #
endif

if        ("$TranslationX" == "$K_VIDE") then
#20090908105358____:          set       TranslationX=64                                                                               #
          set       TranslationX=0
                                        # Argument introduit le 20021016121239.                                                       #
else
endif

if        ("$TranslationY" == "$K_VIDE") then
#20090908105358____:          set       TranslationY=200                                                                              #
          set       TranslationY=0
                                        # Argument introduit le 20021016121239.                                                       #
else
endif

setArgum  BoundingBox                   `GetParam $xci/dumpx$X BoundingBox`
                                        # Argument introduit le 20111101102644.                                                       #

setArgum  PageSize                      `GetParam $xci/dumpx$X PageSize`
                                        # Argument introduit le 20111101102644.                                                       #

if        ("$nomR" == "$K_VIDE") then
          EROR      "Le nom du fichier 'PostScript' a generer est vide."
else
endif

if        ($?PostScript_RVB == $NEXIST) then
                                        # Test introduit le 20180205163021...                                                         #
          set       fichierR=$nomR$PostScript
                                        # Generation du nom complet du fichier.                                                       #
else
          set       fichierR=$nomR$RVB
endif

if        (! -e $fichierR) then
          set       arguments="$K_VIDE"
          set       arguments="$arguments PostScript=VRAI signer=$Signer optimiser=VRAI RVB=VRAI exemplaires=$exemplaires"
          set       arguments="$arguments estampiller=FAUX lisible=VRAI"
#20000309171044____:          set       arguments="$arguments Ty=250"                                                                 #
#20021016121239____:          set       arguments="$arguments Ty=200"                                                                 #
          set       arguments="$arguments conserver_echelles=$Conserver"
          set       arguments="$arguments Ex=$EchelleX"
          set       arguments="$arguments Ey=$EchelleY"
          set       arguments="$arguments Tx=$TranslationX"
          set       arguments="$arguments Ty=$TranslationY"
                                        # Arguments generaux du programme de conversion '$xci/dumpx$X'. On notera qu'a ete ajoute :   #
                                        #                                                                                             #
                                        #                   Ty=250                                                                    #
                                        #                                                                                             #
                                        # le 20000301104039, alors qu'avant c'etait la valeur par defaut (+100) qui etait utilisee... #
                                        # Le 20000309171044, je suis redescendu de 250 a 200. Le 20021016121239 a ete introduit le    #
                                        # parametrage complet possible de {{Ex,Ey},{Tx,Ty}}.                                          #
                                        #                                                                                             #
                                        # Le 20050311090059 j'ai introduit la possibilite d'estampiller...                            #
#20111101102644____:          set       arguments="$arguments BoundingBox=VRAI"                                                       #
          set       arguments="$arguments BoundingBox=$BoundingBox"
#20111101102644____:          set       arguments="$arguments PageSize=VRAI"                                                          #
          set       arguments="$arguments PageSize=$PageSize"
                                        # Introduit le 20111101101726 afin de garantir une utilisation correcte lors de la generation #
                                        # des '$MPEG' dans 'v $xci/Gen_MPEG$vv$Z .xci.PostScript.Z'...                                #

          if        (((-e $nomA$ROUGE) && (-e $nomA$VERTE) && (-e $nomA$BLEUE)) && (! -e $nomA)) then
                                        # Cas ou l'on en presence, sans ambiguite, d'une image en vraies couleurs.                    #
                    set       image_RVB=$EXIST
          else
                    if        (((! -e $nomA$ROUGE) || (! -e $nomA$VERTE) || (! -e $nomA$BLEUE)) && (-e $nomA)) then
                                        # Cas ou l'on en presence, sans ambiguite, d'une image en fausses couleurs.                   #
                              set       image_RVB=$NEXIST
                    else
                              if        (((-e $nomA$ROUGE) || (-e $nomA$VERTE) || (-e $nomA$BLEUE)) && (-e $nomA)) then
                                        # Cas ou existent simultanement une image en fausses couleurs et une en vraies couleurs.      #
                                        if        ($?PostScript_NoMes == $NEXIST) then
                                        # Test introduit le 20180203105626...                                                         #
                                                  EROR      "L'image demandee existe simultanement en fausses et en vraies couleurs."
                                        else
                                        endif

                                        set       PaLeTtE=`echo $palette | $GRE "$K_sepS""gris""\.[0-9][0-9]$K_DOLLAR"`
                                        # Examen de la palette demandee ; est-elle de nom :                                           #
                                        #                                                                                             #
                                        #                   .../gris.nn                                                               #
                                        #                                                                                             #
                                        # ou 'n' designe un chiffre decimal quelconque ?                                              #

                                        if        ("$PaLeTtE" == "$K_VIDE") then
                                                  set       image_RVB=$NEXIST
                                        # Lorsque ce n'est pas une palette de gris, on considere que l'on est en fausses couleurs.    #
                                                  if        ($?PostScript_NoMes == $NEXIST) then
                                        # Test introduit le 20180203105626...                                                         #
                                                            echo      "L'image en fausses couleurs est selectionnee."
                                                  else
                                                  endif
                                        else
                                                  set       image_RVB=$EXIST
                                        # Lorsque c'est une palette de gris, on considere que l'on est en vraies couleurs. On notera  #
                                        # qu'il peut y avoir une ambiguite dans le cas ou il existe simultanement une image fausses   #
                                        # couleurs utilisant une palette '$xiP/gris.??' et une image vraies couleurs de meme nom      #
                                        # (c'est le cas par exemple de 'v $xiirf/PAYS.q4$M'). La solution dans ce cas pour forcer     #
                                        # l'image fausses couleurs est d'utiliser pour elle la palette '$xiP/blanc.01'...             #
                                                  if        ($?PostScript_NoMes == $NEXIST) then
                                        # Test introduit le 20180203105626...                                                         #
                                                            echo      "L'image en vraies couleurs est selectionnee"
                                                            echo      "(a cause de la palette de gris)."
                                                  else
                                                  endif
                                        endif
                              else
                              endif
                    endif
          endif

          if        ($?image_RVB == $EXIST) then
                    FileTmpB            imageRVB
                                        # Creation de trois images temporaires.                                                       #

                    if        ($image_RVB == $EXIST) then
                                        # Cas des images en vraies couleurs :                                                         #
                              $xci/substitue$Z    $nomA $palette $imageRVB
                                        # Substitution preliminaire ; en general, ce sera la palette '$xiP/gris.01' qui sera          #
                                        # utilisee, car en effet, elle est "neutre"...                                                #
                    else
                                        # Cas des images en fausses couleurs :                                                        #
                              $xci/vraies_C$X     A=$nomA p=$palette RVB=VRAI R=$imageRVB                                               \
                                                                                                                        $formatI
                                        # Generation de l'image en vraies couleurs.                                                   #
                    endif

                    if        ("$Titre" != "$K_VIDE") then
                              titreRVB  $imageRVB "$Titre" $imageRVB
                                        # Et on titre si necessaire...                                                                #
                    else
                    endif

                    if        ($?PostScript_RVB == $NEXIST) then
                                        # Test introduit le 20180205162037...                                                         #
                              $xci/dumpx$X        AR=$imageRVB$ROUGE AV=$imageRVB$VERTE AB=$imageRVB$BLEUE                              \
                                                  $arguments                                                                            \
                                                                                                                        $formatI        \
                                                                                                                        > $fichierR
                                        # Generation du code PostScript...                                                            #
                    else
                              $xci/RVB_store$X    AR=$imageRVB$ROUGE AV=$imageRVB$VERTE AB=$imageRVB$BLEUE                              \
                                                  R=$fichierR                                                                           \
                                                                                                                        $formatI
                              SwapB               $fichierR
                                        # La generation du '$RVB' a la place du '$PostScript' a ete introduite le 20180205162037...   #
                                        # Le 'SwapB' est destine a 'v $xci/Gen_MPEG$vv$Z .CONVERT.'...                                #
                    endif

                    FileTmpE            imageRVB
                                        # Destruction des trois images intermediaires...                                              #

#AAAAMMJJhhmmss____:                    ro        $fichierR                                                                           #
                                        # et enfin, protection du fichier...                                                          #
          else
                    EROR      "Le fichier '$nomA' n'existe pas."
          endif
else
          EROR      "Le fichier PostScript '$fichierR' existe deja."
endif



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