int Text::expose(XEvent *ev) { drawclr(this); if(text) { if(activated_flag) drawtxt(this,gtfgnd(),xpos,ypos,text); else drawtxt(this,getgc("8x13","Dim Grey"),xpos,ypos,text); } return 0; }
void Field::draw(int new_x,int new_y,int new_w,int new_h) { drawclr(); repos(); if(!buf.size()) { // Display title if(title.size()>=gtwidth()) drawtxt(gtfgnd(),0,gtheight()/2-txth(gtfgnd())/2,title.substr(0,gtwidth())); else drawtxt(gtfgnd(),0,gtheight()/2-txth(gtfgnd())/2,title); } else { // Display edif buffer if(buf.size()-ofst>=gtwidth()) drawtxt(gtfgnd(),0,gtheight()/2-txth(gtfgnd())/2,buf.substr(ofst,gtwidth())); else drawtxt(gtfgnd(),0,gtheight()/2-txth(gtfgnd())/2,buf.substr(ofst,buf.size()-ofst)); } }
void drawpages(char *pagelist) { int page, spage, epage; char *spec, *dash; if (!src) drawusage(); spec = strsep(&pagelist, ","); while (spec) { dash = strchr(spec, '-'); if (dash == spec) spage = epage = 1; else spage = epage = atoi(spec); if (dash) { if (strlen(dash) > 1) epage = atoi(dash + 1); else epage = pdf_getpagecount(srcpages); } if (spage > epage) page = spage, spage = epage, epage = page; for (page = spage; page <= epage; page++) { if (page < 1 || page > pdf_getpagecount(srcpages)) continue; switch (drawmode) { case DRAWPNM: drawpnm(page); break; case DRAWTXT: drawtxt(page); break; case DRAWXML: drawxml(page); break; } } spec = strsep(&pagelist, ","); } }
static void drawpages(char *pagelist) { int page, spage, epage; char *spec, *dash; struct benchmark loadtimes, drawtimes; if (!xref) drawusage(); if (benchmark) { memset(&loadtimes, 0x00, sizeof (loadtimes)); loadtimes.min = LONG_MAX; memset(&drawtimes, 0x00, sizeof (drawtimes)); drawtimes.min = LONG_MAX; } spec = strsep(&pagelist, ","); while (spec) { dash = strchr(spec, '-'); if (dash == spec) spage = epage = 1; else spage = epage = atoi(spec); if (dash) { if (strlen(dash) > 1) epage = atoi(dash + 1); else epage = pagecount; } if (spage > epage) page = spage, spage = epage, epage = page; if (spage < 1) spage = 1; if (epage > pagecount) epage = pagecount; printf("Drawing pages %d-%d...\n", spage, epage); for (page = spage; page <= epage; page++) { switch (drawmode) { case DRAWPNM: drawpnm(page, &loadtimes, &drawtimes); break; case DRAWTXT: drawtxt(page); break; case DRAWXML: drawxml(page); break; } } spec = strsep(&pagelist, ","); } if (benchmark) { if (loadtimes.pages > 0) { loadtimes.avg /= loadtimes.pages; drawtimes.avg /= drawtimes.pages; printf("benchmark[load]: min: %6.3fs (page % 4d), avg: %6.3fs, max: %6.3fs (page % 4d)\n", loadtimes.min / 1000000.0, loadtimes.minpage, loadtimes.avg / 1000000.0, loadtimes.max / 1000000.0, loadtimes.maxpage); printf("benchmark[draw]: min: %6.3fs (page % 4d), avg: %6.3fs, max: %6.3fs (page % 4d)\n", drawtimes.min / 1000000.0, drawtimes.minpage, drawtimes.avg / 1000000.0, drawtimes.max / 1000000.0, drawtimes.maxpage); } } }
void Edit::draw(int new_x,int new_y,int new_w,int new_h) { // Check for cursor position change repos(); if(!buf.eof->byte) { // Buffer is empty, so just display title drawclr(); drawtxt(gtfgnd(),0,0,title); } else { // Display edit buffer int y; String bf(new_w); Pointer *p=top->clone(); for(y=0;y!=gtheight();++y) if(y>=new_y && y<new_y+new_h) { // We need to draw this line long col; int c; drawclr(new_x,y,new_w,1); col=0; while(col<new_x+new_w+loffset) { c=p->getc(); if(c==-1) break; if(c=='\n') break; if(c=='\t') { do { if(col>=new_x+loffset && col<new_x+new_w+loffset) bf[col-loffset-new_x]=' '; ++col; } while(col&7); } else { if(col>=new_x+loffset && col<new_x+new_w+loffset) bf[col-loffset-new_x]=c; ++col; } } while(col<loffset+new_x+new_w) { if(col>=loffset+new_x) bf[col-loffset-new_x]=' '; ++col; } // Draw the buffer drawtxt(gtfgnd(),new_x,y,bf); // Move to next line if we're not already there if(c==-1 || (c!='\n' && !p->nextl())) { ++y; break; } } else if(!p->nextl()) { ++y; break; } for(;y!=gtheight();++y) if(y>=new_y && y<new_y+new_h) { // We need to erase this line drawclr(new_x,y,new_w,1); } p->rm(); } }