📄 hprint.pro
字号:
pro hprint, h, firstline;+; NAME:; HPRINT; PURPOSE:; Display a FITS header (or other string array) ; EXPLANATION:; On a GUI terminal, the string array is displayed using XDISPSTR. ; If printing at a non-GUI terminal, the string array is printed 1 line ; at a time, to make sure that each element of the string array is ; displayed on a separate line. ;; CALLING SEQUENCE:; HPRINT, h, [ firstline ];; INPUTS:; H - FITS header (or any other string array).;; OPTIONAL INPUT:; FIRSTLINE - scalar integer specifying the first line to begin ; displaying. The default is FIRSTLINE = 1, i.e. display ; all the lines. If Firstline is negative, then the first; line to be printed is counted backward from the last line.;; NOTES:; When displaying at the terminal, HPRINT has the following differences ; from the intrinsic PRINT procedure;; (1) Arrays are printed one line at a time to avoid a space between 80; character lines; (2) Lines are trimmed with STRTRIM before being printed to speed up ; display; (3) The /more option is used for output. ;; EXAMPLE:; Read the header from a FITS file named 'test.fits' and display it at the; terminal beginning with line 50;; IDL> h = headfits( 'test.fits') ;Read FITS header; IDL> hprint, h, 50 ;Display starting at line 50;; To print the last 25 lines of the header;; IDL> hprint, h, -25;; REVISION HISTORY:; Written W. Landsman July, 1990; Added test for user quit July, 1991; Added optional FIRSTLINE parameter November, 1992; Modified for when STDOUT is not a TTY W. Landsman September 1995; Converted to IDL V5.0 W. Landsman September 1997; Fixed printing in IDLDE, C. Gehman August, 1998; Skip PRINTF if IDL in demo mode W. Landsman October 2004; Fixed bug on non-terminals, William Thompson, 18-Oct-2004; Assume since V5.4 Use BREAK instead of GOTO W. Landsman Apr 2006; Call XDISPSTR on a GUI terminal W. Landsman Jun 2006;- On_error,2 ;Return to Caller compile_opt idl2 if N_params() EQ 0 then begin print,'Syntax - HPRINT, h, [ firstline ]' return endif n = N_elements(h) if ( n EQ 0 ) then $ ;Make sure input array is defined message,'String array (first parameter) not defined' if N_elements( firstline ) EQ 0 then firstline = 1 if ( firstline[0] LT 0 ) then firstline = ( n + firstline[0]) > 1 < n $ else firstline = firstline[0] > 1 < n stdout = fstat(-1) if stdout.isagui then begin xdispstr,h,tit='HPRINT',top_line=firstline-1 return endif if lmgr(/demo) then begin ;in demo mode? for i=firstline-1, n-1 do print,h[i] return endif; Now print the array one line at a time if (stdout.isatty) then begin ;Open with /MORE if a TTY openw, outunit, filepath(/TERMINAL), /MORE, /GET_LUN for i = firstline-1, n-1 do begin printf, outunit, strtrim( h[i] ) if !ERR EQ 1 then BREAK ;User entered "Q" in response to /more endfor free_lun, outunit endif else printf,-1,strtrim(h[firstline-1:*]), FORMAT='(A)' return end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -