void i_box_cfill(i_img *im,i_img_dim x1,i_img_dim y1,i_img_dim x2,i_img_dim y2,i_fill_t *fill) { i_render r; dIMCTXim(im); im_log((aIMCTX,1,"i_box_cfill(im* %p, p1(" i_DFp "), p2(" i_DFp "), fill %p)\n", im, i_DFcp(x1, y1), i_DFcp(x2,y2), fill)); ++x2; if (x1 < 0) x1 = 0; if (y1 < 0) y1 = 0; if (x2 > im->xsize) x2 = im->xsize; if (y2 >= im->ysize) y2 = im->ysize-1; if (x1 >= x2 || y1 > y2) return; i_render_init(&r, im, x2-x1); while (y1 <= y2) { i_render_fill(&r, x1, y1, x2-x1, NULL, fill); ++y1; } i_render_done(&r); }
static void cfill_from_btm(i_img *im, i_fill_t *fill, struct i_bitmap *btm, i_img_dim bxmin, i_img_dim bxmax, i_img_dim bymin, i_img_dim bymax) { i_img_dim x, y; i_img_dim start; i_render r; i_render_init(&r, im, bxmax - bxmin + 1); for(y=bymin; y<=bymax; y++) { x = bxmin; while (x <= bxmax) { while (x <= bxmax && !btm_test(btm, x, y)) { ++x; } if (btm_test(btm, x, y)) { start = x; while (x <= bxmax && btm_test(btm, x, y)) { ++x; } i_render_fill(&r, start, y, x-start, NULL, fill); } } } i_render_done(&r); }
static void i_tt_dump_raster_map2( i_img* im, TT_Raster_Map* bit, i_img_dim xb, i_img_dim yb, const i_color *cl, int smooth ) { unsigned char *bmap; i_img_dim x, y; mm_log((1,"i_tt_dump_raster_map2(im %p, bit %p, xb %" i_DF ", yb %" i_DF ", cl %p)\n", im, bit, i_DFc(xb), i_DFc(yb), cl)); bmap = bit->bitmap; if ( smooth ) { i_render r; i_render_init(&r, im, bit->cols); for(y=0;y<bit->rows;y++) { i_render_color(&r, xb, yb+y, bit->cols, bmap + y*bit->cols, cl); } i_render_done(&r); } else { unsigned char *bmp = mymalloc(bit->width); i_render r; i_render_init(&r, im, bit->width); for(y=0;y<bit->rows;y++) { unsigned mask = 0x80; unsigned char *p = bmap + y * bit->cols; unsigned char *pout = bmp; for(x = 0; x < bit->width; x++) { *pout++ = (*p & mask) ? 0xFF : 0; mask >>= 1; if (!mask) { mask = 0x80; ++p; } } i_render_color(&r, xb, yb+y, bit->width, bmp, cl); } i_render_done(&r); myfree(bmp); } }