;======================================================== FUNCTION define_product,type,length,ERROR=err,PARASOL=parasol ; Cette fonction retourne une structure definissant un produit de niveau 1 ;------------------------------------------------------------ FORWARD_FUNCTION define_L1TBG1, $ define_L2TLGA ,define_L2TLGC ,$ define_L2TOGA ,define_L2TOGB ,define_L2TOGC , $ define_L2TRGB ,define_L2TLGV , $ define_L3TLGA ,define_L3TLGB ,define_L3TLGC ,$ define_L3TOGB ,define_L3TOGC , $ define_L3TRGB ,define_L2TOGV;$ ; define_L2TLGAo ,define_L2TLGCo, $ ; define_L2TOGAo,define_L2TOGBo,define_L2TOGCo, $ ; define_L2TRGBo, $ ; define_L3TLGAo,define_L3TLGBo,define_L3TLGCo, $ ; define_L3TOGBo,define_L3TOGCo, $ ; define_L3TRGBo, $ ; define_L2TLGS ,define_L2TOGU ,define_L2TOGV ,define_L2TOGW ,define_L3TLGCp ; Fichiers de suivi ; ; Structure definissant un parametre. Le nom, la taille (en byte), la position du premier octet, ; l'unit.AŽé, pente et offset pour convertir en donnŽées physiques, valeur "non valide", et valeur "saturŽé" ; Note : Lorsque on travaille avec un I2 signŽé (existe au niveau 1), il faut mettre -2 sur la taille. ; Si c'est un integer 2 (entre 0 et 65535) mettre 2 A = {parametre,name:'Ref',size:2,fi_by:4,unit:'%',slope:0.01,offset:0.,satur:999l,unvalid:999l,dummy:999l} ; Structure dŽéfinissant une combinaison de parametres. Son nom, et le numŽéro des 3 parametres qui ; doivent aller dans les canaux R, G, B. B = {combi,name:'CompColor VIS',p0:2,p1:1,p2:0} err = 1 CASE STRMID(type,2,6) OF 'L1TBG1' : prod = define_L1TBG1(PARASOL=parasol) 'L2TLGA' : prod = define_L2TLGA(PARASOL=parasol) 'L2TLGC' : prod = define_L2TLGC() 'L2TLGV' : prod = define_L2TLGV(PARASOL=parasol) 'L2TOGA' : prod = define_L2TOGA(PARASOL=parasol) 'L2TOGB' : prod = define_L2TOGB() 'L2TOGC' : prod = define_L2TOGC(PARASOL=parasol) 'L2TRGB' : prod = define_L2TRGB(PARASOL=parasol) 'L3TLGA' : prod = define_L3TLGA(PARASOL=parasol) 'L3TLGB' : prod = define_L3TLGB(PARASOL=parasol) 'L3TLGC' : prod = define_L3TLGC() 'L3TOGB' : prod = define_L3TOGB() 'L3TOGC' : prod = define_L3TOGC() 'L3TRGB' : prod = define_L3TRGB() ; 'L2TLGS' : prod = define_L2TLGS() 'L2TOGV' : prod = define_L2TOGV(PARASOL=parasol) ; 'L2TOGW' : prod = define_L2TOGW() ELSE : BEGIN user_response=DIALOG_MESSAGE('This product has not yet been defined in Anapol') RETURN,err END ENDCASE IF prod.Nbyte_tot NE length THEN BEGIN user_response=DIALOG_MESSAGE('ERROR : Inconsistent record length',/INFO) print,' In define_ :',prod.Nbyte_tot print,' In product :', length RETURN,err ENDIF err = 0 IF !D.N_COLORS LT (2l)^24 THEN prod.Nc_par = 0 ; Si affichage 8 bits, on ne met pas de combinaisons colorees IF !D.N_COLORS LT (2l)^24 THEN prod.Ncd_par = 0 ; Si affichage 8 bits, on ne met pas de combinaisons colorees ; ; Ici on definit la valeur speciales. Different en niveau 1 et 2 ; never = -35000 IF STRMID(type,3,1) EQ '1' THEN BEGIN ;============== Niveau 1 =============== FOR i=0, prod.Nu_par -1 DO BEGIN ; -------- Non Directionnel ----------- CASE prod.U_par[i].size OF 1 : BEGIN prod.U_par[i].satur = never prod.U_par[i].unvalid = never prod.U_par[i].dummy = 0 END 2 : BEGIN prod.U_par[i].satur = never prod.U_par[i].unvalid = never prod.U_par[i].dummy = 0 END -2 : BEGIN prod.U_par[i].satur = 32767 prod.U_par[i].unvalid = never prod.U_par[i].dummy = -32767 END ENDCASE ENDFOR FOR i=0, prod.Nd_par -1 DO BEGIN ; -------- Directionnel ----------- CASE prod.D_par[i].size OF 1 : BEGIN prod.D_par[i].satur = never prod.D_par[i].unvalid = never prod.D_par[i].dummy = 0 END 2 : BEGIN prod.D_par[i].satur = never prod.D_par[i].unvalid = never prod.D_par[i].dummy = 0 END -2 : BEGIN prod.D_par[i].satur = 32767 prod.D_par[i].unvalid = never prod.D_par[i].dummy = -32767 END ENDCASE ENDFOR ENDIF ELSE BEGIN ;============== Niveau 2 & 3 =============== FOR i=0, prod.Nu_par -1 DO BEGIN ; -------- Non Directionnel ----------- CASE prod.U_par[i].size OF 1 : BEGIN prod.U_par[i].satur = never prod.U_par[i].unvalid = 254 prod.U_par[i].dummy = 255 END 2 : BEGIN prod.U_par[i].satur = never prod.U_par[i].unvalid = 65534 prod.U_par[i].dummy = 65535 END -2 : BEGIN prod.U_par[i].satur = 32767 prod.U_par[i].unvalid = never prod.U_par[i].dummy = -32767 END 5 : BEGIN prod.U_par[i].satur = never prod.U_par[i].unvalid = never prod.U_par[i].dummy = 255 END -5 : BEGIN prod.U_par[i].satur = never prod.U_par[i].unvalid = never prod.U_par[i].dummy = 255 END ELSE : BEGIN ; Cas particulier des paametres binaires IF prod.U_par[i].size LT 11 OR prod.U_par[i].size GT 18 THEN BEGIN print,' The size non directional parameter ',prod.U_par[i].name,' is not valid' STOP ENDIF prod.U_par[i].satur = never prod.U_par[i].unvalid = never prod.U_par[i].dummy = 255 END ENDCASE ENDFOR FOR i=0, prod.Nd_par -1 DO BEGIN ; -------- Directionnel ----------- CASE prod.D_par[i].size OF 1 : BEGIN prod.D_par[i].satur = never prod.D_par[i].unvalid = 254 prod.D_par[i].dummy = 255 END 2 : BEGIN prod.D_par[i].satur = never prod.D_par[i].unvalid = 65534 prod.D_par[i].dummy = 65535 END -2 : BEGIN prod.D_par[i].satur = 32767 prod.D_par[i].unvalid = never prod.D_par[i].dummy = -32767 END 5 : BEGIN prod.D_par[i].satur = never prod.D_par[i].unvalid = never prod.D_par[i].dummy = 255 END -5 : BEGIN prod.D_par[i].satur = never prod.D_par[i].unvalid = never prod.D_par[i].dummy = 255 END ENDCASE ENDFOR ENDELSE RETURN, prod END