1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| PROCEDURE ChargeGPSExif(tabExif est tableau de ST_EXIF_Champ, stInfoGPS est ST_InfoGPS)
nIndice est entier
tabIFD est tableau de ST_EXIF_Champ
tabRationals est tableau de ST_EXIF_RationnelSansSigne
stRational est ST_EXIF_RationnelSansSigne
VariableRAZ(stInfoGPS)
nIndice = TableauCherche(tabExif, tcLinéaire, "nTag", 0x8825)
SI nIndice = -1 ALORS
RENVOYER Faux
FIN
SI tabExif[nIndice].nTypeOrigine <> c_TypeIFD ALORS
RENVOYER Faux
FIN
tabIFD = tabExif[nIndice].vValeur
nIndice = TableauCherche(tabIFD, tcLinéaire, "nTag", 1)
SI nIndice <> -1 _ET_ tabIFD[nIndice].vValeur..Type = wlChaîne ALORS
stInfoGPS.sRefLatitude = tabIFD[nIndice].vValeur
FIN
nIndice = TableauCherche(tabIFD, tcLinéaire, "nTag", 3)
SI nIndice <> -1 _ET_ tabIFD[nIndice].vValeur..Type = wlChaîne ALORS
stInfoGPS.sRefLongitude = tabIFD[nIndice].vValeur
FIN
nIndice = TableauCherche(tabIFD, tcLinéaire, "nTag", 2)
SI nIndice <> -1 _ET_ tabIFD[nIndice].vValeur..Type = wlTableau _ET_ tabIFD[nIndice].nTypeOrigine = c_TypeURational ALORS
tabRationals = tabIFD[nIndice].vValeur
POUR i = 1 _A_ TableauOccurrence(tabRationals)
stRational = tabRationals[i]
TableauAjoute(stInfoGPS.tabLatitude, stRational.nNumérateur / stRational.nDénominateur)
FIN
FIN
nIndice = TableauCherche(tabIFD, tcLinéaire, "nTag", 4)
SI nIndice <> -1 _ET_ tabIFD[nIndice].vValeur..Type = wlStructure _ET_ tabIFD[nIndice].nTypeOrigine = c_TypeURational ALORS
tabRationals = tabIFD[nIndice].vValeur
POUR i = 1 _A_ TableauOccurrence(tabRationals)
stRational = tabRationals[i]
TableauAjoute(stInfoGPS.tabLongitude, stRational.nNumérateur / stRational.nDénominateur)
FIN
FIN
RENVOYER Vrai |
Partager