Exemplo n.º 1
0
static void zoom_page(int z)
{
	int _zoom = zoom;
	zoom = MIN(MAXZOOM, MAX(1, z));
	if (!loadpage(num))
		srow = srow * zoom / _zoom;
}
Exemplo n.º 2
0
void h_panel_goto_panel() {
    gui_clean_local_keys();
    if (!gui_tabs_exists("panel")) {
        gui_tabs_addtab("panel");
        gui_tabs_select("panel");
    }
    gui_panel_show();
    gui_register_key('r', loadpage);
    gui_register_key(260, prevpage);
    gui_register_key(261, nextpage);
    loadpage();
}
Exemplo n.º 3
0
static int reload(void)
{
	doc_close(doc);
	doc = doc_open(filename);
	if (!doc || !doc_pages(doc)) {
		fprintf(stderr, "\nfbpdf: cannot open <%s>\n", filename);
		return 1;
	}
	if (!loadpage(num))
		draw();
	return 0;
}
Exemplo n.º 4
0
static void jmpmark(int c, int offset)
{
	if (c == '`')
		c = '\'';
	if (ISMARK(c) && mark[c]) {
		int dst = mark[c];
		int dst_row = offset ? mark_row[c] * zoom : 0;
		setmark('\'');
		if (!loadpage(dst))
			srow = offset ? dst_row : prow;
	}
}
Exemplo n.º 5
0
Arquivo: storage.c Projeto: bazil/tra
static XDBlock*
popfree(XDStore *s, int slot)
{
	u32int na;
	XDBlock *d, *nd;

	d = s->free[slot];
	if(d == nil){
		werrstr("empty slot %d", slot);
		return nil;
	}
	if(d->db.n != ~(u32int)0){
		fprint(2, "slot %d allocated page on the free list (oops)\n", slot);
		abort();
	}

	if(d->p == nil){
		d->p = loadpage(s, d->db.addr&~(s->ds.pagesize-1));
		if(d->p == nil){
			werrstr("loadpage %ud: %r", d->db.addr&~(s->ds.pagesize-1));
			return nil;
		}
		d->pa = d->p->a + (d->db.addr&(s->ds.pagesize-1));
		d->db.a = d->pa+HdrSize;
	}
	if(d->next){
DBG print("used slot %d got %ud next %ud\n", slot, d->db.addr, d->next->db.addr);
		s->free[slot] = d->next;
		return d;
	}
	na = gbit32(d->db.a);
	if(na == 0){
DBG print("used slot %d got %ud next 0\n", slot, d->db.addr);
		s->free[slot] = nil;
		return d;
	}
	nd = loaddata(s, na);
	if(nd == nil){	/* if we return d we'll leak the rest of the free chain */
DBG print("used slot %d got %ud next %ud bad: %r\n", slot, d->db.addr, na);
		werrstr("loaddata %ud: %r", na);
		return nil;
	}
	pbit32((uchar*)nd->db.a+4, 0);
	((Dpage*)nd->p)->flags |= DDirty;
	s->free[slot] = nd;
DBG print("used slot %d got %ud next %ud (loaded)\n", slot, d->db.addr, nd->db.addr);
	return d;
}
Exemplo n.º 6
0
Arquivo: storage.c Projeto: bazil/tra
static XDBlock*
loaddata(XDStore *s, u32int addr)
{
	XDBlock *d;
	Dpage *p;

	p = loadpage(s, addr&~(s->ds.pagesize-1));
	if(p == nil)
		return nil;
	d = mkdata(s, p, p->a+(addr&(s->ds.pagesize-1)), 0);
	if(d == nil){
		p->nref--;
		return nil;
	}
//print("load %ud p->addr %ud off %ud pa %p ",
//	addr, p->addr, (addr&(s->ds.pagesize-1)), p->a);
//print("%.2ux %.2ux %.2ux %.2ux %.2ux %.2ux %.2ux %.2ux\n",
//	d->pa[0], d->pa[1], d->pa[2], d->pa[3],
//	d->pa[4], d->pa[5], d->pa[6], d->pa[7]);
	d->m = gbit32(d->pa);
	d->db.n = gbit32(d->pa+4);
	return d;
}
Exemplo n.º 7
0
void prevpage() {
    if (pagina == 1) return;
    pagina--;
    loadpage();
}
Exemplo n.º 8
0
void nextpage() {
    if (pagina == n_pagine) return;
    pagina++;
    loadpage();
}
Exemplo n.º 9
0
static inline void drawframe(uint16_t framenumber)
{
    loadpage(findpage(framenumber), &anim->thepage);
    renderframe(framenumber, anim->thepage);
}
Exemplo n.º 10
0
static void mainloop(void)
{
	int step = srows / PAGESTEPS;
	int hstep = scols / PAGESTEPS;
	int c;
	term_setup();
	signal(SIGCONT, sigcont);
	loadpage(num);
	srow = prow;
	scol = -scols / 2;
	draw();
	while ((c = readkey()) != -1) {
		if (c == 'q')
			break;
		if (c == 'e' && reload())
			break;
		switch (c) {	/* commands that do not require redrawing */
		case 'o':
			numdiff = num - getcount(num);
			break;
		case 'Z':
			zoom_def = getcount(zoom);
			break;
		case 'i':
			printinfo();
			break;
		case 27:
			count = 0;
			break;
		case 'm':
			setmark(readkey());
			break;
		case 'd':
			sleep(getcount(1));
			break;
		default:
			if (isdigit(c))
				count = count * 10 + c - '0';
		}
		switch (c) {	/* commands that require redrawing */
		case CTRLKEY('f'):
		case 'J':
			if (!loadpage(num + getcount(1)))
				srow = prow;
			break;
		case CTRLKEY('b'):
		case 'K':
			if (!loadpage(num - getcount(1)))
				srow = prow;
			break;
		case 'G':
			setmark('\'');
			if (!loadpage(getcount(doc_pages(doc) - numdiff) + numdiff))
				srow = prow;
			break;
		case 'O':
			numdiff = num - getcount(num);
			setmark('\'');
			if (!loadpage(num + numdiff))
				srow = prow;
			break;
		case 'z':
			zoom_page(getcount(zoom_def));
			break;
		case 'w':
			zoom_page(pcols ? zoom * scols / pcols : zoom);
			break;
		case 'W':
			if (lmargin() < rmargin())
				zoom_page(zoom * (scols - hstep) /
					(rmargin() - lmargin()));
			break;
		case 'f':
			zoom_page(prows ? zoom * srows / prows : zoom);
			break;
		case 'r':
			rotate = getcount(0);
			if (!loadpage(num))
				srow = prow;
			break;
		case '`':
		case '\'':
			jmpmark(readkey(), c == '`');
			break;
		case 'j':
			srow += step * getcount(1);
			break;
		case 'k':
			srow -= step * getcount(1);
			break;
		case 'l':
			scol += hstep * getcount(1);
			break;
		case 'h':
			scol -= hstep * getcount(1);
			break;
		case 'H':
			srow = prow;
			break;
		case 'L':
			srow = prow + prows - srows;
			break;
		case 'M':
			srow = prow + prows / 2 - srows / 2;
			break;
		case 'C':
			scol = -scols / 2;
			break;
		case ' ':
		case CTRLKEY('d'):
			srow += srows * getcount(1) - step;
			break;
		case 127:
		case CTRLKEY('u'):
			srow -= srows * getcount(1) - step;
			break;
		case '[':
			scol = pcol;
			break;
		case ']':
			scol = pcol + pcols - scols;
			break;
		case '{':
			scol = pcol + lmargin() - hstep / 2;
			break;
		case '}':
			scol = pcol + rmargin() + hstep / 2 - scols;
			break;
		case CTRLKEY('l'):
			break;
		case 'I':
			invert = !invert;
			loadpage(num);
			break;
		default:	/* no need to redraw */
			continue;
		}
		srow = MAX(prow - srows + MARGIN, MIN(prow + prows - MARGIN, srow));
		scol = MAX(pcol - scols + MARGIN, MIN(pcol + pcols - MARGIN, scol));
		draw();
	}
	term_cleanup();
}
Exemplo n.º 11
0
void drawframe (uint16 framenumber)
   {
   CheckAnimStarted ( "drawframe" );
   loadpage(findpage(framenumber), anim->thepage);
   renderframe(framenumber, anim->thepage);
   }