1  typedef struct _RenderInfo RenderInfo;
       2  struct _RenderInfo
       3  {
       4      int y;
       5      float scaley;
       6      int src_y;
       7  };
       8  
       9  static void bar(void) { }
      10  
      11  static int
      12  render_image_rgb_a (RenderInfo * info)
      13  {
      14    int y, ye;
      15    float error;
      16    float step;
      17  
      18    y = info->y;
      19    ye = 256;
      20  
      21    step = 1.0 / info->scaley;
      22  
      23    error = y * step;
      24    error -= ((int) error) - step;
      25  
      26    for (; y < ye; y++) {
      27        if (error >= 1.0) {
      28  	  info->src_y += (int) error;
      29  	  error -= (int) error;
      30  	  bar();
      31        }
      32        error += step;
      33    }
      34    return info->src_y;
      35  }
      36  
      37  int main (void)
      38  {
      39      RenderInfo info;
      40  
      41      info.y = 0;
      42      info.src_y = 0;
      43      info.scaley = 1.0;
      44  
      45      if (render_image_rgb_a(&info) != 256)
      46         abort ();
      47      exit(0);
      48  }