Пример #1
0
void glt_stream_server_t::OnDisplay() {

	build_trans_matrix();
    
    if (draw_data)
		draw_data();

	glFlush();

	update_buffer();

}
Пример #2
0
void
drawstuff (CHAR_DATA *ch, char* argy, int maxy, int maxx)
{
  char *y = argy;
  char tt[50];
  int i,j,m;
  if (IS_MOB(ch)) return;
  if (IS_SET(ch->pcdata->act2, PLR_NOIBM))
    noibm = TRUE;
  else 
    noibm = FALSE;
  flip = FALSE;
  kk = FALSE;
  mb = FALSE;
  for (; *y != '\0'; y++)
    {
      if (*y == 'N' || *y == 'n')
	noibm = TRUE;
      if (*y == 'D' || *y == 'd')
	kk = TRUE;
      if (*y == 'M' || *y == 'm')
	mb = TRUE;
      if (*y == 'F' || *y == 'f')
	flip = TRUE;
    }
  for (i=0; i<80; i++)
    {
      for (j=0; j<25; j++)
	{
	  outp[i][j][0] = ' ';
	  outp[i][j][1] = '\0';
	  for (m=0; m < 15; m++)
	    scrnn[i][j][m]='\0';
	  colrs[i][j]='\0';
	}
    }
  reset_data();
  ch->pcdata->maxx = maxx;
  ch->pcdata->maxy = maxy;
  go_display (ch, ch->in_room, (maxx/2), (maxy/2), maxy, maxx);
  outp[(maxx/2)][(maxy/2)][0] = 'X';
  outp[(maxx/2)][(maxy/2)][1] = '\0';
  draw_data (ch, maxy);
  write_to_buffer(ch->desc, "\x1B[0;37m", 0);
  gotoxy (ch, 1, maxy+1);
  undisplay(ch, ch->in_room, 150); 
  gotoxy(ch, 1, ch->pcdata->pagelen);
  mb = FALSE;
  kk = FALSE;
  noibm = FALSE;
  flip = FALSE;
  return;
}
Пример #3
0
void Graph::draw(){
//	glClear(GL_COLOR_BUFFER_BIT);
	glColor3d(10,10,10);		//背景を白で描画
	glRectd(-1,-1, 1,1);

	draw_axis();
	glLineWidth(1.0);
	vector<DataSet<double>>::iterator it;
	
	it = Solid.begin();

	while(it != Solid.end() ){
		draw_data((*it), true);
		it++;
	}

	it = Dash.begin();
	while(it != Dash.end() ){
		draw_data((*it), false);
		it++;

	}

}
Пример #4
0
static void draw_page(int i, float x, float y, float a)
{
    int j, n = terrain[i].n;

    /* Search for this page in the page cache. */

    if ((j = search_cache(i, x, y, a)) == -1)
    {
        struct page *cache = terrain[i].cache;

        int prev = cache[terrain[i].tail].prev;

        /* This is a new page.  Promote the oldest cache line. */

        cache[cache[terrain[i].tail].prev].next = -1;

        cache[terrain[i].head].prev = terrain[i].tail;
        cache[terrain[i].tail].next = terrain[i].head;
        cache[terrain[i].tail].prev = -1;

        terrain[i].head = terrain[i].tail;
        terrain[i].tail = prev;

        /* Initialize this cache line's VBO to the given area. */

        j = terrain[i].head;

        load_scratch(i, x, y, a);

        terrain[i].cache[j].x = x;
        terrain[i].cache[j].y = y;
        terrain[i].cache[j].a = a;

        glBindBufferARB(GL_ARRAY_BUFFER_ARB, terrain[i].cache[j].vbo);
        glBufferDataARB(GL_ARRAY_BUFFER_ARB,
                        (n + 1) * (n + 1) * sizeof (struct vertex),
                        terrain[i].scratch, GL_STATIC_DRAW_ARB);
    }

    draw_data(terrain[i].cache[j].vbo, terrain[i].n);

    count++;
}
Пример #5
0
void windowerr_display3(VeWindow *w, long tm, VeWallView *wv) {
  glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  glEnable(GL_TEXTURE_2D);
  glEnable(GL_DEPTH_TEST);
  glBindTexture(GL_TEXTURE_2D,2);

  if (current_window == w)
    glColor3fv(current_tex);
  else
    glColor3fv(wall_tex);
  
  draw_cube(cube_size);
  glTranslatef(0.0,0.0,-3.0);
  glRotatef(45.0,0.0,1.0,0.0);
  glRotatef(45.0,1.0,0.0,0.0);
  glColor3fv(current_tex);
  draw_cube(0.3);

  draw_data(w);
}
Пример #6
0
void Draw_graph_struct(FR_GUI_GRAPH_T* gr){

	TM_TOUCH_t* TS;
	point_t* zero_loc;


	TS=gr->TS;
	zero_loc=&(gr->zero_loc);

	// Touch Status
	gr->touchstatus=0;
		if (TS->NumPresses) {
			int i;
			/* Go through all presses on LCD */
			for (i = 0; i < TS->NumPresses; i++) {
				/* Draw circle */
			    int xtouch;
			    int ytouch;

			    xtouch=LCD_GetXSize()-TS->X[i];
			    ytouch=LCD_GetYSize()-TS->Y[i];
			    if((xtouch>(gr->x))&&(xtouch<((gr->x)+(gr->w)))&&(ytouch>(gr->y))&&(ytouch<((gr->y)+(gr->h)))){
			    	gr->touchstatus=1;
			    }
			}

		}


		//Draw
		zero_loc->x=gr->x;
		zero_loc->y=gr->y+gr->h;

		//x_axis
		GUI_DrawLine(zero_loc->x,zero_loc->y,gr->x+gr->w,gr->zero_loc.y);
		//Arrow
		GUI_DrawLine(zero_loc->x+gr->w,zero_loc->y+5,zero_loc->x+gr->w,zero_loc->y-5);
		GUI_DrawLine(zero_loc->x+gr->w+5,zero_loc->y,zero_loc->x+gr->w,zero_loc->y+5);
		GUI_DrawLine(zero_loc->x+gr->w+5,zero_loc->y,zero_loc->x+gr->w,zero_loc->y-5);

		// Draw Xaxis function should be called here
		//Draw axis Label and Ticks

		//Y_axis
		GUI_DrawLine(gr->zero_loc.x,gr->zero_loc.y,gr->zero_loc.x,gr->y);

		//Arrow
		GUI_DrawLine(zero_loc->x-5,gr->y,zero_loc->x+5,gr->y);
		GUI_DrawLine(zero_loc->x-5,gr->y,zero_loc->x,gr->y-5);
		GUI_DrawLine(zero_loc->x+5,gr->y,zero_loc->x,gr->y-5);

		// Draw Yaxis function should be called here
		//Draw axis Label and Ticks

		//Draw Graph title
		GUI_SetFont(&GUI_Font16_1);
		GUI_DispStringHCenterAt(gr->Title,gr->x+((gr->w)/2),(gr->y)-16);

		//Draw Graph here

		draw_data(gr,&(gr->Data));


		/* Do actions */
		if(gr->touchstatus && !(gr->touchstatus_mem) && gr->TouchAction!=NULL){
			gr->TouchAction();
		}

		if(!(gr->touchstatus) && gr->touchstatus_mem && gr->ReleaseAction!=NULL){
			gr->ReleaseAction();
		}
		gr->touchstatus_mem=gr->touchstatus;


}
Пример #7
0
LVAL iview_draw_data_strings(V) { return(draw_data('S')); }
Пример #8
0
LVAL iview_draw_data_lines(V)   { return(draw_data('L')); }
Пример #9
0
LVAL iview_draw_data_points(V)  { return(draw_data('P')); }
Пример #10
0
void DrawLooper::MessageReceived(BMessage *msg)
{
	switch (msg->what) {
		case MSG_NEW_BUFFER: {	// New data buffer arrived, redraw oscilloscope
			int i, j;
			uint8 *p, *q, *r;
			int16 *buf;
			uint8 black = c_black;	// Local variables are faster
			uint8 *bits = this->bits;
			int xmod = this->xmod;

			// Prevent backlog
			BMessage *msg2;
			MessageQueue()->Lock();
			while ((msg2 = MessageQueue()->FindMessage(0L)) != NULL) {
				MessageQueue()->RemoveMessage(msg2);
				delete msg2;
			}
			MessageQueue()->Unlock();

			// Get pointer to data buffer
			if (msg->FindPointer("buffer", (void**) &buf) != B_NO_ERROR)
				break;

			// Draw dark green background
			memset(bits, c_dark_green, xmod * SCOPE_HEIGHT);

			// Draw data
			if (Stereo) {
				draw_data(buf, SCOPE_HEIGHT / 4, SCOPE_HEIGHT / 2);
				draw_data(buf + SCOPE_WIDTH * 2, SCOPE_HEIGHT * 3/4, SCOPE_HEIGHT / 2);
			} else
				if (RightChannel)
					draw_data(buf + SCOPE_WIDTH * 2, SCOPE_HEIGHT / 2, SCOPE_HEIGHT);
				else
					draw_data(buf, SCOPE_HEIGHT / 2, SCOPE_HEIGHT);

			// Draw grid and ticks
			for (i=0; i<NUM_Y_DIVS; i++) {
				memset(bits + xmod * (i * SCOPE_HEIGHT / NUM_Y_DIVS), black, SCOPE_WIDTH); 
				for (j=1; j<TICKS_PER_DIV; j++)
					memset(bits + SCOPE_WIDTH / 2 - 3 + xmod * (i * SCOPE_HEIGHT / NUM_Y_DIVS + j * SCOPE_HEIGHT / (NUM_Y_DIVS * TICKS_PER_DIV)), black, 7); 
			}
			memset(bits + xmod * (SCOPE_HEIGHT-1), black, SCOPE_WIDTH);

			p = bits;
			for (i=0; i<SCOPE_HEIGHT; i++) {
				for (j=0; j<NUM_X_DIVS; j++)
					p[j * SCOPE_WIDTH / NUM_X_DIVS] = black;
				p[SCOPE_WIDTH-1] = black;
				p += xmod;
			}
			p = bits + xmod * (SCOPE_HEIGHT / 2 - 3);
			q = bits + xmod * (SCOPE_HEIGHT / 4 - 2);
			r = bits + xmod * (SCOPE_HEIGHT * 3/4 - 2);
			for (i=0; i<NUM_X_DIVS; i++)
				for (j=1; j<TICKS_PER_DIV; j++) {
					int ofs = i * SCOPE_WIDTH / NUM_X_DIVS + j * SCOPE_WIDTH / (NUM_X_DIVS * TICKS_PER_DIV);
					p[ofs] = black;
					p[ofs + xmod] = black;
					p[ofs + xmod * 2] = black;
					p[ofs + xmod * 3] = black;
					p[ofs + xmod * 4] = black;
					p[ofs + xmod * 5] = black;
					p[ofs + xmod * 6] = black;
					q[ofs] = black;
					q[ofs + xmod] = black;
					q[ofs + xmod * 2] = black;
					q[ofs + xmod * 3] = black;
					q[ofs + xmod * 4] = black;
					r[ofs] = black;
					r[ofs + xmod] = black;
					r[ofs + xmod * 2] = black;
					r[ofs + xmod * 3] = black;
					r[ofs + xmod * 4] = black;
					bits[ofs + xmod * (SCOPE_HEIGHT * 3/16)] = black;
					bits[ofs + xmod * (SCOPE_HEIGHT * 13/16)] = black;
				}

			// Blit bitmap to screen
			if (the_window->LockWithTimeout(100000) == B_OK) {
				the_view->Draw(the_bounds);
				the_window->Unlock();
			}
			break;
		}

		default:
			BLooper::MessageReceived(msg);
	}
}
Пример #11
0
void distort_display(VeWindow *w, long tm, VeWallView *wv) {
  int i;
  cal_priv_t *p = (cal_priv_t *)(w->appdata);

  glClear(GL_COLOR_BUFFER_BIT);
  glDisable(GL_TEXTURE_2D);
  glDisable(GL_DEPTH_TEST);

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  glOrtho(-1.0,1.0,-1.0,1.0,-1.0,1.0);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
  if (current_window == w)
    glColor3fv(current_col);
  else
    glColor3fv(wall_col);

  glBegin(GL_LINE_LOOP);
  for(i = 0; i < 4; i++)
    glVertex3f(p->pt[i][0],p->pt[i][1],0.0);
  glEnd();

  if (current_window == w)
    glColor3fv(current_bord);
  else
    glColor3fv(wall_bord);
  /* crosslines */
  glBegin(GL_LINES);
  glVertex3f((p->pt[0][0]+p->pt[1][0])/2.0,
	     (p->pt[0][1]+p->pt[1][1])/2.0,
	     0.0);
  glVertex3f((p->pt[2][0]+p->pt[3][0])/2.0,
	     (p->pt[2][1]+p->pt[3][1])/2.0,
	     0.0);
  glVertex3f((p->pt[0][0]+p->pt[3][0])/2.0,
	     (p->pt[0][1]+p->pt[3][1])/2.0,
	     0.0);
  glVertex3f((p->pt[2][0]+p->pt[1][0])/2.0,
	     (p->pt[2][1]+p->pt[1][1])/2.0,
	     0.0);
  glEnd();

  /* targets */
  for(i = 0; i < 4; i++) {
    if (i == current_pt)
      glColor3fv(current_pt_col);
    else if (current_window == w)
      glColor3fv(current_bord);
    else
      glColor3fv(wall_bord);
    glBegin(GL_LINES);
    glVertex3f(p->pt[i][0]-TARGETSZ,p->pt[i][1],0.0);
    glVertex3f(p->pt[i][0]+TARGETSZ,p->pt[i][1],0.0);
    glVertex3f(p->pt[i][0],p->pt[i][1]-TARGETSZ,0.0);
    glVertex3f(p->pt[i][0],p->pt[i][1]+TARGETSZ,0.0);
    glEnd();
    glPushMatrix();
    glTranslatef(p->pt[i][0],p->pt[i][1],0);
    gluDisk(q,0.6*TARGETSZ,0.7*TARGETSZ,16,2);
    glPopMatrix();
  }

  draw_data(w);
}
Пример #12
0
void windowerr_display1(VeWindow *w, long tm, VeWallView *wv) {
  /* draw a grid in the wall, denote the centre */
  float x,y,wid,hgt,widerr,hgterr,ox,oy,mn,mx;
  float dm[16];
  int i,j;

  glDisable(GL_TEXTURE_2D);
  glDisable(GL_DEPTH_TEST);

  wid = w->wall->view->width/2.0;
  hgt = w->wall->view->height/2.0;
  
  widerr = w->width_err/2.0;
  hgterr = w->height_err/2.0;
  ox = w->offset_x;
  oy = w->offset_y;

  printf("window %f x %f [%f,%f - %f,%f]\n",
	 wid, hgt, ox, oy, widerr, hgterr);

  glClear(GL_COLOR_BUFFER_BIT);

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  glOrtho(-wid-widerr+ox,wid+widerr+ox,
	  -hgt-hgterr+oy,hgt+hgterr+oy,
	  -1,1);
  glMatrixMode(GL_MODELVIEW);
  for(i = 0; i < 4; i++)
    for(j = 0; j < 4; j++)
      dm[i+j*4] = w->distort.data[i][j];
  glLoadMatrixf(dm);
  

  if (current_window == w)
    glColor3fv(current_col);
  else
    glColor3fv(wall_col);

  /* draw grid */
  glBegin(GL_LINES);
  mn = floor(-wid);
  while (mn < -wid)
    mn += grid_increment;
  mx = ceil(wid);
  while (mx > wid)
    mx -= grid_increment;
  for(x = mn; x <= mx; x += grid_increment) {
    glVertex3f(x,-hgt,0);
    glVertex3f(x,hgt,0);
  }
  mn = floor(-hgt);
  while (mn < -hgt)
    mn += grid_increment;
  mx = ceil(hgt);
  while (mx > hgt)
    mx -= grid_increment;
  for(y = mn; y <= mx; y += grid_increment) {
    glVertex3f(-wid,y,0);
    glVertex3f(wid,y,0);
  }
  glEnd();

  /* draw border */
  if (current_window == w)
    glColor3fv(current_bord);
  else
    glColor3fv(wall_bord);

  glBegin(GL_LINE_LOOP);
  glVertex3f(-wid,-hgt,0);
  glVertex3f(wid,-hgt,0);
  glVertex3f(wid,hgt,0);
  glVertex3f(-wid,hgt,0);
  glEnd();
  glBegin(GL_LINES);
  glVertex3f(-wid*0.1,0,0);
  glVertex3f(wid*0.1,0,0);
  glVertex3f(0,-hgt*0.1,0);
  glVertex3f(0,hgt*0.1,0);
  glEnd();

  draw_data(w);
}