;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ ;+ ; NAME:style ; ; PURPOSE:choisit la facon de tracer les isolignes ; ; CATEGORY:graphique ; ; CALLING SEQUENCE:style,labstyle,level_z2d,linestyle,thick ; ; INPUTS:labstyle: nombre auquel se refaire le styel de trace choisit ; level_z2d:vecteur contenant les valeures des isolignes a tracer ; ; KEYWORD PARAMETERS: ; ; OUTPUTS: ; linestyle:vecteur utilise pour definir le style des ; isocontours ; rq: pour memoire: ; Index Linestyle ; 0 Solid ; 1 Dotted ; 2 Dashed ; 3 Dash Dot ; 4 Dash Dot Dot Dot ; 5 Long Dashes ; thick:vecteur definissant l'epaisseur de l'isoligne ; ; COMMON BLOCKS: ; ; SIDE EFFECTS: ; ; RESTRICTIONS: ; ; EXAMPLE: ; ; MODIFICATION HISTORY: Sebastien Masson (smasson@lodyc.jussieu.fr) ; ;- ;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ pro style,labstyle,level_z2d,linestyle,thick ; compile_opt idl2, strictarrsubs ; case labstyle of 0: begin ;serie: deux lignes continues fines, une ligne continue grasse thick=[1,1,2] linestyle=[0] return end 1: begin ;serie: avant le mileu des levels: tiret fin. apres trait continu fin. ; si le mileu est dessine il est en trait continu gras impair=n_elements(level_z2d)-2*fix(n_elements(level_z2d)/2) a=replicate(0,fix(n_elements(level_z2d)/2)) b=replicate(1,fix(n_elements(level_z2d)/2)) c=replicate(2,fix(n_elements(level_z2d)/2)) if impair then begin thick=[b,2,b] linestyle=[c,0,a] endif else begin thick=[0] linestyle=[c,a] endelse return end 2: begin ;serie: avant le seuil (definit en repondant a une question): tiret fin. ; apres trait continu fin. si le seuil est dessine il est en trait continu gras seuil=xquestion('Quelle est la limite tirets/trait continu? ','0') seuil = float(seuil) rien=where(level_z2d lt seuil,n) a=replicate(0,n_elements(level_z2d)-n) c=replicate(2,n) if seuil eq level_z2d[n] then begin thick=[replicate(1,n),2,replicate(1,n_elements(level_z2d)-1-n)] linestyle=[c,a] endif else begin thick=[0] linestyle=[c,a] endelse return end 3: begin n = n_elements(level_z2d) seuil = level_z2d[1+n/2] thick = intarr(n) thick[indgen(n/4)*4] = 1 thick[indgen(n/4)*4+1] = 1 thick[indgen(n/4)*4+2] = 2 thick[indgen(n/4)*4+3] = 1 linestyle = intarr(n) linestyle[indgen(n/4)*4] = 3 linestyle[indgen(n/4)*4+1] = 0 linestyle[indgen(n/4)*4+2] = 0 linestyle[indgen(n/4)*4+3] = 0 labels = intarr(n) labels[indgen(n/2)*2] = 1 labels[n/2] = 0 return end 4: begin ; trait continu gras pour 0 seuil = 1.e-6 thick=replicate(.5, n_elements(level_z2d)) linestyle=[0] rien=where(abs(level_z2d)/max(abs(level_z2d)) LT seuil) if rien[0] NE -1 then thick[rien[0]] = 3 end else: begin ras = report('Le numero de labstyle demande n''existe pas') stop end endcase return end