equal
deleted
inserted
replaced
|
1 #include <stdlib.h> |
|
2 #include <assert.h> |
|
3 |
|
4 #include "common.h" |
|
5 #include "render_internal.h" |
|
6 #include "render_local.h" |
|
7 #include "render_png.h" |
|
8 #include "mandelbrot.h" |
|
9 |
|
10 int render_local (struct render *render, double *duration) { |
|
11 assert(render->mode == RENDER_PNG); |
|
12 |
|
13 unsigned char *rowbuf = NULL; |
|
14 struct render_png *png_ctx = NULL; |
|
15 |
|
16 *duration = -1; |
|
17 |
|
18 // alloc the memory buffer |
|
19 if (!(rowbuf = malloc(render->img_w))) |
|
20 ERROR("malloc"); |
|
21 |
|
22 // the render_png stuff |
|
23 if (!(png_ctx = render_png_init(render))) |
|
24 ERROR("render_png_init"); |
|
25 |
|
26 // set render_* to use it |
|
27 if (render_local_mem(render, &rowbuf, (int(*)(void *arg, unsigned char *)) &render_png_row, png_ctx)) |
|
28 ERROR("render_local_mem"); |
|
29 |
|
30 // then we can actually render |
|
31 if (duration ? render_mandelbrot_timed(render, duration) : render_mandelbrot(render)) |
|
32 ERROR("render_mandelbrot"); |
|
33 |
|
34 // success |
|
35 return 0; |
|
36 |
|
37 error: |
|
38 free(rowbuf); |
|
39 free(png_ctx); |
|
40 |
|
41 return -1; |
|
42 } |
|
43 |