GRASS 8 Programmer's Manual
8.5.0(2026)-8d6ceba290
Toggle main menu visibility
Loading...
Searching...
No Matches
gsd_label.c
Go to the documentation of this file.
1
/*!
2
\file lib/ogsf/gsd_label.c
3
4
\brief OGSF library - label management (lower level functions)
5
6
GRASS OpenGL gsurf OGSF Library
7
8
(C) 1999-2008 by the GRASS Development Team
9
10
This program is free software under the
11
GNU General Public License (>=v2).
12
Read the file COPYING that comes with GRASS
13
for details.
14
15
\author Bill Brown USACERL (1991-1992)
16
\author Doxygenized by Martin Landa <landa.martin gmail.com> (May 2008)
17
*/
18
19
#include <grass/gis.h>
20
#include <grass/glocale.h>
21
#include <grass/ogsf.h>
22
23
#include "
rgbpack.h
"
24
25
#define MAX_LIST 20
26
27
static
int
first = 0;
28
GLuint
label_base
;
29
GLuint
label_id
;
30
31
/*!
32
\brief Put label
33
34
\todo Allocate label dynamically
35
36
\param fontbase fontbase settings
37
\param size font size
38
\param color font color
39
\param pt
40
*/
41
void
gs_put_label
(
const
char
*text, GLuint fontbase,
int
size,
42
unsigned
long
color,
int
*pt)
43
{
44
int
txt_width;
45
GLint tmp[4];
46
float
labpt[2];
47
int
t
,
l
,
b
,
r
;
48
49
if
(!first) {
50
/* initialize display list */
51
label_base
= glGenLists(
MAX_LIST
);
52
glListBase(
label_base
);
53
label_id
=
label_base
;
54
first = 1;
55
}
56
57
if
(
label_id
> (
label_base
+
MAX_LIST
)) {
58
G_warning
(_(
"Max. number of labels reached!"
));
59
return
;
60
}
61
62
glNewList(
label_id
, GL_COMPILE_AND_EXECUTE);
63
txt_width =
gsd_get_txtwidth
(text, size);
64
65
/* adjust to center text string */
66
labpt[
X
] = (float)(pt[
X
] - txt_width / 2.);
67
labpt[
Y
] = (float)pt[
Y
];
68
69
glGetIntegerv(GL_VIEWPORT, tmp);
70
l
= tmp[0];
71
r
= tmp[0] + tmp[2];
72
b
= tmp[1];
73
t
= tmp[1] + tmp[3];
74
75
gsd_bgn_legend_viewport
(
l
,
b
,
r
,
t
);
76
77
/* Set text color */
78
gsd_color_func
(color);
79
80
do_label_display
(fontbase, labpt, text);
81
82
gsd_end_legend_viewport
();
83
84
glEndList();
85
86
label_id
++;
87
88
return
;
89
}
90
91
/*!
92
\brief Remove current label
93
*/
94
void
gsd_remove_curr
(
void
)
95
{
96
if
(
label_id
) {
97
glDeleteLists(
label_id
- 1, 1);
98
label_id
--;
99
}
100
101
return
;
102
}
103
104
/*!
105
\brief Remove all labels from display list
106
*/
107
void
gsd_remove_all
(
void
)
108
{
109
glDeleteLists(
label_base
,
MAX_LIST
);
110
label_id
=
label_base
;
111
112
return
;
113
}
114
115
/*!
116
\brief Call display list and draw defined labels -- called from gsd_prim
117
(gsd_call_lists)
118
*/
119
void
gsd_call_label
(
void
)
120
{
121
int
i;
122
123
for
(i = 0; i <
MAX_LIST
; i++) {
124
glCallList(i +
label_base
);
125
glFlush();
126
}
127
return
;
128
}
b
double b
Definition
driver/set_window.c:5
l
double l
Definition
driver/set_window.c:5
t
double t
Definition
driver/set_window.c:5
r
double r
Definition
driver/set_window.c:5
G_warning
void G_warning(const char *msg,...)
Print a warning message to stderr.
Definition
gis/error.c:203
do_label_display
void do_label_display(GLuint fontbase, float *lab_pos, const char *txt)
Display label.
Definition
gsd_fonts.c:97
gsd_get_txtwidth
int gsd_get_txtwidth(const char *s, int size)
Get text width.
Definition
gsd_fonts.c:36
gsd_remove_curr
void gsd_remove_curr(void)
Remove current label.
Definition
gsd_label.c:94
label_base
GLuint label_base
Definition
gsd_label.c:28
MAX_LIST
#define MAX_LIST
Definition
gsd_label.c:25
gs_put_label
void gs_put_label(const char *text, GLuint fontbase, int size, unsigned long color, int *pt)
Put label.
Definition
gsd_label.c:41
gsd_remove_all
void gsd_remove_all(void)
Remove all labels from display list.
Definition
gsd_label.c:107
label_id
GLuint label_id
Definition
gsd_label.c:29
gsd_call_label
void gsd_call_label(void)
Call display list and draw defined labels – called from gsd_prim (gsd_call_lists).
Definition
gsd_label.c:119
gsd_end_legend_viewport
void gsd_end_legend_viewport(void)
ADD.
Definition
gsd_legend.c:91
gsd_bgn_legend_viewport
void gsd_bgn_legend_viewport(GLint wl, GLint wb, GLint wr, GLint wt)
ADD.
Definition
gsd_legend.c:61
gsd_color_func
void gsd_color_func(unsigned int col)
Set current color.
Definition
gsd_prim.c:698
rgbpack.h
X
#define X(j)
Y
#define Y(j)
ogsf
gsd_label.c
Generated on
for GRASS 8 Programmer's Manual by
1.17.0