#!/bin/csh
#######################################################################################################################################
# #
# R E C A D R A G E D E S A N C I E N S " H A R D - C O P I E S " T E K T R O N I X : #
# #
# #
# Utilisation : #
# #
# $xci/RecadrageHardCopy.02$vv$Z <imaA> <imaR> [<formatR> [<Mode> [<Scroll> [<MargeS> [<Seuil> [<FacX [<FacY> [<Trans>]]]]]]] #
# #
# #
# Author of '$xci/RecadrageHardCopy.02$vv$Z' : #
# #
# Jean-Francois COLONNA (LACTAMME, 20220207103820). #
# #
#######################################################################################################################################
set imageA=$1
set imageR=$2
set FormatR=($3)
set Mode=$4
set Scroll=$5
# Parametre introduit le 20220208121619 pour 'v $xiHi/OLDIES_BUT_GOLDIES_NB.recadree.0001'. #
set MargeS=$6
# Parametre introduit le 20220208121619 pour 'v $xiHi/OLDIES_BUT_GOLDIES_NB.recadree.0013'. #
set Seuil=$7
set FactX=$8
set FactY=$9
set Trans="$10"
# Parametre introduit le 20240318172427 pour 'v $xiHi/OLDIES_BUT_GOLDIES_NB.0101$JPEG'... #
setArgum FormatR $formatR_Pdu
setArgum Mode 2
setArgum Scroll $EXIST
setArgum MargeS 0
setArgum Seuil 252
setArgum FactX 10
setArgum FactY 10
setArgum Trans "$K_VIDE"
if (-e $imageA) then
S
FilSTmpB ImAgEt
$CONVERT -depth $NBitsOctet JPEG:$imageA $Trans JPEG:$ImAgEt.0$JPEG
#2024031817:set DiMeNsIoNs=`$CONVERT -verbose -depth $NBitsOctet -flip JPEG:$imageA RGBA:$ImAgEt.1$RVB |& $GRE "$imageA" | $HEA -1` #
set DiMeNsIoNs=`$CONVERT -verbose -depth $NBitsOctet -flip JPEG:$ImAgEt.0$JPEG RGBA:$ImAgEt.1$RVB |& $GRE "$ImAgEt.0$JPEG" | $HEA -1`
set DiMeNsIoNs=`echo "$DiMeNsIoNs" | $R "$K_TAB" "$K_BLANC"`
set DiMeNsIoNs=`echo "$DiMeNsIoNs" | $SE -e 's/^.* \([0-9][0-9]*\)x\([0-9][0-9]*\)[ +].*$/\1 \2/'`
# C'est 'v $xiMo/creation$Z le.format.a.encore.change' qui a fourni les quelques instructions #
# qui precedent... #
SwapB $ImAgEt.1$RVB
@ DiMeNsIoNsX = $DiMeNsIoNs[1] - 0
@ DiMeNsIoNsY = $DiMeNsIoNs[2] - 0
gFITn FIT1 $DiMeNsIoNsX $DiMeNsIoNsY
FIT1
unset DiMeNsIoNsX
unset DiMeNsIoNsY
unset DiMeNsIoNs
$xci/RVB_load$X \
A=$ImAgEt.1$RVB \
RVB=VRAI \
R=$ImAgEt.2 \
$formatI
if ($Scroll == $EXIST) then
$xci/luminance.01$X \
A=$ImAgEt.2 \
$formatI | \
$xci/seuil$X \
seuil=$Seuil \
inferieur=$NOIR superieur=$BLANC \
$formatI | \
$xci/dilate.01$X \
dilatation=VRAI \
R=$ImAgEt$LUMIN \
$formatI
set Xcentre=`calculINS $Xmin+($dimX/2)`
set Ycentre=`calculINS $Ymin+($dimY/2)`
set PoInT=`$xci/niveau$X A=$ImAgEt$LUMIN x=$Xmin y=$Ycentre Prme=VRAI`
if ($PoInT != $BLANC) then
EROR "La luminance de '$imageA' n'est pas correcte -1-."
else
endif
set PoInT=`$xci/niveau$X A=$ImAgEt$LUMIN x=$Xcentre y=$Ymin Prme=VRAI`
if ($PoInT != $BLANC) then
EROR "La luminance de '$imageA' n'est pas correcte -2-."
else
endif
$xci/S_point$X \
A=$ImAgEt$LUMIN \
niveau=$BLANC \
x=$Xmin y=$Ycentre \
$formatI | \
$xci/S_point$X \
niveau=$BLANC \
x=$Xcentre y=$Ymin \
R=$ImAgEt$LUMIN \
$formatI
# On fait ensuite l'hypothese que l'image '$ImAgEt$LUMIN' a l'apparence suivante : #
# #
# #
# --------------------------------------- #
# |*** | #
# |*** | #
# |*** | #
# |*** | #
# |*** | #
# |*** NOIR | #
# |*** | #
# |A** | #
# |*** | #
# |*** | #
# |*** | #
# |***************************************| #
# |*******************BLANC***************| #
# |***************************************| #
# |*******************B*******************| #
# --------------------------------------- #
# #
# #
# Ci-apres, on va donc decaler a gauche jusqu'a ce que le point : #
# #
# A={$Xmin,$Ycentre} #
# #
# qui initialement est '$BLANC' devienne '$NOIR' : #
# #
# #
# --------------------------------------- #
# | | #
# | | #
# | | #
# | | #
# | | #
# | NOIR | #
# | | #
# |A | #
# | | #
# | | #
# | | #
# |************************************ | #
# |*******************BLANC************ | #
# |************************************ | #
# |*******************B**************** | #
# --------------------------------------- #
# #
# #
# Ensuite, on fera un decalage vers le bas jusqu'a ce que le point : #
# #
# B={$Xcentre,$Ymin} #
# #
# qui initialement est '$BLANC' devienne '$NOIR' : #
# #
# #
# --------------------------------------- #
# | | #
# | | #
# | | #
# | | #
# | | #
# | NOIR | #
# | | #
# |A | #
# | | #
# | | #
# | | #
# | | #
# | | #
# | | #
# | B | #
# --------------------------------------- #
# #
set PaS_TrAnSlAtIoN_X=`$xcg/DIVZ.01$X a=$FactX b=$dimX signe="$K_VIDE"`
set PaS_TrAnSlAtIoN_Y=`$xcg/DIVZ.01$X a=$FactY b=$dimY signe="$K_VIDE"`
# Les parametres '$Fact?' fait qu'on se translate par "paquets" de '$FactX' colonnes #
# et '$FactY' lignes... #
set TrAnSlAtIoN_X=$PaS_TrAnSlAtIoN_X
set TrAnSlAtIoN_Y=0
set NoIr=`echo $NOIR | $SE -e 's/^0*\(0\)$/\1/'`
# Et ce a cause du fait que '$NOIR' vaut '000' et non pas '0', ce qui donc contrarierait #
# les deux tests de '$PoInT' ci-apres... #
set ItErEr=$EXIST
while ($ItErEr == $EXIST)
$xci/scroll$X \
A=$ImAgEt$LUMIN \
toreX=FAUX trX=-$TrAnSlAtIoN_X \
toreY=FAUX trY=-$TrAnSlAtIoN_Y \
R=$ImAgEt$LUMIN.1 \
$formatI
# Decalage a gauche... #
set PoInT=`$xci/niveau$X A=$ImAgEt$LUMIN.1 x=$Xmin y=$Ycentre Prme=VRAI`
if ($PoInT == $NoIr) then
set ItErEr=$NEXIST
# On s'arrete lorsque la bande verticale (de gauche et contenant le point 'A') a #
# completement disparu... #
else
set TrAnSlAtIoN_X=`$xcg/ADD2.01$X a=$TrAnSlAtIoN_X b=$PaS_TrAnSlAtIoN_X signe="$K_VIDE"`
endif
end
set TrAnSlAtIoN_Y=$PaS_TrAnSlAtIoN_Y
set ItErEr=$EXIST
while ($ItErEr == $EXIST)
$xci/scroll$X \
A=$ImAgEt$LUMIN \
toreX=FAUX trX=-$TrAnSlAtIoN_X \
toreY=FAUX trY=-$TrAnSlAtIoN_Y \
R=$ImAgEt$LUMIN.1 \
$formatI
# Decalage vers le bas... #
set PoInT=`$xci/niveau$X A=$ImAgEt$LUMIN.1 x=$Xcentre y=$Ymin Prme=VRAI`
if ($PoInT == $NoIr) then
set ItErEr=$NEXIST
# On s'arrete lorsque la bande horizontale (inferieure et contenant le point 'B') a #
# completement disparu... #
else
set TrAnSlAtIoN_Y=`$xcg/ADD2.01$X a=$TrAnSlAtIoN_Y b=$PaS_TrAnSlAtIoN_Y signe="$K_VIDE"`
endif
end
set TrAnSlAtIoN_X=`$xcg/ADD2.01$X a=$TrAnSlAtIoN_X b=$MargeS signe="$K_VIDE"`
set TrAnSlAtIoN_Y=`$xcg/ADD2.01$X a=$TrAnSlAtIoN_Y b=$MargeS signe="$K_VIDE"`
# La marge de securite "manuelle" a ete introduite le 20220208121619... #
if ( (`$xcg/IFGE.01$X a=$TrAnSlAtIoN_X b=1` == $EXIST) \
|| (`$xcg/IFGE.01$X a=$TrAnSlAtIoN_Y b=1` == $EXIST) \
) then
EROR "L'image '$imageA' ne peut etre translatee."
#20220208133200____: set TrAnSlAtIoN_X=0 #
#20220208133200____: set TrAnSlAtIoN_Y=0 #
set TrAnSlAtIoN_X=$PaS_TrAnSlAtIoN_X
set TrAnSlAtIoN_Y=$PaS_TrAnSlAtIoN_Y
# C'est le cas, par exemple, de 'v $xiHi/OLDIES_BUT_GOLDIES_NB.recadree.0001'... #
else
endif
set TrAnSlAtIoN_Xs2=`$xcg/MOIT.01$X a=$TrAnSlAtIoN_X signe="$K_VIDE"`
set TrAnSlAtIoN_Ys2=`$xcg/MOIT.01$X a=$TrAnSlAtIoN_Y signe="$K_VIDE"`
execRVB $xci/scroll$X \
A=$ImAgEt.2%s \
toreX=FAUX trX=-$TrAnSlAtIoN_X \
toreY=FAUX trY=-$TrAnSlAtIoN_Y \
R=$ImAgEt.3%s \
$formatI
if ($NEXIST) then
# Test introduit le 20220210074819 afin de remplacer le decalage qui suit par un reformatage. #
execRVB $xci/scroll$X \
A=$ImAgEt.3%s \
toreX=FAUX trX=+$TrAnSlAtIoN_Xs2 \
toreY=FAUX trY=+$TrAnSlAtIoN_Ys2 \
R=$ImAgEt.4%s \
$formatI
# La translation {-$TrAnSlAtIoN_X,-$TrAnSlAtIoN_Y} elimine les zones verticale de gauche #
# et horizontale du bas. La translation {+$TrAnSlAtIoN_Xs2,+$TrAnSlAtIoN_Ys2} centre l'image #
# Resultat... #
else
set DiMeNsIoNs_X=`calculINS (1-$TrAnSlAtIoN_X-$MargeS)*$dimX`
set DiMeNsIoNs_Y=`calculINS (1-$TrAnSlAtIoN_Y-$MargeS)*$dimY`
gFITn FIT2 $DiMeNsIoNs_X $DiMeNsIoNs_Y
execRVB $xci/format.01$X \
A=$ImAgEt.3%s \
$formatI \
mode=3 \
R=$ImAgEt.5%s \
$formatR_FIT2
FIT2
execRVB $xci/format.01$X \
A=$ImAgEt.5%s \
$formatI \
mode=2 \
R=$ImAgEt.4%s \
$formatR_FIT1
FIT1
endif
else
execRVB $xci/neutre$X \
A=$ImAgEt.2%s \
R=$ImAgEt.4%s \
$formatI
# Possibilite "neutre" introduite le 20220208121619... #
endif
execRVB $xci/format.01$X \
A=$ImAgEt.4%s \
$formatI \
mode=$Mode \
R=$imageR%s \
$FormatR
# On notera que : #
# #
# FIT1 formatI="Xmin=0 Xmax=2337 Ymin=0 Ymax=1653" #
# 2338/1654 = 1.4135 #
# #
# Pdu formatI="Xmin=0 Xmax=1559 Ymin=0 Ymax=1149" #
# 1560/1150 = 1.3565 #
# #
# Pal formatI="Xmin=0 Xmax=779 Ymin=0 Ymax=574" #
# 780/575 = 1.3565 #
# #
# Les deux formats 'FIT1' et 'Pdu' (ainsi que 'Pal' et d'autres "homothetiques"...) ont des #
# proportions assez proches... #
FilSTmpE ImAgEt
else
EROR "L'image '$imageA' n'existe pas."
endif