|
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 |