void abort(void);
void exit(int);

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);
}
