| typedef struct _RenderInfo RenderInfo; |
| struct _RenderInfo |
| { |
| int y; |
| float scaley; |
| int src_y; |
| }; |
| |
| static void bar(void) { } |
| |
| static int |
| render_image_rgb_a (RenderInfo * info) |
| { |
| int y, ye; |
| float error; |
| float step; |
| |
| y = info->y; |
| ye = 256; |
| |
| step = 1.0 / info->scaley; |
| |
| error = y * step; |
| error -= ((int) error) - step; |
| |
| for (; y < ye; y++) { |
| if (error >= 1.0) { |
| info->src_y += (int) error; |
| error -= (int) error; |
| bar(); |
| } |
| error += step; |
| } |
| return info->src_y; |
| } |
| |
| int main (void) |
| { |
| RenderInfo info; |
| |
| info.y = 0; |
| info.src_y = 0; |
| info.scaley = 1.0; |
| |
| if (render_image_rgb_a(&info) != 256) |
| abort (); |
| exit(0); |
| } |