source: trunk/procs/def_work.pro @ 15

Last change on this file since 15 was 15, checked in by kolasinski, 16 years ago

Add some debug_w in def_work - Add the possibility to convert ps files to pdf format - save_ps = 2 in plt_def

File size: 9.7 KB
Line 
1;
2; procedure def_work
3;
4; called by post_it
5; reads each command line
6; calls plt_map for each plot/window/overlay
7;
8; 11-6-99 EG
9;
10PRO def_work, data_base_list, out_ps, cmdline, out_all, other_file, spec_base_list
11
12@common
13@com_eg
14
15   IF debug_w THEN print, ' '
16   IF debug_w THEN print, '  ENTER def_work...'
17
18; Data bases
19   data_bases = data_base_list
20   spec_bases = spec_base_list
21
22;
23; Graphic init
24; set plot graphic defaults
25   resolve_routine,  'plt_def'
26   plt_def
27
28; other inits
29   fld_flag = 1
30;
31; other input file ?
32;
33IF other_file NE '-' THEN BEGIN
34
35   resolve_routine,  other_file
36   res = execute(other_file)
37
38   cmdline = cmdline2
39
40ENDIF
41
42cmdline_main = cmdline
43
44;
45; Field init
46;
47   fld_prev = '-'
48   movie_count = 0
49
50; Open history file
51;
52   get_lun, nulhis
53   openw, nulhis, '.hist_post_it'
54;
55;
56; Interpret command lines
57;
58   nlines = n_elements(cmdline)
59   iline = 0
60   iplot = 0
61
62   WHILE iline LE nlines-2 DO BEGIN
63
64      cmd = decode_cmd(cmdline, iline)
65
66      IF out_all NE '-'  THEN cmd.out = out_all
67
68      IF cmd.on EQ 1 THEN BEGIN
69         IF debug_w THEN print, '    iline = ', iline
70         iplot = iplot + 1
71         print, ' '
72         print, ' -------------'
73         print, ' Plot No.', iplot, format = '(A10,I2)'
74         print, ' -------------'
75         print, ' '
76         printf, nulhis, ' '
77         printf, nulhis, ' -------------'
78         printf, nulhis, ' Plot No.', iplot, format = '(A10,I2)'
79         printf, nulhis, ' -------------'
80         printf, nulhis, ' '
81
82       
83         ; format of output
84
85         posP = rstrpos(cmd.disp, 'P')
86         posL = rstrpos(cmd.disp, 'L')
87         len = strlen(cmd.disp)
88         IF posP GE 0 THEN BEGIN
89            landscape = 0
90            key_portrait = 1
91         ENDIF ELSE BEGIN
92            landscape = 1
93            key_portrait = 0
94         ENDELSE
95
96         IF strmid(cmd.out, 0, 2) EQ 'ps' THEN BEGIN
97            reinitplt, /z,/invert
98            fileps = 'idl_out_p'+strtrim(string(iplot), 2)+'.ps'
99            openps, out_ps+fileps
100            set_ps_devices
101         ENDIF ELSE BEGIN
102            set_plot,dev_type
103            set_x_devices
104         ENDELSE
105
106         ; windows management : decode cmd.disp = n[xm][or]
107
108         display = cmd.disp
109         IF posP GT 0 OR posL GT 0 THEN display = strmid(cmd.disp, 0, len-1)
110         posx = rstrpos(display, 'x')
111         IF posx GT 0 THEN BEGIN
112            nwin = long(strmid(display, 0, posx))
113            mwin = long(strmid(display, posx+1, len-posx+1))
114         ENDIF ELSE BEGIN
115            IF posP GT 0 THEN BEGIN
116               nwin = 1
117               mwin = long(display)
118            ENDIF ELSE BEGIN
119               nwin = long(display)
120               mwin = 1
121            ENDELSE
122         ENDELSE
123         nwin_tot = nwin*mwin
124
125         ; plot inits
126
127         idx_pal = 0
128         iwin = 1
129         nb_lines = 0
130
131         ; make loop on number of windows
132         WHILE iwin LE nwin*mwin DO BEGIN
133
134            index_over = 0
135
136            win = [nwin, mwin, iwin]
137
138            idx = iline + nb_lines
139
140            cmdi = decode_cmd(cmdline, idx)
141            cmdm = cmdi
142
143            ; specific formatting for legend
144            leg_format = ''
145            IF strpos(cmdi.proj, '[') NE -1 THEN BEGIN
146               leg_format = extract_str(cmdi.proj, '[', ']')
147               cmdi.proj = strmid(cmdi.proj, 0, strpos(cmdi.proj, '['))
148            ENDIF ELSE leg_format = default_txt_format
149            ; decode proj for number of overlays in window (min=1)
150            overl = strpos(cmdi.proj, 'o')
151            IF overl GE 0 THEN BEGIN
152               nover = 1+max([1, long(strmid(cmdi.proj, overl+1, strlen(cmdi.proj)-overl-1))])
153            ENDIF ELSE BEGIN
154               nover = 1
155            ENDELSE
156
157            ; make loop on number of overlays
158            iover = 1
159            WHILE iover LE nover DO BEGIN
160
161               idx = iline + nb_lines + iover - 1
162               cmdo = decode_cmd(cmdline, idx)
163               idx_main=idx
164;                print, ' plot,window,overlay   = ', iplot, iwin, iover
165;                print, '     max win, max over = ', nwin, nover
166;                print, ' index = ', idx
167
168               CASE cmdo.exp OF
169                  'CT': BEGIN
170                     data_domain = 'global'
171                     print, 'WARNING set data_domain = global in def_work'
172                  END
173                  'GloSea40':BEGIN
174                     data_domain = 'glosea'
175                     print, 'WARNING set data_domain = glosea in def_work'
176                  END
177                  ELSE:
178               ENDCASE
179               ; make overlay
180
181               plt_map, cmdo, iplot, win, iover, landscape
182
183               ; end of loop on overlays
184               iover = iover+1
185            ENDWHILE
186            nb_lines =  nb_lines + nover
187
188         ; special case y=f(next) on 2 lines
189
190            IF strpos(cmdi.var, '=f(next)') GT -1 THEN nb_lines =  nb_lines + 1
191           
192         ; end of loop on windows
193            iwin = iwin + 1
194         ENDWHILE
195
196
197         ; close ps
198
199         IF strmid(cmd.out, 0, 2) EQ 'ps' THEN BEGIN
200            iodir = out_ps
201            closeps
202            nfile_name = fileps
203            ; save to file
204            IF save_ps GE 1 THEN BEGIN
205               ; open last name file
206               IF strmid(cmd.out, 0, 3) ne 'psm' OR  movie_count EQ 0 THEN BEGIN
207                  get_lun, nullst
208                  openr, nullst, '.last_name_post'
209                  dir_name = ' '
210                  file_name = ' '
211                  readf, nullst, dir_name
212                  readf, nullst, file_name
213                  close, nullst
214                  free_lun, nullst
215                  print, ' Save PostScript '+strtrim(string(iplot), 2)+' file to ( - to ignore / save_ps=0 to turn off - NO EXTENSIONS PLEASE) :'
216                  print, '  directory is (d to change) : '+dir_name
217                  nfile_name = xquestion('       ', file_name, /chkwid)
218                  IF nfile_name NE '-' THEN BEGIN
219                     IF nfile_name EQ 'd' THEN BEGIN
220                        dir_name = xquestion(' New Directory ', dir_name, /chkwid)
221                        nfile_name = xquestion(' New file', file_name, /chkwid)
222                     ENDIF
223                     openw, nullst, '.last_name_post'
224                     printf, nullst, dir_name
225                     printf, nullst, nfile_name
226                     close, nullst
227                     free_lun, nullst
228                  ENDIF ELSE BEGIN
229                     print, '  Do not save - OK'
230                  ENDELSE
231                  IF strmid(cmd.out, 0, 3) eq 'psm' THEN BEGIN
232;              movie stuff (slide 1)
233                     print, '  movie series, will create file_<n> files'
234                     file_suffix = '_'+strtrim(string(movie_count+1), 2)
235                     movie_count = movie_count + 1
236                  ENDIF ELSE file_suffix = ''
237               ENDIF ELSE BEGIN 
238;              movie stuff (slides >1 )
239                  get_lun, nullst
240                  openr, nullst, '.last_name_post'
241                  dir_name = ' '
242                  file_name = ' '
243                  readf, nullst, dir_name
244                  readf, nullst, nfile_name
245                  close, nullst
246                  free_lun, nullst
247                  file_suffix = '_'+strtrim(string(movie_count+1), 2)
248                  movie_count = movie_count + 1
249                  print, '  saving file <base name>= '+nfile_name+file_suffix
250               ENDELSE
251               IF save_ps EQ 2 THEN BEGIN 
252                  ; PDF
253                  conv = 'ps2pdf '
254                  ;;IF landscape EQ 1 THEN BEGIN
255                  ;;   conv = conv+'-rotate -90 '
256                  ;;ENDIF
257                  print, '  converting to pdf...'
258                  ext = '.pdf'
259                 
260               ENDIF ELSE BEGIN
261                  conv = 'cp '
262                  ext = '.ps'
263               ENDELSE
264               IF strpos(cmd.out, 'gif') NE -1 THEN BEGIN
265                  conv = 'convert '
266                  IF landscape EQ 1 THEN BEGIN
267                     conv = conv+'-rotate -90 '
268                  ENDIF
269                  print, '  converting to gif... to make the movie use:'
270                  print, '     convert -delay 50 -loop 100 image_?.gif image_??.gif image_???.gif movie.gif'
271                  ext = '.gif'
272               ENDIF
273               line = conv+out_ps+'/'+fileps+' '+dir_name+'/'+nfile_name+file_suffix+ext
274               spawn, line, prtout
275
276            ENDIF 
277            IF strlen(cmd.out) EQ 3 AND strmid(cmd.out, 0, 3) NE 'psm' THEN BEGIN
278               CASE cmd.out OF
279                  'psb': BEGIN & mess = 'printer' & cmdf = prt_BW & END
280                  'psc': BEGIN & mess = 'color printer' & cmdf = prt_col & END
281                  'pst': BEGIN & mess = 'transp printer' & cmdf = prt_tra & END
282                  ELSE: BEGIN & mess = 'ghostview ' & cmdf = ghost & END
283               ENDCASE
284               print, ' '
285               print, '    Sending ', nfile_name+'_'+cmdf, ' to ', mess, ' (',cmdf, ' + option ',lp_opt, ')'
286               line = 'cd '+out_ps+'; \cp '+fileps+' '+fileps+'_'+cmdf+'; '+homedir+'bin/'+cmdf+' '+fileps+'_'+cmdf+' '+lp_opt+'; cd '+hom_idl
287               spawn, line, prtout
288               print, prtout
289
290            ENDIF ELSE BEGIN
291               mess = 'ps'
292            ENDELSE
293         ENDIF ELSE BEGIN
294
295          ; next plot/data
296
297            CASE cmd.out OF
298               'cdf':
299               ELSE: BEGIN
300                  ready = ''
301                  read,'<Return> for next plot ', ready
302               END
303            ENDCASE
304         ENDELSE
305
306      ENDIF ELSE  nb_lines = 1
307
308      ; end of loop on command lines
309      iline = iline + nb_lines
310
311   ENDWHILE
312
313   ; close history file
314
315   free_lun, nulhis
316   close, nulhis
317
318   IF debug_w THEN print, '  ...EXIT def_work'
319
320END
Note: See TracBrowser for help on using the repository browser.