diff -r 5b010627d7ed -r 6aa1a0d1f88d render.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/render.c Sat May 31 02:22:27 2008 +0300 @@ -0,0 +1,77 @@ +#include +#include + +#include "render.h" + +int render_init (render_t *ctx, int mode) { + memset(ctx, 0, sizeof(*ctx)); + + return render_set_mode(ctx, mode); +} + +int render_set_mode (render_t *ctx, int mode) { + if (mode != RENDER_RAW && mode != RENDER_PNG) + return RENDER_ERR; + + ctx->mode = mode; + + return RENDER_OK; +} + +int render_set_size (render_t *ctx, u_int32_t img_w, u_int32_t img_h) { + if (img_w == 0 || img_h == 0) + return RENDER_ERR; + + ctx->img_w = img_w; + ctx->img_h = img_h; + + return RENDER_OK; +} + +int render_region_full (render_t *ctx) { + return render_region_raw(ctx, REGION_X1, REGION_Y1, REGION_X2, REGION_Y2); +} + +int render_region_raw (render_t *ctx, double x1, double y1, double x2, double y2) { + if ((x1 >= x2) || (y1 >= y2)) + return RENDER_ERR; + + ctx->x1 = x1; + ctx->y1 = y1; + ctx->x2 = x2; + ctx->y2 = y2; + + return RENDER_OK; +} + +int render_io_custom (render_t *ctx, render_ctx_write_cb write_fn, render_ctx_flush_cb flush_fn, void *arg) { + if (!write_fn) + return RENDER_ERR; + + ctx->io_write_fn = write_fn; + ctx->io_flush_fn = flush_fn; + ctx->io_cb_arg = arg; + + return RENDER_OK; +} + +int render_io_stream (render_t *ctx, FILE *fh) { + if (!fh) + return RENDER_ERR; + + ctx->io_stream = fh; + + return RENDER_OK; +} + +int render_cmd_build (render_t *ctx, struct render_cmd *cmd) { + cmd->img_w = htonl(ctx->img_w); + cmd->img_h = htonl(ctx->img_h); + cmd->x1 = ctx->x1; + cmd->y1 = ctx->y1; + cmd->x2 = ctx->x2; + cmd->y2 = ctx->y2; + + return RENDER_OK; +} +