22#if defined(OPENGL_X11)
26#elif defined(OPENGL_AQUA)
28#include <OpenGL/glu.h>
29#if defined(OPENGL_AGL)
32#elif defined(OPENGL_WINDOWS)
42#define USE_GL_NORMALIZE
44#define RED_MASK 0x000000FF
45#define GRN_MASK 0x0000FF00
46#define BLU_MASK 0x00FF0000
47#define ALP_MASK 0xFF000000
49#define INT_TO_RED(i, r) (r = (i & RED_MASK))
50#define INT_TO_GRN(i, g) (g = (i & GRN_MASK) >> 8)
51#define INT_TO_BLU(i, b) (b = (i & BLU_MASK) >> 16)
52#define INT_TO_ALP(i, a) (a = (i & ALP_MASK) >> 24)
61static int numobjs = 0;
69static float ogl_mat_amb[4];
70static float ogl_mat_diff[4];
71static float ogl_mat_spec[4];
72static float ogl_mat_emis[4];
73static float ogl_mat_shin;
205 static int first = 1;
444#if !defined(OPENGL_FBO)
456#if !defined(OPENGL_FBO)
468#if !defined(OPENGL_FBO)
480#if !defined(OPENGL_FBO)
483#if defined(OPENGL_X11)
485#elif defined(OPENGL_AGL)
487#elif defined(OPENGL_WINDOWS)
589 if (
fx < window[2] ||
fx > window[3] ||
fy < window[1] ||
fy > window[0])
634 G_warning(
_(
"gsd_rot(): %c is an invalid axis "
635 "specification. Rotation ignored. "
636 "Please advise GRASS developers of this error"),
721#ifdef USE_GL_NORMALIZE
736 ogl_mat_amb[0] = 0.1;
737 ogl_mat_amb[1] = 0.1;
738 ogl_mat_amb[2] = 0.1;
739 ogl_mat_amb[3] = 1.0;
741 ogl_mat_diff[0] = 0.8;
742 ogl_mat_diff[1] = 0.8;
743 ogl_mat_diff[2] = 0.8;
744 ogl_mat_diff[3] = 0.8;
746 ogl_mat_spec[0] = 0.8;
747 ogl_mat_spec[1] = 0.8;
748 ogl_mat_spec[2] = 0.8;
749 ogl_mat_spec[3] = 0.8;
751 ogl_mat_emis[0] = 0.0;
752 ogl_mat_emis[1] = 0.0;
753 ogl_mat_emis[2] = 0.0;
754 ogl_mat_emis[3] = 0.0;
803 ogl_mat_spec[0] =
sh;
804 ogl_mat_spec[1] =
sh;
805 ogl_mat_spec[2] =
sh;
806 ogl_mat_spec[3] =
sh;
810 ogl_mat_shin = 60. + (
int)(
sh * 68.);
816 ogl_mat_emis[0] = (em * (
emcolor & 0x0000FF)) / 255.;
817 ogl_mat_emis[1] = (em * ((
emcolor & 0x00FF00) >> 8)) / 255.;
818 ogl_mat_emis[2] = (em * ((
emcolor & 0xFF0000) >> 16)) / 255.;
835 ogl_light_pos[num - 1][0] = vals->
position[
X];
836 ogl_light_pos[num - 1][1] = vals->
position[
Y];
837 ogl_light_pos[num - 1][2] = vals->
position[
Z];
838 ogl_light_pos[num - 1][3] = vals->
position[
W];
842 ogl_light_diff[num - 1][0] = vals->
color[0];
843 ogl_light_diff[num - 1][1] = vals->
color[1];
844 ogl_light_diff[num - 1][2] = vals->
color[2];
845 ogl_light_diff[num - 1][3] = .3;
849 ogl_light_amb[num - 1][0] = vals->
ambient[0];
850 ogl_light_amb[num - 1][1] = vals->
ambient[1];
851 ogl_light_amb[num - 1][2] = vals->
ambient[2];
852 ogl_light_amb[num - 1][3] = .3;
856 ogl_light_spec[num - 1][0] = vals->
color[0];
857 ogl_light_spec[num - 1][1] = vals->
color[1];
858 ogl_light_spec[num - 1][2] = vals->
color[2];
859 ogl_light_spec[num - 1][3] = .3;
911 r = tmp[0] + tmp[2] - 1;
913 t = tmp[1] + tmp[3] - 1;
927#if !defined(OPENGL_FBO)
975#if !defined(OPENGL_FBO)
1107 ObjList[i] = ObjList[0] + i;
void G_warning(const char *,...) __attribute__((format(printf
void G_message(const char *,...) __attribute__((format(printf
void gsd_do_scale(int)
Set current scale.
void gsd_call_label(void)
Call display list and draw defined labels – called from gsd_prim (gsd_call_lists)
#define G_UNUSED
A macro for an attribute, if attached to a variable, indicating that the variable is not used.
void gsd_set_clipplane(int num, int able)
Set clip plane.
void gsd_endlist(void)
End list.
void gsd_viewport(int l, int r, int b, int t)
Set the viewport.
void gsd_endtstrip(void)
ADD.
void gsd_endtfan(void)
ADD.
void gsd_endtmesh(void)
ADD.
void gsd_swaptmesh(void)
ADD.
void gsd_backface(int n)
ADD.
void gsd_pushmatrix(void)
Push the current matrix stack.
int gsd_getViewport(GLint tmp[4], GLint num[2])
Get viewpoint.
void gsd_calllist(int listno)
ADD.
void gsd_zwritemask(unsigned long n)
Write out z-mask.
void gsd_deflight(int num, struct lightdefs *vals)
Define light.
void gsd_vert_func(float *pt)
ADD.
void gsd_bgnqstrip(void)
ADD.
void gsd_switchlight(int num, int on)
Switch light on/off.
void gsd_litvert_func(float *norm, unsigned long col, float *pt)
Set the current normal vector & specify vertex.
void gsd_colormode(int cm)
Set color mode.
void gsd_bgnpolygon(void)
Delimit the vertices of a primitive or a group of like primitives.
int gsd_writeView(unsigned char **pixbuf, unsigned int xsize, unsigned int ysize)
Write view.
void gsd_bgntstrip(void)
ADD.
void gsd_blend(int yesno)
Specify pixel arithmetic.
void gsd_init_lightmodel(void)
Initialize model light.
int gsd_getshademodel(void)
Get shaded model.
void gsd_bgnlist(int listno, int do_draw)
ADD.
int gsd_makelist(void)
ADD.
void gsd_swapbuffers(void)
Swap buffers.
void gsd_endqstrip(void)
ADD.
void gsd_sphere(float *center, float siz)
ADD.
void show_colormode(void)
Print color mode to stderr.
int gsd_getimage(unsigned char **pixbuf, unsigned int *xsize, unsigned int *ysize)
Get image of current GL screen.
void gsd_backbuffer(void)
Draw to the back buffer.
void gsd_popmatrix(void)
Pop the current matrix stack.
void gsd_flush(void)
Mostly for flushing drawing commands across a network.
void gsd_def_clipplane(int num, double *params)
Define clip plane.
void gsd_endline(void)
End line.
void gsd_finish(void)
Finish.
void gsd_calllists(int listno)
ADD.
void gsd_circ(float x, float y, float rad)
ADD.
void gsd_bgntfan(void)
ADD.
void gsd_deletelist(GLuint listno, int range)
Delete list.
int gsd_checkpoint(float pt[4], int window[4], int viewport[4], double modelMatrix[16], double projMatrix[16])
ADD.
void gsd_rot(float angle, char axis)
ADD.
void gsd_bgnline(void)
Begin line.
void gsd_scale(float xs, float ys, float zs)
Multiply the current matrix by a general scaling matrix.
void gsd_translate(float dx, float dy, float dz)
Multiply the current matrix by a translation matrix.
void gsd_bgntmesh(void)
ADD.
void gsd_disc(float x, float y, float z, float rad)
ADD.
void gsd_getwindow(int *window, int *viewport, double *modelMatrix, double *projMatrix)
Get viewport.
void gsd_litvert_func2(float *norm, unsigned long col, float *pt)
ADD.
void gsd_color_func(unsigned int col)
Set current color.
void gsd_shademodel(int shade)
Set shaded model.
void gsd_bothbuffers(void)
Draw to the front and back buffers.
void gsd_frontbuffer(void)
Draw to the front buffer.
void gsd_endpolygon(void)
Delimit the vertices of a primitive or a group of like primitives.
void gsd_linewidth(short n)
Set width of rasterized lines.
void gsd_set_material(int set_shin, int set_emis, float sh, float em, int emcolor)
Set material.
OGSF header file (structures)
float position[4]
X, Y, Z, (1=local/0=inf)