path:
root/
src/
model/
density_legend_geometry.c (
plain)
blob: ab3e46ca9ca2447366fbf6561cc127f53b2059eb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#include "density_legend_geometry.h"
#include "../view/exp004state0.h"
#include "../controller/exp004reshape.h"
#include <GL/glut.h>
#include <stdio.h>
#define S exp004state0
void
density_legend_geometry (void)
{
glNewList (S.list_offset + DENSITY_LEGEND_GEOMETRY, GL_COMPILE);
glPolygonMode (GL_FRONT, GL_FILL);
glColor4f (DEFAULT_COLOR_R, DEFAULT_COLOR_G, DEFAULT_COLOR_B,
DEFAULT_COLOR_A);
/*
* This value should be a percentage of the world height so that it
* remains a fixed number of pixels tall when the window is resized
* or zoomed.
*/
double legend_height = 0.5;
/*
* Calculate the bounding box for the legend.
*/
double a[2];
double b[2];
double c[2];
double d[2];
const double *left;
const double *right;
const double *top;
if (S.zoom.active)
{
left = &S.zoom.coords[0];
right = &S.zoom.coords[1];
top = &S.zoom.coords[3];
}
else
{
left = &S.ortho.min_x;
top = &S.ortho.max_y;
right = &S.ortho.max_x;
}
a[0] = *left;
a[1] = *top;
b[0] = *right;
b[1] = *top;
c[0] = *right;
c[1] = *top - legend_height;
d[0] = *left;
d[1] = *top - legend_height;
/*
* Overlay a legend from default saturation / alpha to full saturation.
*/
for (int i = 1; i <= 1 / DEFAULT_COLOR_A; i++)
{
glBegin (GL_QUADS);
glVertex2dv (a);
glVertex2dv (b);
glVertex2dv (c);
glVertex2dv (d);
glEnd ();
/*
* Step left to right along the x-coordinate.
*/
a[0] = *left + (*right - *left) * (DEFAULT_COLOR_A * i);
d[0] = a[0];
}
glEndList ();
return;
}
|