*
*  Script to plot a colorbar
*
function colorbar (args)
*

if (args="")
name   = dum.stack
xoffset = 0
yoffset = 0
else
xoffset = subwrd(args,1)
yoffset = subwrd(args,2)
loc     = subwrd(args,3)
endif
if (yoffset = "")
yoffset = 0
endif


*  Check shading information
*
  'query shades'
  shdinfo = result
  if (subwrd(shdinfo,1)='None') 
    say 'Cannot plot color bar: No shading information'
    return
  endif
* 
*  Get plot size info
*
  'query gxinfo'
  rec2 = sublin(result,2)
  rec3 = sublin(result,3)
  rec4 = sublin(result,4)
  xsiz = subwrd(rec2,4)
  ysiz = subwrd(rec2,6)
  ylo = subwrd(rec4,4)
  xhi = subwrd(rec3,6)
  xd = xsiz - xhi
*
*  Decide if horizontal or vertical color bar
*  and set up constants.
* say  'xsiz = 'xsiz
* say  'ysiz = 'ysiz
* say  'xhi  = 'xhi 
* say  'ylo  = 'ylo 
* say  'xd   = 'xd
*
  if (ylo<0.6 & xd<1.0) 
    say "Not enough room in plot for a colorbar"
    return
  endif

  cnum = subwrd(shdinfo,5)

  if ( ylo<0.6 | xd>1.5 | loc='v' )

********************************
****    Vertical Colorbar   ****
****  offset shifts up/down ****
********************************

    xl = xhi + xd/2 - 1.3 + xoffset
    xr = xl + 0.2
    xwid = 0.2
    ywid = 0.5
    if (ywid*cnum > ysiz*0.8) 
      ywid = ysiz*0.8/cnum
    endif
    ymid = ysiz/2
    yb = ymid - ywid*cnum/2 + yoffset
    'set string 1 l 5'
    vert = 1
  else

************************************
****     Horizontal Colorbar    ****
****  offset shifts left/right  ****
************************************

    ymid = ylo/2 - 0.05
    yt = ymid + 0.12 + yoffset
    yb = ymid - 0.12 + yoffset
    xmid = xsiz/2
    xwid = 0.8
    if (xwid*cnum > xsiz*0.8)
      xwid = xsiz*0.8/cnum
    endif
    xl = xmid - xwid*cnum/2 + xoffset
    'set string 1 tc 5'
    vert = 0
  endif
*
*  Plot colorbar
*
* 'set strsiz 0.12 0.13'
  'set strsiz 0.10 0.10'
  num = 0
  while (num<cnum) 
    rec = sublin(shdinfo,num+2)
    col = subwrd(rec,1)
    hi  = subwrd(rec,3)

* Note:  Only Taking first five digits of range value  (LT)
    hi  = substr(hi,1,5)

    'set line 'col
    if (vert) 
      yt = yb + ywid
    else 
      xr = xl + xwid
    endif
*say 'draw recf 'xl' 'yb' 'xr' 'yt
     'draw recf 'xl' 'yb' 'xr' 'yt
    if (num<cnum-1)
      if (vert) 
        'draw string '%(xr+0.05)%' 'yt' 'hi
      else
        'draw string 'xr' '%(yb-0.05)%' 'hi
      endif
    endif
    num = num + 1
    if (vert); yb = yt;
    else; xl = xr; endif;
  endwhile
*
    'set string 1 tl 5'
