;+ ; NAME: ; MM_DIL_N ; 2-dim: BYTE, INT, LONG not in place ; Function value is returned ; 3-dim: only BYTE in place ; Parameter is modified, -1 is returned ; function mm_dil_n,a,n if n_params() eq 1 then n=1 sa=size(a) ; if sa(1+sa(0)) gt 3 then message,'Neither BYTE, INT nor LONG !' case sa(0) of 1:begin ke=replicate(1b,n) return,dilate(a,ke,/gr) end 2:begin if n ge 0 then begin ste=[[0,1,0],[1,1,1],[0,1,0]] qua=[[1,1,1],[1,1,1],[1,1,1]] endif else begin squa=[[1,1],[1,1]] if n eq -1 then kx=0 else kx=1 endelse b=a if n eq 0 then return,b case 1 of ; case sa(1+sa(0)) of 1:begin if n lt 0 then b=dilate(temporary(b),squa,kx,kx,/gray,/preserve) $ else for i=0,n-1 do $ if i and 1 then b=dilate(temporary(b),qua,/gray,/preserve) $ else b=dilate(temporary(b),ste,/gray,/preserve) return,b end else:begin for i=0,n-1 do $ if i and 1 then b=dilate_32(temporary(b),qua) $ else b=dilate_32(temporary(b),ste) return,b end endcase end 3:begin ; if sa(1+sa(0)) ne 1 then message,'Not BYTE for 3-dim !' if n gt 0 then begin ste=[[[0,0,0],[0,1,0],[0,0,0]], $ [[0,1,0],[1,1,1],[0,1,0]], $ [[0,0,0],[0,1,0],[0,0,0]]] qua=[[[1,1,1],[1,1,1],[1,1,1]], $ [[1,1,1],[1,1,1],[1,1,1]], $ [[1,1,1],[1,1,1],[1,1,1]]] endif else begin squa=[[[1,1],[1,1]],[[1,1],[1,1]]] if n eq -1 then kx=0 else kx=1 endelse if n eq 0 then return,-1l if n lt 0 then begin a=dilate(temporary(a),squa,kx,kx,kx,/gray,/preserve) ; if kx eq 1 then a=shift(temporary(a),0,0,1) endif else for i=0,n-1 do $ if i and 1 then a=dilate(temporary(a),qua,/gray,/preserve) $ else a=dilate(temporary(a),ste,/gray,/preserve) return,-1l end else: message,'Dimension not implemented !' endcase end ;-