void glt_stream_server_t::OnDisplay() { build_trans_matrix(); if (draw_data) draw_data(); glFlush(); update_buffer(); }
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; }
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++; } }
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++; }
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); }
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; }
LVAL iview_draw_data_strings(V) { return(draw_data('S')); }
LVAL iview_draw_data_lines(V) { return(draw_data('L')); }
LVAL iview_draw_data_points(V) { return(draw_data('P')); }
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); } }
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); }
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); }