38 #if defined(OPENGL_X11) || defined(OPENGL_WINDOWS)
41 #elif defined(OPENGL_AQUA)
42 #include <OpenGL/gl.h>
43 #include <OpenGL/glu.h>
66 static int Next_surf = 0;
67 static int SDref_surf = 0;
70 static float Default_const[
MAX_ATTS];
71 static float Default_nulls[
MAX_ATTS];
77 static float Region[4];
81 static int Buffermode;
82 static int Numlights = 0;
83 static int Resetlight = 1;
84 static int Modelshowing = 0;
100 static int first = 1;
104 Region[0] = wind.
north;
105 Region[1] = wind.
south;
106 Region[2] = wind.
west;
107 Region[3] = wind.
east;
119 G_debug(1,
"GS_libinit(): n=%f s=%f w=%f e=%f scale=%f first=%d", Region[0],
120 Region[1], Region[2], Region[3], Gv.
scale, first);
144 G_debug(3,
"GS_get_longdim(): dim=%g", *dim);
176 G_debug(3,
"GS_set_att_defaults");
179 Default_const[i] = defs[i];
180 Default_nulls[i] = null_defs[i];
198 G_debug(3,
"GS_surf_exists(): id=%d",
id);
204 for (i = 0; i < Next_surf && !found; i++) {
205 if (Surf_ID[i] ==
id) {
227 G_debug(3,
"GS_new_surface():");
314 if (num < Numlights) {
339 if (num < Numlights) {
360 if (num < Numlights) {
382 if (num < Numlights) {
404 if (num < Numlights) {
426 if (num < Numlights) {
443 for (i = 0; i < Numlights; i++) {
457 for (i = 0; i < Numlights; i++) {
475 if (num < Numlights) {
512 G_debug(1,
"GS_get_modelposition1(): model position: %f %f %f", pos[
X],
530 float dist, near_h, dir[3];
534 near_h = 2.0 * tan(4.0 * atan(1.) * Gv.
fov / 3600.) * dist;
568 GLdouble modelMatrix[16], projMatrix[16];
590 glGetDoublev(GL_MODELVIEW_MATRIX, modelMatrix);
591 glGetDoublev(GL_PROJECTION_MATRIX, projMatrix);
592 glGetIntegerv(GL_VIEWPORT, viewport);
595 GLdouble out_near[3], out_far[3];
601 gluUnProject((GLdouble)pt[
X], (GLdouble)pt[
Y], (GLdouble)0.,
602 modelMatrix, projMatrix, viewport, &out_near[
X],
603 &out_near[
Y], &out_near[
Z]);
604 gluUnProject((GLdouble)pt[
X], (GLdouble)pt[
Y], (GLdouble)1.,
605 modelMatrix, projMatrix, viewport, &out_far[
X],
606 &out_far[
Y], &out_far[
Z]);
610 factor = (out_near[
Z] - z) / (out_near[
Z] - out_far[
Z]);
612 out[
X] = out_near[
X] - ((out_near[
X] - out_far[
X]) * factor);
613 out[
Y] = out_near[
Y] - ((out_near[
Y] - out_far[
Y]) * factor);
616 pos2[
X] = (float)out[
X];
617 pos2[
Y] = (float)out[
Y];
618 pos2[
Z] = (float)out[
Z];
643 style.
size = siz / 200.;
644 pos[
X] = pt[
X] - gs->
ox;
645 pos[
Y] = pt[
Y] - gs->
oy;
754 float nv[3], pdir[2], mult;
755 float p1[2], p2[2], next[2];
768 if (pdir[
X] == 0.0 && pdir[
Y] == 0.0) {
772 p2[
X] = p1[
X] + (pdir[
X] * mult);
773 p2[
Y] = p1[
Y] + (pdir[
Y] * mult);
778 p2[
X] = p1[
X] + (nv[
X] * mult);
779 p2[
Y] = p1[
Y] + (nv[
Y] * mult);
804 G_debug(3,
"GS_draw_flowline_at_xy(): dir: %f %f", nv[
X], nv[
Y]);
822 G_debug(3,
"GS_draw_fringe(): id: %d clr: %ld elev %f edges: %d %d %d %d",
823 id, clr, elev, where[0], where[1], where[2], where[3]);
842 float *range,
int *pt)
896 static float center[3];
936 static float center[3], size;
937 float tcenter[3], tsize;
1013 tmp[
X] = pt[
X] - gs->
ox;
1014 tmp[
Y] = pt[
Y] - gs->
oy;
1132 int GS_get_att(
int id,
int att,
int *set,
float *constant,
char *mapname)
1177 int offset, drow, dcol, vrow, vcol;
1202 sprintf(catstr,
_(
"no category info"));
1213 offset =
DRC2OFF(gs, drow, dcol);
1220 sprintf(catstr,
_(
"no data"));
1239 int offset, drow, dcol, vrow, vcol;
1270 offset =
DRC2OFF(gs, drow, dcol);
1303 int offset, drow, dcol, vrow, vcol;
1353 offset =
DRC2OFF(gs, drow, dcol);
1365 sprintf(valstr,
"%f", ftmp);
1371 sprintf(valstr,
"NULL");
1534 *numsurfs = Next_surf;
1537 ret = (
int *)
G_malloc(Next_surf *
sizeof(
int));
1539 for (i = 0; i < Next_surf; i++) {
1540 ret[i] = Surf_ID[i];
1563 G_debug(1,
"GS_delete_surface(): id=%d",
id);
1567 for (i = 0; i < Next_surf && !found; i++) {
1568 if (Surf_ID[i] ==
id) {
1571 for (j = i; j < Next_surf; j++) {
1572 Surf_ID[j] = Surf_ID[j + 1];
1601 unsigned int changed;
1605 int reuse, begin, hdata, ret, neg, has_null;
1608 G_debug(3,
"GS_load_att_map(): map=%s", filename);
1610 reuse = ret = neg = has_null = 0;
1632 if (mapset ==
NULL) {
1634 G_warning(
"Raster map <%s> not found", filename);
1644 _(
"Raster map <%s> is outside of current region. Load failed."),
1648 while (!reuse && (0 < hdata)) {
1652 if (0 < (hdata =
gsds_findh(filename, &changed, &atty, begin))) {
1654 G_debug(3,
"GS_load_att_map(): %s already has data handle %d.CF=%x",
1655 filename, hdata, changed);
1669 else if (!changed) {
1690 G_debug(3,
"GS_load_att_map(): %s is being reused. hdata=%d", filename,
1695 3,
"GS_load_att_map(): %s not loaded in correct form - loading now",
1724 _(
"GS_load_att_map(): Out of memory. Unable to load map"));
1731 _(
"GS_load_att_map(): Out of memory. Unable to load map"));
1740 _(
"GS_load_att_map(): Out of memory. Unable to load map"));
1750 _(
"GS_load_att_map(): Out of memory. Unable to load map"));
1759 _(
"GS_load_att_map(): Out of memory. Unable to load map"));
1770 _(
"GS_load_att_map(): Out of memory. Unable to load map"));
1784 G_debug(4,
" has_null=%d", has_null);
1804 Gs_build_lookup(filename, gs->
att[att].
lookup);
1866 G_debug(3,
"GS_draw_surf(): id=%d",
id);
1901 G_debug(3,
"GS_draw_wire(): id=%d",
id);
1922 for (i = 0; i < Next_surf; i++) {
1938 for (i = 0; i < Next_surf; i++) {
1960 if (gs->
z_exag != exag) {
1978 G_debug(3,
"GS_set_global_exag");
2016 G_debug(3,
"GS_set_wire_color");
2063 for (i = 0; i < Next_surf; i++) {
2085 G_debug(3,
"GS_set_drawmode(): id=%d mode=%d",
id, mode);
2200 for (i = 0; i < Next_surf; i++) {
2223 G_debug(3,
"GS_set_drawres() id=%d xyres=%d/%d xywire=%d/%d",
id, xres,
2224 yres, xwire, ywire);
2226 if (xres < 1 || yres < 1 || xwire < 1 || ywire < 1) {
2233 if (gs->
x_mod != xres || gs->
y_mod != yres) {
2327 while (gs->
zrange_nz * guess / Longdim >= .25) {
2330 G_debug(3,
"GS_get_exag_guess(): %f", guess);
2333 while (gs->
zrange_nz * guess / Longdim < .025) {
2336 G_debug(3,
"GS_get_exag_guess(): %f", guess);
2360 for (i = 0; i < Next_surf; i++) {
2378 G_debug(3,
"GS_get_zrange_nz(): min=%g max=%g", *
min, *
max);
2401 G_debug(3,
"GS_set_trans(): id=%d, x=%f, y=%f, z=%f",
id, xtrans, ytrans,
2425 G_debug(3,
"GS_get_trans: id=%d, x=%f, y=%f, z=%f",
id, *xtrans, *ytrans,
2439 G_debug(3,
"GS_default_draw_color");
2441 return ((
unsigned int)Gd.
bgcol);
2451 return ((
unsigned int)Gd.
bgcol);
2520 G_debug(3,
"GS_set_focus(): %f,%f,%f", realto[0], realto[1], realto[2]);
2539 realto[
X] = realto[
X] - wind.
west - (wind.
ew_res / 2.);
2583 G_debug(3,
"GS_set_focus_center_map");
2617 G_debug(3,
"GS_moveto(): %f,%f,%f", pt[0], pt[1], pt[2]);
2670 G_debug(3,
"GS_get_zextents(): id=%d",
id);
2687 int ret_surf, ret_vol;
2688 float surf_min, surf_max;
2689 float vol_min, vol_max;
2694 if (ret_surf > 0 && ret_vol > 0) {
2695 *
min = (surf_min < vol_min) ? surf_min : vol_min;
2696 *
max = (surf_max < vol_max) ? surf_max : vol_max;
2698 else if (ret_surf > 0) {
2702 else if (ret_vol > 0) {
2713 return ((ret_surf > 0 || ret_vol > 0) ? (1) : (-1));
2725 G_debug(3,
"GS_get_from(): %f,%f,%f", fr[0], fr[1], fr[2]);
2908 for (i = 0; i < 16; i++) {
2909 if (i == 0 || i == 5 || i == 10 || i == 15)
2928 for (i = 0; i < 16; i++) {
2940 for (i = 0; i < 16; i++) {
2979 "GS_set_viewport(): left=%d, right=%d, "
2980 "bottom=%d, top=%d",
3004 float x, y, z, len, los[2][3];
3054 float los[2][3], find_dist[
MAX_SURFS], closest;
3056 int surfs[
MAX_SURFS], i, iclose, numhits = 0;
3063 G_debug(3,
"gs_setlos_enterdata(los): returns false");
3067 for (i = 0; i < Next_surf; i++) {
3086 GS_v3eq(finds[numhits], point);
3087 surfs[numhits] = Surf_ID[i];
3093 for (i = iclose = 0; i < numhits; i++) {
3094 closest = find_dist[iclose];
3096 if (find_dist[i] < closest) {
3102 *
x = finds[iclose][
X];
3103 *y = finds[iclose][
Y];
3104 *z = finds[iclose][
Z];
3105 *
id = surfs[iclose];
3108 G_debug(3,
"NumHits %d, next %d", numhits, Next_surf);
3241 *sx = *sy = Gv.
scale;
3242 *sz = Gv.
scale * zexag;
3282 float *dist,
int use_exag)
3299 G_debug(3,
"GS_get_distance_alongsurf(): hs=%d p1=%f,%f p2=%f,%f", hs, x1,
3345 static int first = 1;
3351 glMatrixMode(GL_MODELVIEW);
3370 glDepthRange(0.0, 1.0);
3371 glEnable(GL_DEPTH_TEST);
3372 glDepthFunc(GL_LEQUAL);
3418 col = col | 0xFF000000;
3431 ((
float)((col) & 0xff)) / 255., (
float)((col) >> 8 & 0xff) / 255.,
3432 (
float)((col) >> 16 & 0xff) / 255., (
float)((col) >> 24 & 0xff) / 255.);
3433 glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
3456 glGetIntegerv(GL_VIEWPORT, tmp);
3458 right = tmp[0] + tmp[2] - 1;
3460 top = tmp[1] + tmp[3] - 1;
3462 G_debug(3,
"GS_get_aspect(): left=%d, right=%d, top=%d, bottom=%d", left,
3465 return ((
double)(right - left) / (
top -
bottom));
void void void void G_fatal_error(const char *,...) __attribute__((format(printf
void G_warning(const char *,...) __attribute__((format(printf
void G_get_set_window(struct Cell_head *)
Get the current working window (region)
const char * G_find_raster2(const char *, const char *)
Find a raster map (look but don't touch)
char * G_fully_qualified_name(const char *, const char *)
Get fully qualified element name.
int G_debug(int, const char *,...) __attribute__((format(printf
int GS_v3norm(float *)
Change v1 so that it is a unit vector (2D)
void GS_v3mult(float *, float)
Multiple vectors.
geosurf * gs_get_new_surface(void)
Allocate new geosurf struct.
int gs_malloc_lookup(geosurf *, int)
Allocate attribute lookup.
int gs_point_is_masked(geosurf *, float *)
Check if point is masked.
GLuint gsd_put_legend(const char *, GLuint, int, int *, float *, int *)
Put legend.
void gpd_obj(geosurf *, gvstyle *, Point3)
Draw point representing object.
int gs_get_zextents(geosurf *, float *, float *, float *)
Get z-extent values.
void gsd_pushmatrix(void)
Push the current matrix stack.
void gsd_real2surf(geosurf *, Point3)
Convert real to surface coordinates.
void gsd_backface(int)
ADD.
int gsds_newh(const char *)
Get handle to gsds.
void gsd_line_onsurf(geosurf *, float *, float *)
Line on surface, fix z-values.
void gsd_scale(float, float, float)
Multiply the current matrix by a general scaling matrix.
void gsd_draw_cplane(int)
Draw cplane.
int gs_getall_surfaces(geosurf **)
Get array of geosurf structs.
void gsd_do_scale(int)
Set current scale.
void gsdiff_set_SDref(geosurf *)
ADD.
int GS_v2norm(float *)
Change v1 so that it is a unit vector (3D)
void GS_v3sub(float *, float *)
Subtract vectors.
void gv_update_drapesurfs(void)
Update drape surfaces.
void gsd_draw_cplane_fence(geosurf *, geosurf *, int)
void Gs_pack_colors(const char *, int *, int, int)
Pack color table.
void gsd_cplane_off(int)
Turn off clip plane.
void gsd_shademodel(int)
Set shaded model.
int Gs_save_3dview(const char *, geoview *, geodisplay *, struct Cell_head *, geosurf *)
int gs_get_zrange(float *, float *)
Get z-range.
void Gs_pack_colors_float(const char *, float *, int *, int, int)
Pack color table (floating-point map)
int gs_los_intersect(int, float **, float *)
Crude method of intersecting line of sight with closest part of surface.
int gs_get_att_src(geosurf *, int)
Get attribute source.
int gsds_findh(const char *, IFLAG *, IFLAG *, int)
Get handle to gsds.
int Gs_update_attrange(geosurf *, int)
Update no_zero ranges for attribute (actually no_null now)
void GS_v3add(float *, float *)
Sum vectors.
void gsd_surf2real(geosurf *, Point3)
Convert surface to real coordinates.
int gs_calc_normals(geosurf *)
Calculate normals.
int GS_v3normalize(float *, float *)
Change v2 so that v1v2 is a unit vector.
int Gs_loadmap_as_short(struct Cell_head *, const char *, short *, struct BM *, int *)
Load raster map as integer map.
void gs_delete_surf(int)
Remove geosurf struct from list.
void gsd_deletelist(GLuint, int)
int gsds_set_changed(int, IFLAG)
ADD.
void gsd_init_lightmodel(void)
Initialize model light.
void gsd_drawsphere(float *, unsigned long, float)
Draw sphere.
int gs_get_datacenter(float *)
Get data center point.
void gsd_switchlight(int, int)
Switch light on/off.
int Gs_loadmap_as_char(struct Cell_head *, const char *, unsigned char *, struct BM *, int *)
Load raster map as integer map.
int gsds_free_data_buff(int, int)
Free allocated buffer.
void gsdiff_set_SDscale(float)
Set scale.
void gsd_calllist(int)
ADD.
void gsd_swapbuffers(void)
Swap buffers.
void GS_v3eq(float *, float *)
Copy vector values.
int Gs_load_3dview(const char *, geoview *, geodisplay *, struct Cell_head *, const geosurf *)
size_t gs_malloc_att_buff(geosurf *, int, int)
Allocate attribute buffer.
int in_vregion(geosurf *, float *)
ADD.
int Gs_loadmap_as_bitmap(struct Cell_head *, const char *, struct BM *)
Load raster map as integer map.
void gs_set_defaults(geosurf *, float *, float *)
Set default attribute values.
char * gsds_get_name(int)
Get name.
int gs_mapcolor(typbuff *, gsurf_att *, int)
Call this one when you already know att_src is MAP_ATT.
void gsd_cplane_setrot(int, float, float, float)
ADD.
int Gs_get_cat_label(const char *, int, int, char *)
Get categories/labels.
void gsd_get_cplanes_state(int *)
Get cplane state.
int gsd_nline_onsurf(geosurf *, float *, float *, float *, int)
Multiline on surface, fix z-values.
int gs_update_curmask(geosurf *)
Update current maps.
float gsdiff_get_SDscale(void)
Get scale.
void gsd_color_func(unsigned int)
Set current color.
int gs_set_att_src(geosurf *, int, int)
Set attribute source.
void gs_init(void)
Initialize library.
void gsd_backbuffer(void)
Draw to the back buffer.
void gsd_translate(float, float, float)
Multiply the current matrix by a translation matrix.
int gs_set_att_type(geosurf *, int, int)
Set attribute type.
int gsd_wire_surf(geosurf *)
Draw surface wire.
void gsd_popmatrix(void)
Pop the current matrix stack.
void gsd_real2model(Point3)
Convert real to model coordinates.
int Gs_build_256lookup(const char *, int *)
Build color table (256)
void gsd_flush(void)
Mostly for flushing drawing commands across a network.
void gsd_set_view(geoview *, geodisplay *)
Set view.
int Gs_loadmap_as_float(struct Cell_head *, const char *, float *, struct BM *, int *)
Load raster map as floating point map.
void gsd_viewport(int, int, int, int)
Set the viewport.
void gsd_zwritemask(unsigned long)
Write out z-mask.
void gsd_linewidth(short)
Set width of rasterized lines.
int gs_num_surfaces(void)
Get number of surfaces.
int gs_distance_onsurf(geosurf *, float *, float *, float *, int)
Calculate distance on surface.
int gs_init_surf(geosurf *, double, double, int, int, double, double)
Initialize allocated geosurf struct.
void gsd_colormode(int)
Set color mode.
geosurf * gsdiff_get_SDref(void)
ADD.
int GS_coordpair_repeats(float *, float *, int)
ADD.
typbuff * gs_get_att_typbuff(geosurf *, int, int)
Get attribute data buffer.
void gsd_display_fringe(geosurf *, unsigned long, float, int[4])
Display fridge.
int GS_v3dir(float *, float *, float *)
Get a normalized direction from v1 to v2, store in v3.
int _viewcell_tri_interp(geosurf *, Point3)
ADD.
int gs_get_data_avg_zmax(float *)
Get average z-max value.
int gsd_get_los(float(*)[3], short, short)
ADD.
int Gs_numtype(const char *, int *)
Get map data type.
void gsd_model2real(Point3)
Convert model to real coordinates.
int gs_set_att_const(geosurf *, int, float)
Set attribute constant value.
int gvl_get_zrange(float *, float *)
Get volume z-range value.
int gs_setlos_enterdata(Point3 *)
int gs_att_is_set(geosurf *, IFLAG)
Check if attribute is set.
void gsd_cplane_settrans(int, float, float, float)
ADD.
int gs_los_intersect1(int, float(*)[3], float *)
Crude method of intersecting line of sight with closest part of surface.
void gsd_deflight(int, struct lightdefs *)
Define light.
int gs_init_normbuff(geosurf *)
Init geosurf normbuff.
float GS_distance(float *, float *)
Calculate distance.
void gsd_bothbuffers(void)
Draw to the front and back buffers.
void gsd_frontbuffer(void)
Draw to the front buffer.
int gsd_surf(geosurf *)
ADD.
geosurf * gs_get_surf(int)
Get geosurf struct.
int Gs_loadmap_as_int(struct Cell_head *, const char *, int *, struct BM *, int *)
Load raster map as integer map.
void gsd_cplane_on(int)
ADD.
void Rast_get_cellhd(const char *, const char *, struct Cell_head *)
Read the raster header.
void GS_unset_cplane(int num)
Unset clip place (turn off)
void GS_zoom_setup(int *a, int *b, int *c, int *d, int *maxx, int *maxy)
Get zoom setup.
int GS_get_twist(void)
Get twist value.
void GS_set_cplane_rot(int num, float dx, float dy, float dz)
Set cplace rotation.
int GS_get_zextents(int id, float *min, float *max, float *mid)
Get z-extent for a single surface.
int GS_setall_drawres(int xres, int yres, int xwire, int ywire)
Set all draw resolutions.
int GS_set_SDscale(float scale)
Set ?
void GS_set_global_exag(float exag)
Set global z-exag value.
int GS_new_surface(void)
Add new surface.
void GS_draw_list(GLuint list_id)
Draw pre-defined list.
void GS_alldraw_cplane_fences(void)
Draw all cplace fences ?
void GS_get_zrange_nz(float *min, float *max)
Get Z extents for all loaded surfaces.
void GS_draw_X(int id, float *pt)
Draw place marker.
void GS_set_cplane_trans(int num, float dx, float dy, float dz)
Set cplace trans.
void GS_draw_surf(int id)
Draw surface.
void GS_draw_all_list(void)
Draw all glLists.
void GS_set_focus(float *realto)
Set focus.
void GS_getlight_color(int num, float *red, float *green, float *blue)
Get light color.
int GS_update_normals(int id)
Update normals.
int * GS_get_surf_list(int *numsurfs)
Get surface list.
void GS_set_infocus(void)
Set focus.
int GS_get_light_reset(void)
int GS_load_att_map(int id, const char *filename, int att)
Load raster map as attribute.
unsigned int GS_default_draw_color(void)
Get default draw color.
void GS_set_focus_real(float *realto)
Set real focus.
void GS_set_rotation_matrix(double *matrix)
Set rotation matrix.
void GS_get_from(float *fr)
Get viewpoint 'from' position.
void GS_get_dims(int id, int *rows, int *cols)
Get dimension of surface.
void GS_switchlight(int num, int on)
Switch on/off light.
void GS_draw_cplane(int num)
Draw cplace.
void GS_get_viewdir(float *dir)
Get viewdir.
void GS_alldraw_wire(void)
Draw all wires.
void GS_clear(int col)
Clear view.
void GS_getlight_ambient(int num, float *red, float *green, float *blue)
Get light ambient.
void GS_init_rotation(void)
Reset scene rotation.
void GS_set_focus_center_map(int id)
Set focus to map center.
int GS_set_drawres(int id, int xres, int yres, int xwire, int ywire)
Set draw resolution for surface.
int GS_look_here(int sx, int sy)
Send screen coords sx and sy, lib traces through surfaces; sets new center to point of nearest inters...
void GS_set_cplane(int num)
Set cplace.
int GS_get_att(int id, int att, int *set, float *constant, char *mapname)
Get attributes.
int GS_delete_surface(int id)
Delete surface.
int GS_update_curmask(int id)
Update current mask.
int GS_get_SDscale(float *scale)
Get ?
double GS_get_aspect(void)
Get aspect value.
int GS_get_selected_point_on_surface(int sx, int sy, int *id, float *x, float *y, float *z)
Get selected point of surface.
int GS_get_SDsurf(int *id)
Get ?
void GS_get_modelposition(float *siz, float *pos)
Retrieves coordinates for lighting model position, at center of view.
int GS_new_light(void)
Add new model light.
int GS_draw_nline_onsurf(int id, float x1, float y1, float x2, float y2, float *lasp, int n)
Draw multiline on surface.
void GS_get_trans(int id, float *xtrans, float *ytrans, float *ztrans)
Get translation values (surface position)
int GS_get_distance_alongsurf(int hs, float x1, float y1, float x2, float y2, float *dist, int use_exag)
Measure distance "as the ball rolls" between two points on surface.
int GS_get_zrange(float *min, float *max, int doexag)
Get z-extent for all loaded surfaces.
int GS_save_3dview(const char *vname, int surfid)
Save 3d view.
int GS_get_val_at_xy(int id, int att, char *valstr, float x, float y)
Get RGB color at given point.
void GS_draw_line_onsurf(int id, float x1, float y1, float x2, float y2)
Draw line on surface.
void GS_set_viewdir(float *dir)
Set viewdir.
void GS_draw_flowline_at_xy(int id, float x, float y)
Draw flow-line on surace.
void GS_moveto(float *pt)
Move viewpoint.
void GS_get_scale(float *sx, float *sy, float *sz, int doexag)
Get axis scale.
int GS_get_fov(void)
Get field of view.
int GS_transp_is_set(void)
Check if transparency is set.
void GS_libinit(void)
Initialize OGSF library.
void GS_setlight_color(int num, float red, float green, float blue)
Set light color.
int GS_get_fencecolor(void)
Get fence color.
int GS_get_nozero(int id, int att, int *mode)
Get no-zero ?
void GS_set_trans(int id, float xtrans, float ytrans, float ztrans)
Set translation (surface position)
int GS_get_region(float *n, float *s, float *w, float *e)
Get 2D region extent.
void GS_get_drawres(int id, int *xres, int *yres, int *xwire, int *ywire)
Get draw resolution of surface.
void GS_delete_list(GLuint list_id)
Delete pre-defined list.
void GS_get_rotation_matrix(double *matrix)
Get rotation matrix.
void GS_unset_SDsurf(void)
Unset Scaled Difference surface.
void GS_set_nozero(int id, int att, int mode)
Set no-zero ?
void GS_set_Narrow(int *pt, int id, float *pos2)
Set decoration, north arrow ??
int GS_get_focus(float *realto)
Get focus.
int GS_num_surfs(void)
Get number of surfaces.
void GS_draw_fringe(int id, unsigned long clr, float elev, int *where)
Draw fringe around data (surface) at selected corners.
void GS_unset_rotation(void)
Stop scene rotation.
int GS_get_wire_color(int id, int *colr)
Get wire color.
void * GS_Get_ClientData(int id)
Get client data.
int GS_is_masked(int id, float *pt)
Check if point is masked ?
void GS_draw_lighting_model(void)
Draw lighting model.
void GS_set_fencecolor(int mode)
Set fence color.
int GS_get_exag_guess(int id, float *exag)
Get exag-value guess.
void GS_set_rotation(double angle, double x, double y, double z)
Set rotation params.
void GS_set_light_reset(int i)
int GS_get_maskmode(int id, int *mode)
Get mask mode.
int GS_get_drawmode(int id, int *mode)
Get draw mode.
void GS_get_to(float *to)
Get 'to' model coordinates.
void GS_set_wire_color(int id, int colr)
Set wire color.
void GS_lights_on(void)
Switch on all lights.
void GS_set_exag(int id, float exag)
Set Z exag for surface.
int GS_surf_exists(int id)
int gsd_getViewport(GLint *, GLint *)
int GS_draw_cplane_fence(int hs1, int hs2, int num)
Draw cplace fence ?
void GS_setlight_position(int num, float xpos, float ypos, float zpos, int local)
Set light position.
unsigned int GS_background_color(void)
Get background color.
int GS_set_drawmode(int id, int mode)
Set draw mode.
void GS_alldraw_surf(void)
Draw all surfaces.
int GS_setall_drawmode(int mode)
Set all draw-modes.
void GS_init_view(void)
Init viewpoint.
int GS_set_SDsurf(int id)
Set surface as Scaled Difference surface.
void GS_setlight_ambient(int num, float red, float green, float blue)
Set light ambient.
void GS_set_draw(int where)
Sets which buffer to draw to.
int GS_get_cat_at_xy(int id, int att, char *catstr, float x, float y)
Get surface category on given position.
int GS_draw_legend(const char *name, GLuint fontbase, int size, int *flags, float *range, int *pt)
Draw legend.
void GS_moveto_real(float *pt)
Move position to (real)
void GS_get_from_real(float *fr)
Get viewpoint 'from' real coordinates.
int GS_set_att_const(int id, int att, float constant)
Set attribute constant.
int GS_Set_ClientData(int id, void *clientd)
Set client data.
int GS_load_3dview(const char *vname, int surfid)
Load 3d view.
void GS_set_att_defaults(float *defs, float *null_defs)
Set default attributes for map objects.
void GS_draw_lighting_model1(void)
Draw lighting model.
void GS_set_nofocus(void)
Unset focus.
int GS_get_longdim(float *dim)
Get largest dimension.
int GS_unset_att(int id, int att)
Unset attribute.
void GS_set_viewport(int left, int right, int bottom, int top)
Set viewport.
void GS_getlight_position(int num, float *xpos, float *ypos, float *zpos, int *local)
Get light position.
void GS_done_draw(void)
Draw done, swap buffers.
void GS_set_fov(int fov)
Set field of view.
void GS_get_modelposition1(float pos[])
Retrieves coordinates for lighting model position, at center of view.
int GS_get_norm_at_xy(int id, float x, float y, float *nv)
Get surface normal at x,y (real coordinates)
int GS_set_maskmode(int id, int mode)
Set mask mode.
int GS_has_transparency(void)
Check for transparency.
void GS_draw_wire(int id)
Draw surface wire.
void GS_lights_off(void)
Switch off all lights.
void GS_get_to_real(float *to)
Get 'to' real coordinates.
void GS_set_twist(int t)
Set viewpoint twist value.
float GS_global_exag(void)
Get global z-exag value.
#define GET_MAPATT(buff, offset, att)
#define DRC2OFF(gs, drow, dcol)
#define VROW2DROW(gs, vrow)
#define VCOL2DCOL(gs, vcol)
2D/3D raster map header (used also for region)
double ew_res
Resolution - east to west cell size for 2D data.
double north
Extent coordinates (north)
double bottom
Extent coordinates (bottom) - 3D data.
double east
Extent coordinates (east)
double ns_res
Resolution - north to south cell size for 2D data.
double top
Extent coordinates (top) - 3D data.
int rows
Number of rows for 2D data.
int cols
Number of columns for 2D data.
double south
Extent coordinates (south)
double west
Extent coordinates (west)
struct lightdefs lights[MAX_LIGHTS]