;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ ;+ ; NAME:animgif ; ; PURPOSE:construire une animation gif ; ; CATEGORY:pour faire des dessins animes ; ; CALLING SEQUENCE:animgif, 'toto.gif' ; ; INPUTS:toto.gif: c''est le nom du fichier gif contenant ; l''animation. Rq ce fichier est place dans le repertoire definit par ; iodir. ; ; KEYWORD PARAMETERS: ; ; OUTPUTS: ; ; COMMON BLOCKS: ; common.pro ; ; SIDE EFFECTS:on utilise le Z buffer pour aller plus vite!. ; donc si on plante ds animgif il faut faire: ; IDL> device, /close ; IDL> set_plot, 'x' ; IDL> retall ; ; RESTRICTIONS: si on veut supprimer le @common, ; il faut definir a la main la taille de l''image (les ; variables xsize et ysize) ainsi que iodir. ; ; EXAMPLE: ; ; MODIFICATION HISTORY: Guillaume Roullet (grlod@ipsl.jussieu.fr) ; Sebastien Masson (smasson@lodyc.jussieu.fr) ; 30/4/1999 ;- ;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ PRO animgif, nomfic @common ; ; recupere la palette de couleur et la place dans rouge, vert, bleu ; tvlct, rouge,vert,bleu,/get ; ; complete la palette courante sur 256 couleurs ; red = [rouge, replicate(255, 256-n_elements(rouge))] green = [vert, replicate(255, 256-n_elements(rouge))] blue = [bleu, replicate(255, 256-n_elements(rouge))] ; ; bascule sur le z device, permettant de creer l''image sans ; l''afficher thisOS = !VERSION.OS_FAMILY thisOS = STRMID(thisOS, 0, 3) thisOS = STRUPCASE(thisOS) set_plot, 'z' ; taille de l''image (en nombre de pixel: xsize = 30*(petitfeuille*key_portrait+grandfeuille*(1-key_portrait)) ysize = 30*(petitfeuille*(1-key_portrait)+grandfeuille*key_portrait) device, set_resolution = [xsize, ysize] ; ; commencement du fichier gif. ecriture d''une image vide ; reinitplt plot, [0], [0], /nodata write_gif,iodir+nomfic,tvrd(),red, green, blue, /multiple ; ; ;---------------------------------------------------------------- ; debut de la partie a changer ;---------------------------------------------------------------- ; ; boucle de creation de l''image ; calen = calendriertotem() debut = where(calen EQ 19810105) debut = where(calen EQ 19790105) debut = debut[0] if debut EQ -1 then begin device, /close CASE thisOS of 'MAC': SET_PLOT, thisOS 'WIN': SET_PLOT, thisOS ELSE: SET_PLOT, 'X' ENDCASE stop endif for i = 0, 73*15-1 do begin ; for i = 0, 3*2-1 do begin ; for i = 0, 73*2-1 do begin if keyword_set(bavard) then print, 'Image numero : '+strtrim(i, 2) date = calen[debut+i] erase, 255 plt, nlec('sst', date, 'ATF'), 19, 29, int = .5, /noerase ; plt, nlec('sss', date, 'ATF'), label = 2, /noerase ; plt, nlec('htoth', date, 'RE3')-nlec('hpycn', date, 'RE3'), 10, 60, int = 5, /inv, /noerase ; domdef, 290,340,-5,15 ; plt, norme(nlec('unsurf', date, 'RE3'), nlec('vnsurf', date, 'RE3')), 0, 1.2, int = .1, /noerase ; ; Ecriture de l''image dans le fichier .gif ; write_gif,iodir+nomfic,tvrd(),red, green, blue, /multiple ENDFOR ;---------------------------------------------------------------- ; fin de la partie a changer ;---------------------------------------------------------------- ; ; fermeture du fichier write_gif,iodir+nomfic,/close ; rebascule en mode terminal X device, /close CASE thisOS of 'MAC': SET_PLOT, thisOS 'WIN': SET_PLOT, thisOS ELSE: SET_PLOT, 'X' ENDCASE return end