source: trunk/STRING/lenstr.pro @ 2

Last change on this file since 2 was 2, checked in by opalod, 22 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 2.2 KB
Line 
1function lenstr,str
2;+
3; ROUTINE:         lenstr
4; USEAGE:          result=lenstr(str)
5;
6; input:
7;  str             a single string or string array.
8;
9; output:
10;  result          length of the string(s) in normalized units
11;                  the number of elements of RESULT matches the number of
12;                  elements of STRING.
13;
14; procedure:
15;                  This function returns the physical length of the
16;                  string on the output device, not the number of
17;                  characters.  This is done by first switching to 'X'
18;                  and writing the string(s) with XYOUTS in graphics
19;                  mode 5, which disables display to the screen but
20;                  does not interfere with operation of XYOUTS.  The
21;                  WIDTH keyword parameter of XYOUTS is used to
22;                  retrieve the physical length of the string(s).
23;
24;  author:  Paul Ricchiazzi                            7apr93
25;           Institute for Computational Earth System Science
26;           University of California, Santa Barbara
27;-
28
29   dsave=!d.name
30
31   thisOS = !VERSION.OS_FAMILY
32   thisOS = STRMID(thisOS, 0, 3)
33   thisOS = STRUPCASE(thisOS)
34   CASE thisOS of
35      'MAC': SET_PLOT, thisOS
36      'WIN': SET_PLOT, thisOS
37      ELSE: SET_PLOT, 'X'
38   ENDCASE
39   !p.BACKGROUND=(!d.n_colors-1) < 255
40   !p.color=0
41   if !d.n_colors gt 256 then !p.background='ffffff'x
42
43   device,get_graphics=oldg,set_graphics=5
44   if keyword_set(charsize) eq 0 then charsize=1
45   nn=n_elements(str)
46
47   case nn of
48
49      0:w=0
50
51      1:xyouts,0,0,/device,str,width=w
52
53      else:begin
54         w=fltarr(nn)
55         for i=0,nn-1 do begin
56            xyouts,0,0,/device,str(i),width=ww
57            w(i)=ww
58         endfor
59      end
60   endcase
61
62   fac1=float(!d.x_ch_size)/!d.x_vsize ; ratio of char width to device1 width
63
64   device,set_graphics=oldg
65   set_plot,dsave
66   IF dsave EQ 'X' OR dsave EQ 'MAC' OR dsave EQ 'WIN' then BEGIN
67      !p.BACKGROUND=(!d.n_colors-1) < 255
68      !p.color=0
69      if !d.n_colors gt 256 then !p.background='ffffff'x
70   ENDIF
71
72   fac2=float(!d.x_ch_size)/!d.x_vsize ; ratio of char width to device2 width
73
74   return,w*fac2/fac1           ; string width adjusted for device width
75end
76
Note: See TracBrowser for help on using the repository browser.