render.c
changeset 1 6aa1a0d1f88d
child 2 69f8c0acaac7
equal deleted inserted replaced
0:5b010627d7ed 1:6aa1a0d1f88d
       
     1 #include <string.h>
       
     2 #include <arpa/inet.h>
       
     3 
       
     4 #include "render.h"
       
     5 
       
     6 int render_init (render_t *ctx, int mode) {
       
     7     memset(ctx, 0, sizeof(*ctx));
       
     8     
       
     9     return render_set_mode(ctx, mode);
       
    10 }
       
    11 
       
    12 int render_set_mode (render_t *ctx, int mode) {
       
    13     if (mode != RENDER_RAW && mode != RENDER_PNG)
       
    14         return RENDER_ERR;
       
    15 
       
    16     ctx->mode = mode;
       
    17 
       
    18     return RENDER_OK;
       
    19 }
       
    20 
       
    21 int render_set_size (render_t *ctx, u_int32_t img_w, u_int32_t img_h) {
       
    22     if (img_w == 0 || img_h == 0)
       
    23         return RENDER_ERR;
       
    24 
       
    25     ctx->img_w = img_w;
       
    26     ctx->img_h = img_h;
       
    27 
       
    28     return RENDER_OK;
       
    29 }
       
    30 
       
    31 int render_region_full (render_t *ctx) {
       
    32     return render_region_raw(ctx, REGION_X1, REGION_Y1, REGION_X2, REGION_Y2);
       
    33 }
       
    34 
       
    35 int render_region_raw (render_t *ctx, double x1, double y1, double x2, double y2) {
       
    36     if ((x1 >= x2) || (y1 >= y2))
       
    37         return RENDER_ERR;
       
    38 
       
    39     ctx->x1 = x1;
       
    40     ctx->y1 = y1;
       
    41     ctx->x2 = x2;
       
    42     ctx->y2 = y2;
       
    43 
       
    44     return RENDER_OK;
       
    45 }
       
    46 
       
    47 int render_io_custom (render_t *ctx, render_ctx_write_cb write_fn, render_ctx_flush_cb flush_fn, void *arg) {
       
    48     if (!write_fn)
       
    49         return RENDER_ERR;
       
    50 
       
    51     ctx->io_write_fn = write_fn;
       
    52     ctx->io_flush_fn = flush_fn;
       
    53     ctx->io_cb_arg = arg;
       
    54 
       
    55     return RENDER_OK;
       
    56 }
       
    57 
       
    58 int render_io_stream (render_t *ctx, FILE *fh) {
       
    59     if (!fh)
       
    60         return RENDER_ERR;
       
    61 
       
    62     ctx->io_stream = fh;
       
    63 
       
    64     return RENDER_OK;
       
    65 }
       
    66 
       
    67 int render_cmd_build (render_t *ctx, struct render_cmd *cmd) {
       
    68    cmd->img_w = htonl(ctx->img_w);
       
    69    cmd->img_h = htonl(ctx->img_h);
       
    70    cmd->x1 = ctx->x1;
       
    71    cmd->y1 = ctx->y1;
       
    72    cmd->x2 = ctx->x2;
       
    73    cmd->y2 = ctx->y2;
       
    74 
       
    75    return RENDER_OK;
       
    76 }
       
    77