render.c
changeset 1 6aa1a0d1f88d
child 2 69f8c0acaac7
--- /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;
+}
+