Tachyon (current)  Current Main Branch
glwin.h
Go to the documentation of this file.
1 /*
2  * glwin.h -- Simple self-contained code for opening an
3  * OpenGL-capable display window with a double
4  * buffered mono or stereoscopic visual.
5  * This code is primarily meant for 2-D image display
6  * usage or for trivial 3-D rendering usage without
7  * any GLX/WGL extensions that have to be enumerated
8  * prior to window creation.
9  I
10  * This file is part of the Tachyon ray tracer.
11  * John E. Stone - john.stone@gmail.com
12  *
13  * (C) Copyright 1994-2022 John E. Stone
14  * SPDX-License-Identifier: BSD-3-Clause
15  *
16  * $Id: glwin.h,v 1.44 2022/02/18 18:18:36 johns Exp $
17  *
18  */
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 #define GLWIN_SUCCESS 0
25 #define GLWIN_ERROR -1
26 #define GLWIN_NOT_IMPLEMENTED -2
27 
28 #define GLWIN_EV_POLL_NONBLOCK 0
29 #define GLWIN_EV_POLL_BLOCK 1
30 
31 #define GLWIN_EV_NONE 0
32 
33 #define GLWIN_EV_KBD 1
35 #define GLWIN_EV_KBD_UP 2
36 #define GLWIN_EV_KBD_DOWN 3
37 #define GLWIN_EV_KBD_LEFT 4
38 #define GLWIN_EV_KBD_RIGHT 5
39 #define GLWIN_EV_KBD_PAGE_UP 6
40 #define GLWIN_EV_KBD_PAGE_DOWN 7
41 #define GLWIN_EV_KBD_HOME 8
42 #define GLWIN_EV_KBD_END 9
43 #define GLWIN_EV_KBD_INSERT 10
44 #define GLWIN_EV_KBD_DELETE 11
45 
46 #define GLWIN_EV_KBD_F1 12
47 #define GLWIN_EV_KBD_F2 13
48 #define GLWIN_EV_KBD_F3 14
49 #define GLWIN_EV_KBD_F4 15
50 #define GLWIN_EV_KBD_F5 16
51 #define GLWIN_EV_KBD_F6 17
52 #define GLWIN_EV_KBD_F7 18
53 #define GLWIN_EV_KBD_F8 19
54 #define GLWIN_EV_KBD_F9 20
55 #define GLWIN_EV_KBD_F10 21
56 #define GLWIN_EV_KBD_F11 22
57 #define GLWIN_EV_KBD_F12 23
58 
59 #define GLWIN_EV_KBD_ESC 24
60 
61 #define GLWIN_EV_MOUSE_MOVE 31
62 
63 #define GLWIN_EV_MOUSE_LEFT 32
64 #define GLWIN_EV_MOUSE_MIDDLE 34
65 #define GLWIN_EV_MOUSE_RIGHT 35
66 #define GLWIN_EV_MOUSE_WHEELUP 36
67 #define GLWIN_EV_MOUSE_WHEELDOWN 37
68 
69 #define GLWIN_EV_WINDOW_CLOSE 128
71 #define GLWIN_STEREO_OFF 0
72 #define GLWIN_STEREO_OVERUNDER 1
73 
74 void * glwin_create(const char * wintitle, int width, int height);
75 void glwin_destroy(void * voidhandle);
76 void glwin_swap_buffers(void * voidhandle);
77 int glwin_handle_events(void * voidhandle, int evblockmode);
78 int glwin_get_wininfo(void * voidhandle, int *instereo, int *havestencil);
79 int glwin_get_winsize(void * voidhandle, int *xsize, int *ysize);
80 int glwin_get_winpos(void * voidhandle, int *xpos, int *ypos);
81 int glwin_get_mousepointer(void *voidhandle, int *x, int *y);
82 int glwin_get_lastevent(void * voidhandle, int *evdev, int *evval, char *evkey);
83 int glwin_get_spaceball(void *voidhandle, int *rx, int *ry, int *rz, int *tx, int *ty, int *tz, int *buttons);
84 int glwin_spaceball_available(void *voidhandle);
85 int glwin_resize(void *voidhandle, int width, int height);
86 int glwin_reposition(void *voidhandle, int xpos, int ypos);
87 int glwin_fullscreen(void * voidhandle, int fson, int xinescreen);
88 int glwin_query_extension(const char *extname);
89 int glwin_query_vsync(void *voidhandle, int *onoff);
90 
91 void glwin_draw_image(void * voidhandle, int ixs, int iys, unsigned char * img);
92 void glwin_draw_image_rgb3u(void *voidhandle, int stereomode, int ixs, int iys,
93  const unsigned char *rgb3u);
94 void glwin_draw_image_tex_rgb3u(void *voidhandle,
95  int stereomode, int ixs, int iys,
96  const unsigned char *rgb3u);
97 
98 void glwin_draw_sphere_tex(float rad, int res, float txlatstart, float txlatend);
99 void glwin_spheremap_upload_tex_rgb3u(void *voidhandle, int ixs, int iys,
100  const unsigned char *rgb3u);
101 void glwin_spheremap_draw_prepare(void *voidhandle);
102 void glwin_spheremap_draw_tex(void *voidhandle,
103  int stereomode, int ixs, int iys,
104  const float *hmdquat,
105  float fov, float rad, int res);
106 
107 int glwin_fbo_target_bind(void *voidhandle, void *voidtarget);
108 int glwin_fbo_target_unbind(void *voidhandle, void *voidtarget);
109 int glwin_fbo_target_destroy(void *voidhandle, void *voidtarget);
110 int glwin_fbo_target_resize(void *voidhandle, void *voidtarget, int width, int height);
111 void *glwin_fbo_target_create(void *voidhandle, int width, int height);
112 int glwin_fbo_target_draw_normal(void *voidhandle, void *voidtarget);
113 int glwin_fbo_target_draw_fbo(void *voidhandle, void *voidtarget, int width, int height);
114 void * glwin_spheremap_create_hmd_warp(void *vwin, int wsx, int wsy, int wrot,
115  int warpdivs, int ixs, int iys,
116  const float *user_coeffs);
117 void glwin_spheremap_destroy_hmd_warp(void *vwin, void *voidwarp);
118 void glwin_spheremap_update_hmd_warp(void *vwin, void *voidwarp,
119  int wsx, int wsy,
120  int warpdivs, int ixs, int iys,
121  const float *user_coeffs, int forceupdate);
122 int glwin_spheremap_draw_hmd_warp(void *vwin, void *voidwarp,
123  int drawimage, int drawlines, int chromcorr,
124  int wsx, int wsy,
125  int ixs, int iys, const float *hmdquat,
126  float fov, float rad, int hmd_spres);
127 
128 #ifdef __cplusplus
129 }
130 #endif
131 
void * glwin_fbo_target_create(void *voidhandle, int width, int height)
void glwin_spheremap_upload_tex_rgb3u(void *voidhandle, int ixs, int iys, const unsigned char *rgb3u)
Definition: glwin.c:3378
int glwin_get_mousepointer(void *voidhandle, int *x, int *y)
Definition: glwin.c:3343
void glwin_spheremap_destroy_hmd_warp(void *vwin, void *voidwarp)
int glwin_reposition(void *voidhandle, int xpos, int ypos)
Definition: glwin.c:3396
int glwin_get_wininfo(void *voidhandle, int *instereo, int *havestencil)
Definition: glwin.c:3331
int glwin_spheremap_draw_hmd_warp(void *vwin, void *voidwarp, int drawimage, int drawlines, int chromcorr, int wsx, int wsy, int ixs, int iys, const float *hmdquat, float fov, float rad, int hmd_spres)
int glwin_get_winsize(void *voidhandle, int *xsize, int *ysize)
Definition: glwin.c:3335
int glwin_spaceball_available(void *voidhandle)
Definition: glwin.c:3404
int glwin_fbo_target_draw_fbo(void *voidhandle, void *voidtarget, int width, int height)
int glwin_fullscreen(void *voidhandle, int fson, int xinescreen)
Definition: glwin.c:3400
int glwin_get_lastevent(void *voidhandle, int *evdev, int *evval, char *evkey)
Definition: glwin.c:3347
void * glwin_create(const char *wintitle, int width, int height)
Definition: glwin.c:3315
void glwin_swap_buffers(void *voidhandle)
Definition: glwin.c:3323
void glwin_spheremap_draw_prepare(void *voidhandle)
Definition: glwin.c:3374
int glwin_fbo_target_destroy(void *voidhandle, void *voidtarget)
int glwin_fbo_target_bind(void *voidhandle, void *voidtarget)
void glwin_spheremap_draw_tex(void *voidhandle, int stereomode, int ixs, int iys, const float *hmdquat, float fov, float rad, int res)
void glwin_draw_image(void *voidhandle, int ixs, int iys, unsigned char *img)
Definition: glwin.c:3359
int glwin_get_winpos(void *voidhandle, int *xpos, int *ypos)
Definition: glwin.c:3339
void glwin_spheremap_update_hmd_warp(void *vwin, void *voidwarp, int wsx, int wsy, int warpdivs, int ixs, int iys, const float *user_coeffs, int forceupdate)
void glwin_draw_sphere_tex(float rad, int res, float txlatstart, float txlatend)
Definition: glwin.c:3383
int glwin_fbo_target_unbind(void *voidhandle, void *voidtarget)
int glwin_fbo_target_draw_normal(void *voidhandle, void *voidtarget)
int glwin_query_vsync(void *voidhandle, int *onoff)
Definition: glwin.c:3355
void glwin_destroy(void *voidhandle)
Definition: glwin.c:3319
int glwin_handle_events(void *voidhandle, int evblockmode)
Definition: glwin.c:3327
void * glwin_spheremap_create_hmd_warp(void *vwin, int wsx, int wsy, int wrot, int warpdivs, int ixs, int iys, const float *user_coeffs)
int glwin_get_spaceball(void *voidhandle, int *rx, int *ry, int *rz, int *tx, int *ty, int *tz, int *buttons)
Definition: glwin.c:3408
void glwin_draw_image_tex_rgb3u(void *voidhandle, int stereomode, int ixs, int iys, const unsigned char *rgb3u)
Definition: glwin.c:3368
void glwin_draw_image_rgb3u(void *voidhandle, int stereomode, int ixs, int iys, const unsigned char *rgb3u)
Definition: glwin.c:3363
int glwin_query_extension(const char *extname)
Definition: glwin.c:3351
int glwin_resize(void *voidhandle, int width, int height)
Definition: glwin.c:3392
int glwin_fbo_target_resize(void *voidhandle, void *voidtarget, int width, int height)