示例#1
0
文件: winZoom.c 项目: sprax/coldz
void
backTrack (void *v, int device, int mouseDown)
{
pWmj    cW = (pWmj)v, pW = cW->prev;
/* WmjAct *Ap = (device == LEFTMOUSE ? cW->lefMouse : cW->midMouse); */
pDmj    cD = &cW->D;
long    bxA, byA, nxA, nyA, oxA,oyA, wx,ww,wy,wh;
long    widA = winget();

  if (! mouseDown)  return;

  getorigin(&wx,&wy);
  getsize(  &ww,&wh); ww -= 1; wh -= 1;

  oxA = bxA = (getvaluator(MOUSEX) - wx);
  oyA = byA = (getvaluator(MOUSEY) - wy);

  cursoff();
  drawmode(OVERDRAW);

  while(getbutton(device)) {
    nxA  = getvaluator(MOUSEX) - wx; if (nxA < 0)  nxA = 0;  else if (nxA > ww)  nxA = ww;
    nyA  = getvaluator(MOUSEY) - wy; if (nyA < 0)  nyA = 0;  else if (nyA > wh)  nyA = wh;
    if (nxA != oxA || nyA != oyA) {
      /* winset(widA); */
      color(BLACK);             /* black erases */
      sboxi(bxA,byA,oxA,oyA);   /* NB: sbox is faster than rect, but less flex */
      color(RED);                     /* set color of new circle */
      sboxi(bxA,byA,nxA,nyA);
      oxA = nxA,  oyA = nyA;
    }
  }
  color(BLACK);
  sboxi(bxA,byA,oxA,oyA);
  drawmode(NORMALDRAW);
  cpack(FcGRN);
  sboxi(bxA,byA,nxA,nyA);

  if (pW) {
    pDmj        pD = &pW->D;
    flt         pzX = pW->zX, zX = pzX/cW->zX;
    flt         pzY = pW->zY, zY = pzY/cW->zY;
    long        L = cD->l*pzX, B = cD->b*pzY;
    wrn("bT: id: %d  pD->lb: %3d %3d   zXY: %.1f %.1f", pW->id, pD->l, pD->b,    zX,    zY);
    wrn("bT: id: %d  cD->lb: %3d %3d  czXY: %.1f %.1f", cW->id, cD->l, cD->b,cW->zX,cW->zY);
    winset(pW->id);
    drawmode(OVERDRAW);
    color(YELLOW);
    sboxi(L + bxA*zX, B + byA*zY, L + oxA*zX, B + oyA*zY);
    drawmode(NORMALDRAW);
  }
  winset(widA);
  curson();
}
示例#2
0
文件: winZoom.c 项目: sprax/coldz
void
rubberRectZoid (void *v, int device, int mouseDown)
{
static	WmjAct	backAct;
pWmj	cW = (pWmj)v;
WmjAct *Ap = (device == LEFTMOUSE ? cW->lefMouse : cW->midMouse);
/* Tetra  *trp  = Ap->data; */
flt     zX = cW->zX, zY = cW->zY;
long    bxA, byA, nxA, nyA, oxA,oyA, wx,ww,wy,wh;
long	widA = winget();

  if (! mouseDown)  return;

  getorigin(&wx,&wy);       
  getsize(  &ww,&wh); ww -= 1; wh -= 1;

  oxA = bxA = (getvaluator(MOUSEX) - wx);
  oyA = byA = (getvaluator(MOUSEY) - wy);

  cursoff();
  drawmode(OVERDRAW);

  while(getbutton(device)) {
    nxA  = getvaluator(MOUSEX) - wx; if (nxA < 0)  nxA = 0;  else if (nxA > ww)  nxA = ww;
    nyA  = getvaluator(MOUSEY) - wy; if (nyA < 0)  nyA = 0;  else if (nyA > wh)  nyA = wh;
    if (nxA != oxA || nyA != oyA) {

      winset(widA);
      color(BLACK);                   /* black erases */
      sboxi(bxA,byA,oxA,oyA);
      color(RED);                     /* set color of new circle */
      sboxi(bxA,byA,nxA,nyA);
      oxA = nxA,  oyA = nyA;
    }
  }
  color(BLACK);
  sboxi(bxA,byA,oxA,oyA);
  drawmode(NORMALDRAW);
  cpack(FcGRN);
  sboxi(bxA,byA,nxA,nyA);

  if (bxA > nxA)  nxA = bxA, bxA = oxA;
  if (byA > nyA)  nyA = byA, byA = oyA;
  wrn("rubberRectZ B4 showSub: %4d  %4d  %4d  %4d   zX:%.2f  zY:%.2f",bxA,byA,nxA,nyA, zX, zY);

  backAct = *Ap;
  backAct.func = &testChain;
  cW->next = showSub(cW,   bxA/zX,byA/zY,nxA/zX,nyA/zY,"subA",zX*2.0,zY*2.0,5);
  cW->next->lefMouse = &backAct;
  cW->next->prev = cW;

  winset(widA);
  curson();
}
示例#3
0
文件: r4tosgi.c 项目: hollasch/ray4
void  InitSGI  ()
{
   ginit ();		/* Initialize the display. */
   ginit_done = true;

   cursoff ();

   RGBmode ();		/* Select RGB mode (24-bit color). */
   gconfig ();
   RGBcolor (0, 0, 0);
   clear ();

   qdevice (KEYBD);
}
示例#4
0
文件: main.c 项目: dancrossnyc/harvey
void
curson(int bl)
{
	Image *col;

	if(!cursoron){
		cursoff();
		return;
	}

	draw(cursback, cursback->r, screen, nil, pt(x, y));
	if(bl)
		col = red;
	else
		col = bordercol;
	border(screen, Rpt(pt(x, y), addpt(pt(x, y), Pt(CW,NS))), 2, col, ZP);
}
示例#5
0
Bool ScreenSaverC::TurnOn(void)
	{
#ifndef WINCIT
	if (!On && save_screen())
		{
		const int row = logiRow, col = logiCol;

		int wow = cfg.attr;
		int wow2 = cfg.battr;

		cfg.attr = 0;
		cfg.battr = 0;

		cls(SCROLL_NOSAVE);

		cfg.attr = wow;
		cfg.battr = wow2;

		position(row, col);

		On = TRUE;

		logiScreen = saveBuffer;
		dgLogiScreen = logiScreen;

		if (!cfg.really_really_fucking_stupid)
			{
			cursoff();
			}

		if (cfg.LockOnBlank && *cfg.f6pass)
			{
			ConsoleLock.Lock();
			}
		}

	return (On);
#else
	return (FALSE);
#endif
	}
