--- /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 <string.h>
+#include <arpa/inet.h>
+
+#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;
+}
+