static void drawrange(xps_context *ctx, char *range) { int page, spage, epage; char *spec, *dash; spec = fz_strsep(&range, ","); while (spec) { dash = strchr(spec, '-'); if (dash == spec) spage = epage = xps_count_pages(ctx); else spage = epage = atoi(spec); if (dash) { if (strlen(dash) > 1) epage = atoi(dash + 1); else epage = xps_count_pages(ctx); } spage = CLAMP(spage, 1, xps_count_pages(ctx)); epage = CLAMP(epage, 1, xps_count_pages(ctx)); if (spage < epage) for (page = spage; page <= epage; page++) drawpage(ctx, page); else for (page = spage; page >= epage; page--) drawpage(ctx, page); spec = fz_strsep(&range, ","); } }
static void resize_finish(int w, int h) { recalc_size(w, h); yutani_window_resize_accept(yctx, window, w, h); reinit_graphics_yutani(gfx_ctx, window); draw_fill(gfx_ctx, rgb(0,0,0)); if (current_doc) { /* redraw the page */ draw_decors(current_page, current_epage); drawpage(current_ctx, current_doc, current_page); } yutani_window_resize_done(yctx, window); yutani_flip(yctx, window); }
void display(void) { glClearColor(0,0,0,0); glColor3d(0,0,255); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glColor4d(1,1,1,0.005); //grid(16,16,16,CUBESIZE,playerx,playery,playerz); glColor4d(0.5,1,0.5,0.05); grid(16,16,0,CUBESIZE,playerx,playery,-16); glColor4d(1,0.5,0.5,0.05); grid(16,0,16,CUBESIZE,playerx,-8,playerz); glColor4d(0.5,0.5,1,0.05); grid(0,16,16,CUBESIZE,24,playery,playerz); player(8,8,8); drawpage(0,0,0,(char *)&coremem); glutSwapBuffers(); }
static void drawrange(fz_context *ctx, fz_document *doc, char *range) { int page, spage, epage, pagecount; char *spec, *dash; pagecount = fz_count_pages(doc); spec = fz_strsep(&range, ","); while (spec) { dash = strchr(spec, '-'); if (dash == spec) spage = epage = pagecount; else spage = epage = atoi(spec); if (dash) { if (strlen(dash) > 1) epage = atoi(dash + 1); else epage = pagecount; } spage = fz_clampi(spage, 1, pagecount); epage = fz_clampi(epage, 1, pagecount); current_doc = doc; current_ctx = ctx; current_epage = epage; for (page = spage; page <= epage; ) { if (page == 0) page = 1; current_page = page; drawpage(ctx, doc, page); draw_decors(page, epage); yutani_flip(yctx, window); yutani_msg_t * m = NULL; while (1) { m = yutani_poll(yctx); if (m) { switch (m->type) { case YUTANI_MSG_KEY_EVENT: { struct yutani_msg_key_event * ke = (void*)m->data; if (ke->event.action == KEY_ACTION_DOWN) { switch (ke->event.keycode) { case KEY_ESCAPE: case 'q': yutani_close(yctx, window); exit(0); break; case KEY_ARROW_LEFT: case 'a': page--; goto _continue; case KEY_ARROW_RIGHT: case 's': page++; if (page > epage) page = epage; goto _continue; case KEY_F12: toggle_decorations(); goto _continue; default: break; } } } break; case YUTANI_MSG_SESSION_END: yutani_close(yctx, window); exit(0); break; case YUTANI_MSG_WINDOW_FOCUS_CHANGE: { struct yutani_msg_window_focus_change * wf = (void*)m->data; yutani_window_t * win = hashmap_get(yctx->windows, (void*)wf->wid); if (win) { win->focused = wf->focused; goto _continue; } } break; case YUTANI_MSG_RESIZE_OFFER: { struct yutani_msg_window_resize * wr = (void*)m->data; resize_finish(wr->width, wr->height); goto _continue; } break; case YUTANI_MSG_WINDOW_MOUSE_EVENT: if (decor_handle_event(yctx, m) == DECOR_CLOSE) { yutani_close(yctx, window); exit(0); } break; default: break; } } free(m); } _continue: free(m); } spec = fz_strsep(&range, ","); } }