示例#6
0
/*
 * ScreenFini
 */
void ScreenFini( void )
{
    cursoff();
    endwin();

} /* ScreenFini */
示例#7
0
Bool StatusLineC::ToggleFullScreen(WC_TW)
	{
#ifndef WINCIT
	if (!ScreenSaver.IsOn())
		{
		if (State == SL_FULLSCREEN)
			{
			State = SL_ONELINE;

			logiScreen = physScreen;
			dgLogiScreen = logiScreen;

			restore_screen();

			curson();

			UnlockMessages(MSG_F4SCREEN);

			return (TRUE);
			}
		else
			{
			if (!Visible)
				{
				Toggle();
				}

			if (State == SL_TWOLINES)
				{
				ToggleSecond();
				}

			State = SL_FULLSCREEN;
			updateStatus = TRUE;

			if (save_screen())
				{
				logiScreen = saveBuffer;
				dgLogiScreen = logiScreen;

				const int oldrow = logiRow, oldcol = logiCol;

				if (!cfg.really_really_fucking_stupid)
					{
					cursoff();
					}

				outPhys(TRUE);
				cls(SCROLL_NOSAVE);
				outPhys(FALSE);

				position(oldrow, oldcol);

				LockMessages(MSG_F4SCREEN);

				return (TRUE);
				}
			else
				{
				State = SL_ONELINE;
				}
			}

		}
#endif

	return (FALSE);
	}
示例#8
0
文件: main.c 项目: dancrossnyc/harvey
int
waitchar(void)
{
	Event e;
	int c;
	char c2;
	int newmouse;
	int wasblocked;
	int kbdchar = -1;
	char echobuf[3*BSIZE];
	static int lastc = -1;


	for(;;) {
		if(resize_flag)
			resize();
		wasblocked = blocked;
		if(backp)
			return(0);
		if(ecanmouse() && (button2() || button3()))
			readmenu();
		if(snarffp) {
			if((c = Bgetc(snarffp)) < 0) {
				if(lastc != '\n')
					write(outfd,"\n",1);
				Bterm(snarffp);
				snarffp = 0;
				if(lastc != '\n') {
					lastc = -1;
					return('\n');
				}
				lastc = -1;
				continue;
			}
			lastc = c;
			c2 = c;
			write(outfd, &c2, 1);
			return(c);
		}
		if(!blocked && host_avail())
			return(rcvchar());
		if(kbdchar > 0) {
			if(blocked)
				resize();
			if(cs->raw) {
				switch(kbdchar){
				case Kup:
					sendfk("up key");
					break;
				case Kdown:
					sendfk("down key");
					break;
				case Kleft:
					sendfk("left key");
					break;
				case Kright:
					sendfk("right key");
					break;
				case Kpgup:
					sendfk("page up");
					break;
				case Kpgdown:
					sendfk("page down");
					break;
				case KF|1:
					sendfk("F1");
					break;
				case KF|2:
					sendfk("F2");
					break;
				case KF|3:
					sendfk("F3");
					break;
				case KF|4:
					sendfk("F4");
					break;
				case KF|5:
					sendfk("F5");
					break;
				case KF|6:
					sendfk("F6");
					break;
				case KF|7:
					sendfk("F7");
					break;
				case KF|8:
					sendfk("F8");
					break;
				case KF|9:
					sendfk("F9");
					break;
				case KF|10:
					sendfk("F10");
					break;
				case KF|11:
					sendfk("F11");
					break;
				case KF|12:
					sendfk("F12");
					break;
				case '\n':
					echobuf[0] = '\r';
					sendnchars(1, echobuf);
					break;
				case '\r':
					echobuf[0] = '\n';
					sendnchars(1, echobuf);
					break;
				default:
					echobuf[0] = kbdchar;
					sendnchars(1, echobuf);
					break;
				}
			} else if(canon(echobuf,kbdchar) == SCROLL) {
				if(!blocked)
					bigscroll();
			} else
				strcat(echo_input,echobuf);
			blocked = 0;
			kbdchar = -1;
			continue;
		}
		curson(wasblocked);	/* turn on cursor while we're waiting */
		do {
			newmouse = 0;
			switch(eread(blocked ? Emouse|Ekeyboard :
					       Emouse|Ekeyboard|Ehost, &e)) {
			case Emouse:
				mouse = e.mouse;
				if(button2() || button3())
					readmenu();
				else if(resize_flag == 0) {
					/* eresized() is triggered by special mouse event */
					newmouse = 1;
				}
				break;
			case Ekeyboard:
				kbdchar = e.kbdc;
				break;
			case Ehost:
				set_host(&e);
				break;
			default:
				perror("protocol violation");
				exits("protocol violation");
			}
		} while(newmouse == 1);
		cursoff();	/* turn cursor back off */
	}
}
示例#9
0
文件: ingy.c 项目: sprax/coldz