author | Tero Marttila <terom@fixme.fi> |
Mon, 09 Jun 2008 03:15:34 +0300 | |
changeset 17 | 8e8b56b0e0f5 |
parent 13 | ee426f453cf5 |
child 23 | 31307efd7e78 |
permissions | -rw-r--r-- |
11
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
1 |
#include <stdlib.h> |
12
43297144f196
* rename files, render_file -> file_main, render_node -> node_main, mandelbrot -> render_mandelbrot
Tero Marttila <terom@fixme.fi>
parents:
11
diff
changeset
|
2 |
#include <time.h> |
11
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
3 |
#include <assert.h> |
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
4 |
|
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
5 |
#include "common.h" |
17
8e8b56b0e0f5
a half-working render_slices. Render_multi is currently semantically broken/buggy, but it's time to go to sleep
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
6 |
#include "render_struct.h" |
11
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
7 |
#include "render_local.h" |
17
8e8b56b0e0f5
a half-working render_slices. Render_multi is currently semantically broken/buggy, but it's time to go to sleep
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
8 |
#include "render_png_struct.h" |
11
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
9 |
#include "render_png.h" |
17
8e8b56b0e0f5
a half-working render_slices. Render_multi is currently semantically broken/buggy, but it's time to go to sleep
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
10 |
#include "render_raw_struct.h" |
13
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
11 |
#include "render_raw.h" |
12
43297144f196
* rename files, render_file -> file_main, render_node -> node_main, mandelbrot -> render_mandelbrot
Tero Marttila <terom@fixme.fi>
parents:
11
diff
changeset
|
12 |
#include "render_mandelbrot.h" |
11
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
13 |
|
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
14 |
int render_local (struct render *render, double *duration) { |
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
15 |
unsigned char *rowbuf = NULL; |
17
8e8b56b0e0f5
a half-working render_slices. Render_multi is currently semantically broken/buggy, but it's time to go to sleep
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
16 |
struct render_png png_ctx; |
8e8b56b0e0f5
a half-working render_slices. Render_multi is currently semantically broken/buggy, but it's time to go to sleep
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
17 |
struct render_raw raw_ctx; |
12
43297144f196
* rename files, render_file -> file_main, render_node -> node_main, mandelbrot -> render_mandelbrot
Tero Marttila <terom@fixme.fi>
parents:
11
diff
changeset
|
18 |
clock_t t1, t2; |
43297144f196
* rename files, render_file -> file_main, render_node -> node_main, mandelbrot -> render_mandelbrot
Tero Marttila <terom@fixme.fi>
parents:
11
diff
changeset
|
19 |
|
43297144f196
* rename files, render_file -> file_main, render_node -> node_main, mandelbrot -> render_mandelbrot
Tero Marttila <terom@fixme.fi>
parents:
11
diff
changeset
|
20 |
if (duration) |
43297144f196
* rename files, render_file -> file_main, render_node -> node_main, mandelbrot -> render_mandelbrot
Tero Marttila <terom@fixme.fi>
parents:
11
diff
changeset
|
21 |
*duration = -1; |
11
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
22 |
|
17
8e8b56b0e0f5
a half-working render_slices. Render_multi is currently semantically broken/buggy, but it's time to go to sleep
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
23 |
// ugh |
8e8b56b0e0f5
a half-working render_slices. Render_multi is currently semantically broken/buggy, but it's time to go to sleep
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
24 |
memset(&png_ctx, 0, sizeof(png_ctx)); |
8e8b56b0e0f5
a half-working render_slices. Render_multi is currently semantically broken/buggy, but it's time to go to sleep
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
25 |
memset(&raw_ctx, 0, sizeof(raw_ctx)); |
8e8b56b0e0f5
a half-working render_slices. Render_multi is currently semantically broken/buggy, but it's time to go to sleep
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
26 |
|
11
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
27 |
// alloc the memory buffer |
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
28 |
if (!(rowbuf = malloc(render->img_w))) |
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
29 |
ERROR("malloc"); |
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
30 |
|
13
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
31 |
// what mode? |
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
32 |
switch (render->mode) { |
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
33 |
case RENDER_PNG : |
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
34 |
// the render_png stuff |
17
8e8b56b0e0f5
a half-working render_slices. Render_multi is currently semantically broken/buggy, but it's time to go to sleep
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
35 |
if (render_png_init(&png_ctx, render)) |
13
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
36 |
ERROR("render_png_init"); |
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
37 |
|
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
38 |
// set render_* to use the render_png |
17
8e8b56b0e0f5
a half-working render_slices. Render_multi is currently semantically broken/buggy, but it's time to go to sleep
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
39 |
if (render_local_mem(render, &rowbuf, (int(*)(void *arg, unsigned char *)) &render_png_row, &png_ctx)) |
13
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
40 |
ERROR("render_local_mem"); |
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
41 |
|
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
42 |
break; |
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
43 |
|
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
44 |
case RENDER_RAW : |
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
45 |
// the render_raw stuff |
17
8e8b56b0e0f5
a half-working render_slices. Render_multi is currently semantically broken/buggy, but it's time to go to sleep
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
46 |
if (render_raw_init(&raw_ctx, render)) |
13
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
47 |
ERROR("render_raw_init"); |
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
48 |
|
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
49 |
// set render_* to use the render_raw |
17
8e8b56b0e0f5
a half-working render_slices. Render_multi is currently semantically broken/buggy, but it's time to go to sleep
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
50 |
if (render_local_mem(render, &rowbuf, (int(*)(void *arg, unsigned char *)) &render_raw_row, &raw_ctx)) |
13
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
51 |
ERROR("render_local_mem"); |
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
52 |
|
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
53 |
break; |
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
54 |
|
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
55 |
default : |
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
56 |
assert(0); |
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
57 |
} |
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
58 |
|
11
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
59 |
// then we can actually render |
12
43297144f196
* rename files, render_file -> file_main, render_node -> node_main, mandelbrot -> render_mandelbrot
Tero Marttila <terom@fixme.fi>
parents:
11
diff
changeset
|
60 |
t1 = clock(); |
43297144f196
* rename files, render_file -> file_main, render_node -> node_main, mandelbrot -> render_mandelbrot
Tero Marttila <terom@fixme.fi>
parents:
11
diff
changeset
|
61 |
|
43297144f196
* rename files, render_file -> file_main, render_node -> node_main, mandelbrot -> render_mandelbrot
Tero Marttila <terom@fixme.fi>
parents:
11
diff
changeset
|
62 |
if (render_mandelbrot(render)) |
11
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
63 |
ERROR("render_mandelbrot"); |
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
64 |
|
12
43297144f196
* rename files, render_file -> file_main, render_node -> node_main, mandelbrot -> render_mandelbrot
Tero Marttila <terom@fixme.fi>
parents:
11
diff
changeset
|
65 |
t2 = clock(); |
43297144f196
* rename files, render_file -> file_main, render_node -> node_main, mandelbrot -> render_mandelbrot
Tero Marttila <terom@fixme.fi>
parents:
11
diff
changeset
|
66 |
|
43297144f196
* rename files, render_file -> file_main, render_node -> node_main, mandelbrot -> render_mandelbrot
Tero Marttila <terom@fixme.fi>
parents:
11
diff
changeset
|
67 |
// calculate the time taken |
43297144f196
* rename files, render_file -> file_main, render_node -> node_main, mandelbrot -> render_mandelbrot
Tero Marttila <terom@fixme.fi>
parents:
11
diff
changeset
|
68 |
if (duration) |
43297144f196
* rename files, render_file -> file_main, render_node -> node_main, mandelbrot -> render_mandelbrot
Tero Marttila <terom@fixme.fi>
parents:
11
diff
changeset
|
69 |
*duration = ((double)(t2 - t1))/CLOCKS_PER_SEC; |
43297144f196
* rename files, render_file -> file_main, render_node -> node_main, mandelbrot -> render_mandelbrot
Tero Marttila <terom@fixme.fi>
parents:
11
diff
changeset
|
70 |
|
11
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
71 |
// success |
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
72 |
return 0; |
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
73 |
|
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
74 |
error: |
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
75 |
free(rowbuf); |
13
ee426f453cf5
* fix some (of the) stupid things in Makefile
Tero Marttila <terom@fixme.fi>
parents:
12
diff
changeset
|
76 |
|
17
8e8b56b0e0f5
a half-working render_slices. Render_multi is currently semantically broken/buggy, but it's time to go to sleep
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
77 |
render_png_deinit(&png_ctx); |
8e8b56b0e0f5
a half-working render_slices. Render_multi is currently semantically broken/buggy, but it's time to go to sleep
Tero Marttila <terom@fixme.fi>
parents:
13
diff
changeset
|
78 |
render_raw_deinit(&raw_ctx); |
11
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
79 |
|
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
80 |
return -1; |
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
81 |
} |
082bfaf38cf0
* massive structural rewrite. Split off code into several new modules (render, render_png, render_local) and updated new modules to use them.
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
82 |