stever@Octopus.COM (Steve Resnick ) (08/08/90)
For those of you who requested my post of gcgets, here it is!
Bear in mind this was written for a specific application and there
are some short-comings to it, but the general idea is expressed.
-------<Cut Here>---------------------------------<Cut Here>--------------
/* gcgets (C) Copyright 1990 Steve Resnick
*/
gcgets(int Xstart, int Ystart, char * buffer, int size)
{
char *tmp, *start;
char CurBuf[512];
int i, c, x, y, Hue, curx, cury;
x = Xstart; y = Ystart;
curx = x; cury = y+(textheight("[")-2);
if ((tmp = calloc(size,1)) == NULL)
{
restorecrtmode();
perror("Cannot allocate memory for console I/O!");
exit(0);
}
start = tmp;
for ( i = 0; i < (size - 1); )
{
Hue = getcolor();
setcolor(8);
getimage(curx,cury,curx+10,cury,CurBuf);
line(curx,cury,curx+10,cury);
c = getch();
putimage(curx,cury,CurBuf,COPY_PUT);
setcolor(Hue);
switch(c)
{
case 0 :
getch();
break ;
case 27:
*buffer = 0;
free(start);
return(0);
case 13:
strncpy(buffer,start,size);
free(start);
return(strlen(buffer));
case 8:
if ((tmp - 1) >= start)
{
x-=8;
setcolor(CYAN);
gprintf(x,y,"[");
setcolor(15);
i-- ;
*tmp-- = 0;
*tmp = 0;
}
else
{
sound(2500);
delay(10);
nosound();
}
break ;
default :
gprintf(x,y,"%c",c);
x+=8;
*tmp++ = c;
i ++ ;
}
curx = Xstart + textwidth(start);
}
strncpy(buffer,start,size);
free(start);
return(strlen(buffer));
}
/* This was taken and hacked from the BGIDEMO program */
int gprintf( int xloc, int yloc, char *fmt, ... )
{
va_list argptr; /* Argument list pointer */
char str[140]; /* Buffer to build sting into */
int cnt; /* Result of SPRINTF for return */
va_start( argptr, format ); /* Initialize va_ functions */
cnt = vsprintf( str, fmt, argptr ); /* prints string to buffer */
outtextxy( xloc, yloc, str ); /* Send string in graphics mode */
va_end( argptr ); /* Close va_ functions */
return( cnt ); /* Return the conversion count */
}
--
----------------------------------------------------------------------------
steve.resnick@f105.n143.z1@FIDONET.ORG #include<std_disclaimer.h>
Flames, grammar errors, spelling errrors >/dev/nul
----------------------------------------------------------------------------