home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
progm
/
clock.zip
/
CLKPNT.C
< prev
next >
Wrap
Text File
|
1987-01-03
|
4KB
|
136 lines
/***************************************************** CLKPNT.C
* NAME: CLKPNT
*
* FUNCTION: Paints hands onto display
*
* EXAMPLE: CLKPNT();
*
* INPUTS: determined from global definitions
*
* OUTPUT: to screen.
*
**************************************************************
* 11/22/86 -RBM- original implementation
**************************************************************/
#define XTRNALGLOBALS 1 /* globals externally defined */
#include "E:CLKGBL.H" /* setup global storage */
/**************************************************************
* BEGIN ROUTINE
**************************************************************/
CLKPNT()
{
static int lacthr; /* last active hour hand */
static int lactmn; /* last active minute hand */
int i; /* temporary counter */
struct ACTIMAGE *imgptr; /* pointer to hand image structure */
char digtim[8]; /* digital time start column */
int dtrow,dtcol; /* digital time write row, column */
#define SCP 512 /* set cursor position video command */
/* --- draw second blanking image -------*/
imgptr=&acbsc[0]; /* sec. hand blanking */
drawit (imgptr,bkcol);
/* --- draw hour blanking image -------*/
if (lacthr != acthr)
{lacthr = acthr;
imgptr=&acbhr[0]; /* hour hand blanking */
drawit (imgptr,bkcol);
};
/* --- draw minute blanking image -------*/
if (lactmn != actmn)
{lactmn = actmn;
imgptr=&acbmn[0]; /* min. hand blanking */
drawit (imgptr,bkcol);
};
/* --- draw hour hand image -------*/
imgptr=&acdhr[0]; /* hr hand image */
drawit (imgptr,mncol);
/* --- draw minute hand image -------*/
imgptr=&acdmn[0]; /* min hand image */
drawit (imgptr,mncol);
/* --- draw second hand image -------*/
imgptr=&acdsc[0]; /* sec hand image */
drawit (imgptr,sccol);
/*--- draw digital time -----------------*/
if (digclock != 0)
{
dtrow = digrow; /* row to write at */
dtcol = digcol; /* column to start writing */
sreg.ax = SCP; /* "set cursor position" */
sreg.bx = 0; /* page # */
sreg.cx = 0; /* unused */
sreg.dx = dtrow*256 + dtcol; /* row, col */
csysint(VIDEO, &sreg, &rreg);
digtim[0] = '0' + (char)(lt24hr/10); /* compute hrs tens digits */
if (digtim[0]=='0') digtim[0]=' '; /* blank out hrs leading 0 */
digtim[1] = '0' + (char)(lt24hr%10); /* compute hrs units digits*/
digtim[2] = ':';
digtim[3] = '0' + (char)(lastmn/10); /* compute min tens digits */
digtim[4] = '0' + (char)(lastmn%10); /* compute min units digits*/
digtim[5] = ':';
digtim[6] = '0' + (char)(lastsc/10); /* compute sec tens digits */
digtim[7] = '0' + (char)(lastsc%10); /* compute sec units digits*/
for (i=0; i<=7; i++)
{sreg.ax = 2304 + digtim[i]; /* char write command */
sreg.bx = digclr; /* set color */
sreg.cx = 1; /* write 1 char */
sreg.dx = 0; /* unused */
csysint(VIDEO, &sreg, &rreg);
dtcol++; /* move cursor over */
sreg.ax = SCP;
sreg.bx = sreg.cx = 0;
sreg.dx = dtrow*256 + dtcol;
csysint(VIDEO, &sreg, &rreg);
};
};
} /***** end of routine ******/
/*--- subroutine to actually do the drawing ----------------------------*/
#define abs(x) ((x)<0?-(x):(x)) /* define absolute value function */
drawit (ptr,color)
struct ACTIMAGE *ptr; /* pointer to hand image structure */
int color; /* color of dot to draw */
{
int overdown; /* over or down flag (+=over, -=down) */
int width; /* width of dots to draw (-tive is down)*/
int i; /* temporary counter */
for ( ; ptr->row != 0; ptr++)
{sreg.ax = 12*256 + color; /* color of dot */
sreg.cx = ptr->col; /* point to column */
sreg.dx = ptr->row; /* row to draw on */
overdown = ptr->wth; /* get over or down flag */
width = abs(overdown); /* get width of dots to draw */
for (i=0; i<width; i++) /* step thru "wth" columns */
{if (overdown >= 0)
{ /*--- stepping "over" ---*/
sreg.cx = ptr->col + i; /* point to column */
csysint(VIDEO, &sreg, &rreg); /* draw dot */
}
else
{ /*--- stepping "down" ---*/
sreg.dx = ptr->row + i; /* point to row */
csysint(VIDEO, &sreg, &rreg); /* draw dot */
};
};
};
} /*--- end subroutine -------------------------------------------------*/