render.c
author Tero Marttila <terom@fixme.fi>
Sat, 31 May 2008 19:35:21 +0300
changeset 2 69f8c0acaac7
parent 1 6aa1a0d1f88d
child 11 082bfaf38cf0
permissions -rw-r--r--
working web_main that uses render_remote

committer: Tero Marttila <terom@fixme.fi>
#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;
}