home *** CD-ROM | disk | FTP | other *** search
- /*
- SG C Tools 1.1
-
- (C) 1993 Steve Goldsmith
- All Rights Reserved
-
- Compiled with HI-TECH C 3.09 (CP/M-80).
- */
-
- #include <string.h>
- #include <hitech.h>
- #include <vdc.h>
-
- uchar vdcWinChars[] = {32,32,244,231,204,239,250};
- uchar vdcShadow = vdcAltChrSet+vdcDarkGray;
-
- extern uchar vdcScrHorz;
- extern ushort vdcDispMem;
- extern ushort vdcAttrMem;
-
- /* clear window given x1, y1, x2, y2 rectangle in current page */
-
- void clrwinvdc(uchar X1, uchar Y1, uchar X2, uchar Y2, uchar Ch)
- {
- uchar XLen;
- ushort DispOfs;
-
- DispOfs = Y1*vdcScrHorz+vdcDispMem+X1;
- XLen = X2-X1+1;
- for(; Y1 <= Y2; Y1++)
- {
- fillmemvdc(DispOfs,XLen,Ch);
- DispOfs += vdcScrHorz;
- }
- }
-
- /* clear attr window given x1, y1, x2, y2 rectangle in current page */
-
- void clrwinattrvdc(uchar X1, uchar Y1, uchar X2, uchar Y2, uchar Ch)
- {
- uchar XLen;
- ushort AttrOfs;
-
- AttrOfs = Y1*vdcScrHorz+vdcAttrMem+X1;
- XLen = X2-X1+1;
- for(; Y1 <= Y2; Y1++)
- {
- fillmemvdc(AttrOfs,XLen,Ch);
- AttrOfs += vdcScrHorz;
- }
- }
-
- /* draw window given x1, y1, x2, y2 rectangle in current page */
-
- void winvdc(uchar X1, uchar Y1, uchar X2, uchar Y2, uchar Attr, char *Title)
- {
- char ChSave;
- uchar Y, InsideLen, TitleLen;
-
- InsideLen = X2-X1-1;
- clrwinvdc(X1,Y1,X2,Y2,vdcWinChars[0]);
- clrwinattrvdc(X1,Y1,X2,Y2,Attr);
- filldspvdc(X1,Y1,InsideLen+2,vdcWinChars[1]);
- if (Title != "")
- {
- TitleLen = strlen(Title);
- if (TitleLen > InsideLen)
- {
- ChSave = Title[InsideLen];
- Title[InsideLen] = 0;
- printstrvdc(X1+1,Y1,Attr,Title);
- Title[InsideLen] = ChSave;
- }
- else
- printstrvdc(((InsideLen-TitleLen) >> 1)+X1+1,Y1,Attr,Title);
- }
- fillattrvdc(X1,Y1,InsideLen+2,Attr | vdcRvsVid);
- filldspvdc(X1,Y2,1,vdcWinChars[4]);
- filldspvdc(X1+1,Y2,InsideLen,vdcWinChars[5]);
- filldspvdc(X2,Y2,1,vdcWinChars[6]);
- fillattrvdc(X1+1,Y2+1,InsideLen+2,vdcShadow);
- fillattrvdc(X2+1,Y2,1,vdcShadow);
- for(Y1++, Y2--, Y = Y1; Y <= Y2; Y++)
- {
- filldspvdc(X1,Y,1,vdcWinChars[2]);
- filldspvdc(X2,Y,1,vdcWinChars[3]);
- fillattrvdc(X2+1,Y,1,vdcShadow);
- }
- }
-