1 | ;------------------------------------------------------------ |
---|
2 | ;------------------------------------------------------------ |
---|
3 | ;------------------------------------------------------------ |
---|
4 | ;+ |
---|
5 | ; NAME:style |
---|
6 | ; |
---|
7 | ; PURPOSE:choisit la facon de tracer les isolignes |
---|
8 | ; |
---|
9 | ; CATEGORY:graphique |
---|
10 | ; |
---|
11 | ; CALLING SEQUENCE:style,labstyle,level_z2d,linestyle,thick |
---|
12 | ; |
---|
13 | ; INPUTS:labstyle: nombre auquel se refaire le styel de trace choisit |
---|
14 | ; level_z2d:vecteur contenant les valeures des isolignes a tracer |
---|
15 | ; |
---|
16 | ; KEYWORD PARAMETERS: |
---|
17 | ; |
---|
18 | ; OUTPUTS: |
---|
19 | ; linestyle:vecteur utilise pour definir le style des |
---|
20 | ; isocontours |
---|
21 | ; rq: pour memoire: |
---|
22 | ; Index Linestyle |
---|
23 | ; 0 Solid |
---|
24 | ; 1 Dotted |
---|
25 | ; 2 Dashed |
---|
26 | ; 3 Dash Dot |
---|
27 | ; 4 Dash Dot Dot Dot |
---|
28 | ; 5 Long Dashes |
---|
29 | ; thick:vecteur definissant l'epaisseur de l'isoligne |
---|
30 | ; |
---|
31 | ; COMMON BLOCKS: |
---|
32 | ; |
---|
33 | ; SIDE EFFECTS: |
---|
34 | ; |
---|
35 | ; RESTRICTIONS: |
---|
36 | ; |
---|
37 | ; EXAMPLE: |
---|
38 | ; |
---|
39 | ; MODIFICATION HISTORY: Sebastien Masson (smasson@lodyc.jussieu.fr) |
---|
40 | ; |
---|
41 | ;- |
---|
42 | ;------------------------------------------------------------ |
---|
43 | ;------------------------------------------------------------ |
---|
44 | ;------------------------------------------------------------ |
---|
45 | pro style,labstyle,level_z2d,linestyle,thick |
---|
46 | ; |
---|
47 | compile_opt idl2, strictarrsubs |
---|
48 | ; |
---|
49 | case labstyle of |
---|
50 | 0: begin |
---|
51 | ;serie: deux lignes continues fines, une ligne continue grasse |
---|
52 | thick=[1,1,2] |
---|
53 | linestyle=[0] |
---|
54 | return |
---|
55 | end |
---|
56 | 1: begin |
---|
57 | ;serie: avant le mileu des levels: tiret fin. apres trait continu fin. |
---|
58 | ; si le mileu est dessine il est en trait continu gras |
---|
59 | impair=n_elements(level_z2d)-2*fix(n_elements(level_z2d)/2) |
---|
60 | a=replicate(0,fix(n_elements(level_z2d)/2)) |
---|
61 | b=replicate(1,fix(n_elements(level_z2d)/2)) |
---|
62 | c=replicate(2,fix(n_elements(level_z2d)/2)) |
---|
63 | if impair then begin |
---|
64 | thick=[b,2,b] |
---|
65 | linestyle=[c,0,a] |
---|
66 | endif else begin |
---|
67 | thick=[0] |
---|
68 | linestyle=[c,a] |
---|
69 | endelse |
---|
70 | return |
---|
71 | end |
---|
72 | 2: begin |
---|
73 | ;serie: avant le seuil (definit en repondant a une question): tiret fin. |
---|
74 | ; apres trait continu fin. si le seuil est dessine il est en trait continu gras |
---|
75 | seuil=xquestion('Quelle est la limite tirets/trait continu? ','0') |
---|
76 | seuil = float(seuil) |
---|
77 | rien=where(level_z2d lt seuil,n) |
---|
78 | a=replicate(0,n_elements(level_z2d)-n) |
---|
79 | c=replicate(2,n) |
---|
80 | if seuil eq level_z2d[n] then begin |
---|
81 | thick=[replicate(1,n),2,replicate(1,n_elements(level_z2d)-1-n)] |
---|
82 | linestyle=[c,a] |
---|
83 | endif else begin |
---|
84 | thick=[0] |
---|
85 | linestyle=[c,a] |
---|
86 | endelse |
---|
87 | return |
---|
88 | end |
---|
89 | 3: begin |
---|
90 | n = n_elements(level_z2d) |
---|
91 | seuil = level_z2d[1+n/2] |
---|
92 | |
---|
93 | thick = intarr(n) |
---|
94 | thick[indgen(n/4)*4] = 1 |
---|
95 | thick[indgen(n/4)*4+1] = 1 |
---|
96 | thick[indgen(n/4)*4+2] = 2 |
---|
97 | thick[indgen(n/4)*4+3] = 1 |
---|
98 | |
---|
99 | linestyle = intarr(n) |
---|
100 | linestyle[indgen(n/4)*4] = 3 |
---|
101 | linestyle[indgen(n/4)*4+1] = 0 |
---|
102 | linestyle[indgen(n/4)*4+2] = 0 |
---|
103 | linestyle[indgen(n/4)*4+3] = 0 |
---|
104 | |
---|
105 | labels = intarr(n) |
---|
106 | labels[indgen(n/2)*2] = 1 |
---|
107 | labels[n/2] = 0 |
---|
108 | |
---|
109 | return |
---|
110 | end |
---|
111 | 4: begin |
---|
112 | ; trait continu gras pour 0 |
---|
113 | seuil = 1.e-6 |
---|
114 | thick=replicate(.5, n_elements(level_z2d)) |
---|
115 | linestyle=[0] |
---|
116 | rien=where(abs(level_z2d)/max(abs(level_z2d)) LT seuil) |
---|
117 | if rien[0] NE -1 then thick[rien[0]] = 3 |
---|
118 | end |
---|
119 | else: begin |
---|
120 | ras = report('Le numero de labstyle demande n''existe pas') |
---|
121 | stop |
---|
122 | end |
---|
123 | endcase |
---|
124 | return |
---|
125 | end |
---|