;------------------------------------------------------------ pro anim_event,event ; ; Event handler for animation window: ; case event.action of "DONE": begin widget_control,event.top,/destroy return end else: print,'anim_event: Unknown action: ',event.action endcase return end ;------------------------------------------------------------ pro animatepng,files=filespec if (not keyword_set(filespec)) then begin filespec = '*.png' endif print,'filespec = ',filespec pngfiles = file_search(filespec) nfiles = n_elements(pngfiles) print,'Found ',nfiles,' png files.' if (nfiles le 0) then return ; ; Read first image to get and load r,g,b palette: print,'reading pngfile ',pngfiles(0) ; image = read_png(pngfiles(0),r,g,b) ; read_png,pngfiles(0),image,r,g,b read_png,pngfiles[0],image help,image ; tvlct,r,g,b ; ; Make the animation widget: ; animbase = widget_base(title='PNG Animation') print,'size(image)=',size(image) imsize = size(image) ; wanim_xsize=imsize[1] & wanim_ysize=imsize[2] wanim_xsize=imsize[2] & wanim_ysize=imsize[3] ; nfiles = 10 ; test first few frames animate = cw_animate(animbase,wanim_xsize,wanim_ysize,nfiles) widget_control,animbase,/realize ; ; Load the images: ; for i=0,nfiles-1 do begin print,'Loading file ',pngfiles(i) image = read_png(pngfiles(i)) cw_animate_load,animate,frame=i,image=image,/track endfor cw_animate_run,animate,nfiles xmanager,"PNG Animation",animbase,event_handler="anim_event" end