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 | case labstyle of |
---|
47 | 0: begin |
---|
48 | ;serie: deux lignes continues fines, une ligne continue grasse |
---|
49 | thick=[1,1,2] |
---|
50 | linestyle=[0] |
---|
51 | return |
---|
52 | end |
---|
53 | 1: begin |
---|
54 | ;serie: avant le mileu des levels: tiret fin. apres trait continu fin. |
---|
55 | ; si le mileu est dessine il est en trait continu gras |
---|
56 | impair=n_elements(level_z2d)-2*fix(n_elements(level_z2d)/2) |
---|
57 | a=replicate(0,fix(n_elements(level_z2d)/2)) |
---|
58 | b=replicate(1,fix(n_elements(level_z2d)/2)) |
---|
59 | c=replicate(2,fix(n_elements(level_z2d)/2)) |
---|
60 | if impair then begin |
---|
61 | thick=[b,2,b] |
---|
62 | linestyle=[c,0,a] |
---|
63 | endif else begin |
---|
64 | thick=[0] |
---|
65 | linestyle=[c,a] |
---|
66 | endelse |
---|
67 | return |
---|
68 | end |
---|
69 | 2: begin |
---|
70 | ;serie: avant le seuil (definit en repondant a une question): tiret fin. |
---|
71 | ; apres trait continu fin. si le seuil est dessine il est en trait continu gras |
---|
72 | seuil=xquestion('Quelle est la limite tirets/trait continu? ','0') |
---|
73 | seuil = float(seuil) |
---|
74 | rien=where(level_z2d lt seuil,n) |
---|
75 | a=replicate(0,n_elements(level_z2d)-n) |
---|
76 | c=replicate(2,n) |
---|
77 | if seuil eq level_z2d(n) then begin |
---|
78 | thick=[replicate(1,n),2,replicate(1,n_elements(level_z2d)-1-n)] |
---|
79 | linestyle=[c,a] |
---|
80 | endif else begin |
---|
81 | thick=[0] |
---|
82 | linestyle=[c,a] |
---|
83 | endelse |
---|
84 | return |
---|
85 | end |
---|
86 | 3: begin |
---|
87 | n = n_elements(level_z2d) |
---|
88 | seuil = level_z2d(1+n/2) |
---|
89 | |
---|
90 | thick = intarr(n) |
---|
91 | thick(indgen((n)/4)*4) = 1 |
---|
92 | thick(indgen((n)/4)*4+1) = 1 |
---|
93 | thick(indgen((n)/4)*4+2) = 2 |
---|
94 | thick(indgen((n)/4)*4+3) = 1 |
---|
95 | |
---|
96 | linestyle = intarr(n) |
---|
97 | linestyle(indgen((n)/4)*4) = 3 |
---|
98 | linestyle(indgen((n)/4)*4+1) = 0 |
---|
99 | linestyle(indgen((n)/4)*4+2) = 0 |
---|
100 | linestyle(indgen((n)/4)*4+3) = 0 |
---|
101 | |
---|
102 | labels = intarr(n) |
---|
103 | labels(indgen((n)/2)*2) = 1 |
---|
104 | labels(n/2) = 0 |
---|
105 | |
---|
106 | return |
---|
107 | end |
---|
108 | 4: begin |
---|
109 | ; trait continu gras pour 0 |
---|
110 | seuil = 1.e-6 |
---|
111 | thick=replicate(.1, n_elements(level_z2d)) |
---|
112 | linestyle=[0] |
---|
113 | rien=where(abs(level_z2d)/max(abs(level_z2d)) LT seuil) |
---|
114 | if rien[0] NE -1 then thick[rien[0]] = 2 |
---|
115 | end |
---|
116 | else: begin |
---|
117 | ras = report('Le numero de labstyle demande n''existe pas') |
---|
118 | stop |
---|
119 | end |
---|
120 | endcase |
---|
121 | return |
---|
122 | end |
---|