[comp.sys.sgi] question about cmov/getcpos

fsfacca@AVELON.LERC.NASA.GOV (Tony Facca) (03/03/90)

can someone please shed some light on the use of getcpos/cmov2i ?

I have a routine which allows the user to enter character data from a graphics
window.  they type stuff from the keyboard, and it gets echoed back to the
screen.  the problem occurs when a backspace is encountered in an unconstrained
window.  here is a code section:

keybd_input (buff) 
char *buff;
{
        Screencoord	xpos, ypos;
	char		*p,  ch_temp[2];
	short		dev, ch;
	int		i=0;

	devices (OFF);
	qdevice (KEYBD);

	cmov2i  (50,50);
	charstr ("enter string: ");
	p = buff;
	ch_temp[1] = '\0';
	while ( dev = qread (&ch))
	{
		if (dev == KEYBD) {
			if (ch == '\n' || ch == '\r') {
			   break;
			}
			if (ch == '\b') {
			   i--; 
			   if (i < 0) { i = 0; break; }
			   ch_temp[0] = *--p; 
			   getcpos (&xpos, &ypos);  
			   xpos = xpos - strwidth(ch_temp); 
			   cmov2i (xpos, ypos);
			   color (BLACK);      
			   charstr (ch_temp);
			   color (WHITE);
			   cmov2i (xpos, ypos);
                        }
			else {
			   *p++ = ch;
			   ch_temp[0] = ch;
			   charstr ( &buff[i++] );
			}

		}
	}
	*p = '\0';  

	devices (ON);
}


if i precede the winopen() call (not part of this routine) with one to 

    prefposition(0,XMAXSCREEN,0,YMAXSCREEN)

then all is well, getcpos returns nice values and everyone is happy.  if I let
the user open an unconstrained window, the call to cmov2i(50,50) appears 
relative to the lower left corner of the user-defined window.  however, the
getcpos call returns something other than relative values and things get ugly.

is this indeed the case, that cmov is relative and getcpos is not?  is there a 
way to tell getcpos() to use relative coordinates?  is there an altogether 
better way to accomplish this?


--
-----------------------------------------------------------------------------
Tony Facca                     |     phone: 216-433-8318
NASA Lewis Research Center     |    
Cleveland, Ohio  44135         |     email: fsfacca@lerc08.lerc.nasa.gov 
-----------------------------------------------------------------------------