This file is indexed.

/usr/share/gnudatalanguage/astrolib/arcbar.pro is in gdl-astrolib 2018.02.16+dfsg-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
Pro arcbar, hdr, arclen, LABEL = label, SIZE = size, THICK = thick, DATA =data, $
            COLOR = color, POSITION = position, NORMAL = normal, $
            SECONDS=SECONDS, FONT=font
;+
; NAME:
;       ARCBAR
; PURPOSE:
;       Draw an arc bar on an image showing the astronomical plate scale
;
; CALLING SEQUENCE:
;       ARCBAR, hdr, arclen,[  COLOR= , /DATA, LABEL= , /NORMAL, POSITION=, 
;                              /SECONDS, SIZE=, THICK=, FONT= ]
;
; INPUTS:
;       hdr - image FITS header with astrometry, string array
; OPTIONAL INPUT:
;       arclen - numeric scalar giving length of bar in arcminutes (default)
;               or arcseconds (if /SECONDS is set).    Default is 1 arcminute 
;
; OPTIONAL KEYWORD INPUTS:
;       COLOR - name  or integer scalar specifying the color to draw the arcbar 
;               See cgColor for a list of available color names
;       /DATA - if set and non-zero, then the POSITION keyword and the arc 
;               length is given in data units
;       LABEL - string giving user defined label for bar.  Default label is size
;               of bar in arcminutes
;       /NORMAL - if this keyword is set and non-zero, then POSITION is given in
;               normalized units
;       POSITION - 2 element vector giving the (X,Y) position in device units 
;               (or normalized units if /NORMAL is set, or data units if /DATA
;               is set) at which to place the  scale bar.   If not supplied, 
;               then the user will be prompted to place the cursor at the 
;               desired position
;       /SECONDS - if set, then arlen is specified in arcseconds rather than
;               arcminutes
;       SIZE  - scalar specifying character size of label, default = 1.0
;       THICK -  Character thickness of the label, default = !P.THICK
;       FONT - scalar font graphics keyword (-1,0 or 1) for text
;
; EXAMPLE:
;       Suppose one has an image array, IM, and FITS header, HDR, with 
;       astrometry.    Display the image and place a 3' arc minute scale bar 
;       at position 300,200 of the current image window
;
;       IDL> cgimage, IM, /scale,/save   ;Use /SAVE to set data coordinates
;       IDL> arcbar, HDR, 3, pos = [300,200],/data
;
; RESTRICTIONS:
;       When using using a device with scalable pixels (e.g. postscript)
;       the data coordinate system must be established before calling ARCBAR.
;       If data coordinates are not set, then ARCBAR assumes that the displayed
;       image size is given by the NAXIS1 keyword in the FITS header.
; PROCEDURE CALLS:
;       AD2XY, EXTAST, GSSSADXY, SXPAR(), SETDEFAULTVALUE, cgPlot, cgText
; REVISON HISTORY:
;       written by L. Taylor (STX) from ARCBOX (Boothman)
;       modified for Version 2 IDL,                     B. Pfarr, STX, 4/91
;       New ASTROMETRY structures               W.Landsman,  HSTX, Jan 94
;       Recognize a GSSS header                 W. Landsman June 94
;       Added /NORMAL keyword                   W. Landsman Feb. 96
;       Use NAXIS1 for postscript if data coords not set,  W. Landsman Aug 96
;       Fixed typo for postscript W. Landsman   Oct. 96
;       Account for zeropoint offset in postscript  W. Landsman   Apr 97
;       Added /DATA, /SECONDS keywords   W. Landsman    July 1998
;       Use device-independent label offset  W. Landsman   August 2001
;       Allow font keyword to be passed.  T. Robishaw Apr. 2006
;       Remove obsolete TVCURSOR command  W. Landsman Jul 2007
;       Use Coyote Graphics W. Landsman  February 2011
;       Fix problem using data coordinates when not in postscript 
;                 W. Landsman January 2013
;-
;
 compile_opt idl2
 On_error,2                                  ;Return to caller

 if N_params() LT 1 then begin
      print, 'Syntax - ARCBAR, hdr,[ arclen, COLOR= '
      print, '         /DATA, LABEL=, /NORM, POS=, /SECONDS, SIZE=, THICK= ]'
      return
 endif

 extast, hdr, bastr, noparams   ;extract astrom params in deg.

 if N_params() LT 2 then arclen = 1      ;default size = 1 arcmin

 setdefaultvalue, size, 1.0
 setdefaultvalue, thick, !P.THICK
 setdefaultvalue, font, !P.FONT

 a = bastr.crval[0]
 d = bastr.crval[1]
 if keyword_set(seconds) then factor = 3600.0d else factor = 60.0
 d1 = d + (1/factor)             ;compute x,y of crval + 1 arcmin

 proj = strmid(bastr.ctype[0],5,3)
  
 case proj of 
        'GSS': gsssadxy, bastr, [a,a], [d,d1], x, y
        else:  ad2xy, [a,a], [d,d1], bastr, x, y 
 endcase

 dmin = sqrt( (x[1]-x[0])^2 + (y[1]-y[0])^2 ) ;det. size in pixels of 1 arcmin

 if ((!D.FLAGS AND 1) EQ 1) || keyword_set(data) then begin          ;Device have scalable pixels?
        if !X.s[1] NE 0 then begin
                dmin = convert_coord( dmin, 0, /DATA, /TO_DEVICE) - $ 
                       convert_coord(    0, 0, /DATA, /TO_DEVICE)  ;Fixed Apr 97
                dmin = dmin[0]
        endif else dmin = dmin/sxpar(hdr, 'NAXIS1' )     ;Fixed Oct. 96
 endif 

 dmini2 = round(dmin * arclen)

 if ~keyword_set( POSITION) then begin
          print,'Position the cursor where you want the bar to begin'
          print,'Hit right mouse button when ready'
          cursor,xi,yi,1,/device
 endif else begin 
        if keyword_set(NORMAL) then begin
                posn = convert_coord(position,/NORMAL, /TO_DEVICE) 
                xi = posn[0] & yi = posn[1]
        endif else if keyword_set(DATA) then begin
                posn = convert_coord(position,/DATA, /TO_DEVICE) 
                xi = posn[0] & yi = posn[1]
        endif else begin
                xi = position[0]   & yi = position[1]
        endelse         
 endelse

 xf = xi + dmini2
 dmini3 = dmini2/10             ;Height of vertical end bars = total length/10.

 cgPlots,[xi,xf],[yi,yi], COLOR=color, /DEV, THICK=thick
 cgPlots,[xf,xf],[ yi+dmini3, yi-dmini3 ], COLOR=color, /DEV, THICK=thick
 cgPlots,[xi,xi],[ yi+dmini3, yi-dmini3 ], COLOR=color, /DEV, THICK=thick

 if ~keyword_set(Seconds) then begin
 if (!D.NAME EQ 'PS') && (FONT EQ 0) then $        ;Postscript Font?
        arcsym='!9'+string(162B)+'!X' else arcsym = "'" 
 endif else begin
 if (!D.NAME EQ 'PS') && (FONT EQ 0) then $        ;Postscript Font?
        arcsym = '!9'+string(178B)+'!X' else arcsym = "''" 
 endelse
 if ~keyword_set( LABEL) then begin
     if (arclen LT 1) then arcstr = string(arclen,format='(f4.2)') $
        else arcstr = string(arclen)
     label = strtrim(arcstr,2) + arcsym 
 endif

 yoffset = round(!D.Y_CH_SIZE/2.)
 cgTEXT,(xi+xf)/2, yi+yoffset, label, SIZE = size,COLOR=color,/DEV,  $
       alignment=0.5, CHARTHICK=thick, FONT=font

 return
 end