render.c
changeset 11 082bfaf38cf0
parent 2 69f8c0acaac7
child 18 86f2e5b7191b
--- a/render.c	Fri Jun 06 16:05:26 2008 +0300
+++ b/render.c	Fri Jun 06 18:35:46 2008 +0300
@@ -1,66 +1,91 @@
+#include <stdlib.h>
 #include <string.h>
-#include <arpa/inet.h>
 
+#include "render_internal.h"
 #include "render.h"
 
-int render_init (render_t *ctx, int mode) {
+int render_init (struct render *ctx, int mode) {
     memset(ctx, 0, sizeof(*ctx));
     
     return render_set_mode(ctx, mode);
 }
 
-int render_set_mode (render_t *ctx, int mode) {
+struct render *render_alloc () {
+    struct render *ctx;
+
+    if (!(ctx = calloc(1, sizeof(struct render))))
+        return NULL;
+
+    return ctx;
+}
+
+int render_set_mode (struct render *ctx, int mode) {
     if (mode != RENDER_RAW && mode != RENDER_PNG)
-        return RENDER_ERR;
+        return -1;
 
     ctx->mode = mode;
 
-    return RENDER_OK;
+    return 0;
 }
 
-int render_set_size (render_t *ctx, u_int32_t img_w, u_int32_t img_h) {
+int render_set_size (struct render *ctx, u_int32_t img_w, u_int32_t img_h) {
     if (img_w == 0 || img_h == 0)
-        return RENDER_ERR;
+        return -1;
 
     ctx->img_w = img_w;
     ctx->img_h = img_h;
 
-    return RENDER_OK;
+    return 0;
 }
 
-int render_region_full (render_t *ctx) {
+int render_get_size (struct render *ctx, u_int32_t *img_w, u_int32_t *img_h) {
+    *img_w = ctx->img_w;
+    *img_h = ctx->img_h;
+
+    return 0;
+}
+
+int render_region_full (struct render *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) {
+int render_region_raw (struct render *ctx, double x1, double y1, double x2, double y2) {
     if ((x1 >= x2) || (y1 >= y2))
-        return RENDER_ERR;
+        return -1;
 
     ctx->x1 = x1;
     ctx->y1 = y1;
     ctx->x2 = x2;
     ctx->y2 = y2;
 
-    return RENDER_OK;
+    return 0;
 }
 
-int render_io_custom (render_t *ctx, render_ctx_write_cb write_fn, render_ctx_flush_cb flush_fn, void *arg) {
+int render_io_custom (struct render *ctx, render_ctx_write_cb write_fn, render_ctx_flush_cb flush_fn, void *arg) {
     if (!write_fn)
-        return RENDER_ERR;
+        return -1;
 
     ctx->io_write_fn = write_fn;
     ctx->io_flush_fn = flush_fn;
-    ctx->io_cb_arg = arg;
+    ctx->cb_arg = arg;
 
-    return RENDER_OK;
+    return 0;
 }
 
-int render_io_stream (render_t *ctx, FILE *fh) {
+int render_io_stream (struct render *ctx, FILE *fh) {
     if (!fh)
-        return RENDER_ERR;
+        return -1;
 
     ctx->io_stream = fh;
 
-    return RENDER_OK;
+    return 0;
 }
 
+int render_local_mem (struct render *ctx, unsigned char **rowbuf_addr, render_ctx_row_cb row_fn, void *arg) {
+    ctx->local_rowbuf_addr = rowbuf_addr;
+    ctx->local_row_fn = row_fn;
+    ctx->cb_arg = arg;
+
+    return 0;
+}
+