home *** CD-ROM | disk | FTP | other *** search
- {
- **************************************************************************
- HBARS.PAS -- Horizontal bar graph objects
- Copyright 1989 L. Brett Glass -- All rights reserved.
- **************************************************************************
- }
- unit HBars;
-
- interface
-
- uses CRT, CharScrn, StrUtil;
-
- const
- MAXHBARSIZE = SCREENWIDTH*2;
- type
- HBarSize = 0..MAXHBARSIZE;
-
- HBar = object (TitledCharObject)
- size : HBarSize;
- maxWidth : ColType;
- procedure Draw; virtual;
- {Draw a bar.}
- procedure DispTitle; virtual;
- end;
-
- implementation
-
- const
- halfHBarChar : Char = '▌';
- fullBarChar : Char = '█';
-
-
- {Public routines}
-
- procedure HBar.DispTitle;
- var
- tLen : Byte absolute title;
- p : ScreenParms;
- begin {HBar.DispTitle}
- p.Save;
- TextAttr := color;
- HighVideo;
- Ellipsis(title,maxWidth);
- CharsToScreen(x,y+2,tLen,title[1]);
- p.Restore;
- end; {HBar.DispTitle}
-
- procedure HBar.Draw;
- var
- pos : ColType;
- p : ScreenParms;
- begin {HBar.Draw}
- p.Save;
- TextAttr := color;
- LowVideo;
- pos := x;
- if size > (maxWidth * 2) then
- size := maxWidth * 2;
- if size > 1 then
- for pos := pos to x + (size div 2) do
- CharsToScreen(pos,y,1,fullBarChar);
- if Odd(size) then
- CharsToScreen(pos,y,1,halfHBarChar);
- if Length(title) <> 0 then
- Self.DispTitle;
- p.Restore;
- end; {HBar.Draw}
-
- end. {HBars}