int i_box_filledf(i_img *im,i_img_dim x1,i_img_dim y1,i_img_dim x2,i_img_dim y2, const i_fcolor *val) { i_img_dim x, y, width; dIMCTXim(im); im_log((aIMCTX, 1,"i_box_filledf(im* %p, p1(" i_DFp "), p2(" i_DFp "),val %p)\n", im, i_DFcp(x1, y1), i_DFcp(x2, y2), val)); if (x1 > x2 || y1 > y2 || x2 < 0 || y2 < 0 || x1 >= im->xsize || y1 > im->ysize) return 0; if (x1 < 0) x1 = 0; if (x2 >= im->xsize) x2 = im->xsize - 1; if (y1 < 0) y1 = 0; if (y2 >= im->ysize) y2 = im->ysize - 1; width = x2 - x1 + 1; if (im->bits <= 8) { i_color c; c.rgba.r = SampleFTo8(val->rgba.r); c.rgba.g = SampleFTo8(val->rgba.g); c.rgba.b = SampleFTo8(val->rgba.b); c.rgba.a = SampleFTo8(val->rgba.a); i_box_filled(im, x1, y1, x2, y2, &c); } else { i_fcolor *line = mymalloc(sizeof(i_fcolor) * width); for (x = 0; x < width; ++x) line[x] = *val; for (y = y1; y <= y2; ++y) i_plinf(im, x1, x2+1, y, line); myfree(line); } return 1; }
i_img_dim (i_plinf)(i_img *im, i_img_dim l, i_img_dim r, i_img_dim y, const i_fcolor *vals) { return i_plinf(im, l, r, y, vals); }