static void winblitstatusbar(pdfapp_t *app) { if (gapp.issearching) { char buf[sizeof(gapp.search) + 50]; sprintf(buf, "Search: %s", gapp.search); XSetForeground(xdpy, xgc, WhitePixel(xdpy, xscr)); fillrect(0, 0, gapp.winw, 30); windrawstring(&gapp, 10, 20, buf); } else if (showingmessage) { XSetForeground(xdpy, xgc, WhitePixel(xdpy, xscr)); fillrect(0, 0, gapp.winw, 30); windrawstring(&gapp, 10, 20, message); } else if (showingpage) { char buf[42]; snprintf(buf, sizeof buf, "Page %d/%d", gapp.pageno, gapp.pagecount); windrawstringxor(&gapp, 10, 20, buf); } }
static void winblit(pdfapp_t *app) { int image_w = fz_pixmap_width(gapp.ctx, gapp.image); int image_h = fz_pixmap_height(gapp.ctx, gapp.image); int image_n = fz_pixmap_components(gapp.ctx, gapp.image); unsigned char *image_samples = fz_pixmap_samples(gapp.ctx, gapp.image); int x0 = gapp.panx; int y0 = gapp.pany; int x1 = gapp.panx + image_w; int y1 = gapp.pany + image_h; XSetForeground(xdpy, xgc, xbgcolor.pixel); fillrect(0, 0, x0, gapp.winh); fillrect(x1, 0, gapp.winw - x1, gapp.winh); fillrect(0, 0, gapp.winw, y0); fillrect(0, y1, gapp.winw, gapp.winh - y1); XSetForeground(xdpy, xgc, xshcolor.pixel); fillrect(x0+2, y1, image_w, 2); fillrect(x1, y0+2, 2, image_h); if (gapp.iscopying || justcopied) { pdfapp_invert(&gapp, &gapp.selr); justcopied = 1; } pdfapp_inverthit(&gapp); if (image_n == 4) ximage_blit(xwin, xgc, x0, y0, image_samples, 0, 0, image_w, image_h, image_w * image_n); else if (image_n == 2) { int i = image_w*image_h; unsigned char *color = malloc(i*4); if (color) { unsigned char *s = image_samples; unsigned char *d = color; for (; i > 0 ; i--) { d[2] = d[1] = d[0] = *s++; d[3] = *s++; d += 4; } ximage_blit(xwin, xgc, x0, y0, color, 0, 0, image_w, image_h, image_w * 4); free(color); } } pdfapp_inverthit(&gapp); if (gapp.iscopying || justcopied) { pdfapp_invert(&gapp, &gapp.selr); justcopied = 1; } winblitsearch(app); if (showingpage) { char buf[42]; snprintf(buf, sizeof buf, "Page %d/%d", gapp.pageno, gapp.pagecount); windrawstringxor(&gapp, 10, 20, buf); } }