0602831b22adc09e447d31fbeeed1fc4cbce592f
[voxscape] / src / voxscape.h
1 #ifndef VOXSCAPE_H_
2 #define VOXSCAPE_H_
3
4 #include <stdint.h>
5
6 enum {
7         VOX_NEAREST,
8         VOX_LINEAR
9 };
10
11 struct voxscape;
12
13 #define VOX_RGB(r, g, b)        \
14         ((uint32_t)(r) | ((uint32_t)(g) << 8) | ((uint32_t)(b) << 16))
15
16 struct voxscape *vox_create(int xsz, int ysz);
17 struct voxscape *vox_open(const char *hfile, const char *cfile);
18 void vox_free(struct voxscape *vox);
19
20 void vox_fog(struct voxscape *vox, int zstart, uint32_t color);
21 int vox_height(struct voxscape *vox, int32_t x, int32_t y);
22
23 void vox_filter(struct voxscape *vox, int hfilt, int cfilt);
24
25 void vox_framebuf(struct voxscape *vox, int xres, int yres, uint32_t *fb, int horizon);
26 /* negative height for auto at -h above terrain */
27 void vox_view(struct voxscape *vox, int32_t x, int32_t y, int h, int32_t angle);
28 void vox_proj(struct voxscape *vox, int fov, int znear, int zfar);
29
30 void vox_render(struct voxscape *vox);
31
32 void vox_begin(struct voxscape *vox);
33 void vox_render_slice(struct voxscape *vox, int n);
34
35 void vox_sky_solid(struct voxscape *vox, uint32_t color);
36 void vox_sky_grad(struct voxscape *vox, uint32_t chor, uint32_t ctop);
37
38 #endif  /* VOXSCAPE_H_ */