Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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);
}