void rote_vt_draw(RoteTerm *rt, WINDOW *win, int srow, int scol, void (*cur_set_attr)(WINDOW*,unsigned char)) { int i, j; rote_vt_update(rt); if (!cur_set_attr) cur_set_attr = default_cur_set_attr; for (i = 0; i < rt->rows; i++) { wmove(win, srow + i, scol); for (j = 0; j < rt->cols; j++) { (*cur_set_attr)(win, rt->cells[i][j].attr); waddch(win, ensure_printable(rt->cells[i][j].ch)); } } wmove(win, srow + rt->crow, scol + rt->ccol); }
void mainloop(void) { #define UP 100 static int a = UP; a--; if (a==-1) a=UP; int u; if (!(u=rote_vt_update(t)) && !afterlife) s3d_quit(); if (!a||dirty||((u==2)&&(t->curpos_dirty || lines_r_dirty(t)))) { dirty=0; lines_r_clean(t); t->curpos_dirty=0; draw_terminal(t,showhex); bpep(); } usleep(1000); // sleep is good }
int RunGLTest () { int bpp; int w = 500; int h = 500; int done = 0; int shrink=0; int grow=0; xy s = parsemodes(w,h,"mode",1,0,0); if (s.x!=-1){w=s.x;h=s.y;}; Uint32 video_flags=initsdl(w,h,&bpp); /* Set the window manager title bar */ SDL_WM_SetCaption( "SDL GL test", "testgl" ); SDL_EnableUNICODE(1); SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); wm(w,h); glDepthFunc(GL_LESS); glEnable(GL_BLEND); glShadeModel(GL_SMOOTH); glBlendFunc(GL_SRC_ALPHA, GL_ONE); add_terminal(); glLineWidth(1); glClearColor( 0.0, 0.0, 0.0, 1.0 ); while( !done ) { GLenum gl_error; char* sdl_error; SDL_Event event; glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); rote_vt_update(t); glPushMatrix(); glRotatef(rot,1,0,0); glPushMatrix(); glTranslatef(-2.52,1.92,0); glPushMatrix(); activetext=(active==2); if (active==2) glScalef(0.003,-0.003,1); else glScalef(0.002,-0.002,1); draw_terminal(t); glPopMatrix(); glPushMatrix(); activetext=(active==1); if (active==1) glScalef(0.003,-0.003,1); else glScalef(0.002,-0.002,1); glTranslatef(0,plscroll*60,0); PyRun_SimpleString("dr_aw()"); glPopMatrix(); glPopMatrix(); glPopMatrix(); SDL_GL_SwapBuffers( ); gl_error = glGetError( ); if( gl_error != GL_NO_ERROR ) fprintf( stderr, "testgl: OpenGL error: %d\n", gl_error ); sdl_error = SDL_GetError( ); if( sdl_error[0] != '\0' ) { fprintf(stderr, "testgl: SDL error '%s'\n", sdl_error); SDL_ClearError(); } { } /* Check if there's a pending event. */ while( SDL_PollEvent( &event ) ) { switch( event.type ) { case SDL_KEYDOWN: printf("%i\n",event.key.keysym.unicode); int key=event.key.keysym.sym; if ( key==SDLK_UP ) { PyRun_SimpleString("pl_up()"); active=1; } if ( key==(SDLK_DOWN) ) { PyRun_SimpleString("pl_down()"); active=1; } if ( key==(SDLK_PAGEUP) ) { PyRun_SimpleString("pl_pgup()"); active=1; } if ( key==(SDLK_PAGEDOWN) ) { PyRun_SimpleString("pl_pgdown()"); active=1; } else if ( (key == SDLK_SPACE) ) keyp(32); else if ( (key == SDLK_q) ) rot++; else if ( (key == SDLK_w) ) rot--; else if ( (key == SDLK_e) ) glLineWidth(3); else if ( (key == SDLK_r) ) glLineWidth(4); else if ( (key == SDLK_t) ) glLineWidth(5); else if ( (key == SDLK_y) ) glLineWidth(6); else if ( (key == SDLK_F1) ) shrink=1; else if ( (key == SDLK_F2) ) grow=1; else if ( (key == SDLK_END) ) { PyRun_SimpleString("pl_end()"); active=1; } else if ( (key == SDLK_HOME) ) { PyRun_SimpleString("pl_home()"); active=1; } else if ( (key == SDLK_q) ) { PyRun_SimpleString("wanna_play()"); wannaplay=1; active=2; } else if ( (key == SDLK_RETURN) ) { keyp(10); PyRun_SimpleString("wanna_play()"); wannaplay=1; active=2; } else if ( (key == SDLK_c) ) done=1; break; case SDL_QUIT: done = 1; break; } } if (wannaplay) { FILE *f; if (f=fopen("/tmp/sftkoko","r")) fclose(f); else { wannaplay=0; PyRun_SimpleString("pl_ay()"); } } if (shrink||grow) resize(&w,&h,&bpp,&video_flags,&shrink,&grow); } SDL_Quit( ); return(0); }
static int lua_RoteTerm_update(lua_State* L) { RoteTerm* rt = lua_RoteTerm_self(L, 1); rote_vt_update(rt); return 0; }
void machmgr_update() { int i; for (i = 0; i < machcount; i++) rote_vt_update(machs[i]->vt); }