;+ ; ; retoucher le mask (lui ajouter des terres) ; ; @categories ; ; @param TAB {in}{required} ; le tableau 2d de mask (compose de 1 sur la mer et de 0 ; sur la terre) ; ; @keyword TAILLEPOINT ; taille en pixel d''un point de la ; matrice lors de sa representation a l''ecran. ; ; @returns ; new mask ; ; @examples ; ; IDL> a=retouche(tmask[*,*,0], TAILLEPOINT =5) ; ; si on clique sur le bouton du milieu on remplit de terre le point ; sur lequel on a clique. ; avec des clicks sur le bouton de gauche, on remplit tout le ; rectangle dont la diagonale est definie par les 2 points ; selectionnes a la souris ; Pour sortir, on click sur le bouton de droite. ; ; @history ; Sebastien Masson (smasson\@lodyc.jussieu.fr) ; ; @version ; $Id$ ; ;- FUNCTION retouche, tab $ , TAILLEPOINT=taillepoint ; compile_opt idl2, strictarrsubs ; nouvmask=-1 taille = size(tab) if taille[0] NE 2 then GOTO, sortie nouvmask=byte(tab) if keyword_set(taillepoint) THEN taillepoint = long(taillepoint) $ ELSE taillepoint = long(2) window,xsize=taille[1]*taillepoint,ysize=taille[2]*taillepoint tvscl, congridseb(nouvmask, taille[1]*taillepoint, taille[2]*taillepoint) cursor,x1,y1,/device,/down ; print, !mouse.button while (!mouse.button ne 4) do begin print, !mouse.button case !mouse.button of 1:BEGIN cursor,x2,y2,/device,/down x = [x1, x2] x = x[sort(x)] x = round(x/taillepoint) y = [y1, y2] y = y[sort(y)] y = round(y/taillepoint) nouvmask[x[0]:x[1], y[0]:y[1] ] = 0 tvscl, replicate(0,(x[1]-x[0]+1)*taillepoint $ ,(y[1]-y[0]+1)*taillepoint) $ ,x[0]*taillepoint,y[0]*taillepoint end 2:BEGIN x1 = round(x1/taillepoint) y1 = round(y1/taillepoint) nouvmask[x1, y1] = 0 tvscl,replicate(0,taillepoint,taillepoint) $ ,x1*taillepoint,y1*taillepoint END endcase cursor,x1,y1,/device,/down endwhile ;!mouse.button=0 ;; point=bytarr(3,3)+110 ;while (!mouse.button ne 4) do begin ; cursor,x,y,/device ; if !mouse.button EQ 1 then begin ; endif ; i=floor(x*jpi) ; j=floor(y*jpj) ; indice=j*jpi+i ;; print,indice ; i2=where(tab eq indice) ; if (i2(0) eq -1) then res=[res,indice] ; if (i2(0) ne -1) then res(i2)=0 ; tv,point,i*3+1,j*3+1 ;endwhile sortie: return,nouvmask end