aboutsummaryrefslogtreecommitdiff
path: root/pkg/xtools/gtools/gtvplot.x
blob: 23550c3dcc88dc962ba4236a4e903f259e023722 (plain) (blame)
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
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

include	<gset.h>
include	"gtools.h"

# GT_VPLOT -- Plot vector polymarks or polylines.

procedure gt_vplot (gp, gt, v, npts, x1, x2)

pointer	gp		# GIO pointer
pointer	gt		# GTOOLS pointer
real	v[npts]		# Abscissas
int	npts		# Number of points
real	x1, x2		# Vector range

int	i, pltype, color, gstati()
real	x, dx

begin
	switch (GT_TYPE(gt)) {
	case 1:
	    color = gstati (gp, G_PMCOLOR)
	    call gseti (gp, G_PMCOLOR, GT_COLOR(gt))
	    call gvmark (gp, v, npts, x1, x2, GT_MARK(gt), GT_XSIZE(gt),
		GT_YSIZE(gt))
	    call gseti (gp, G_PMCOLOR, color)
	case 2:
	    color = gstati (gp, G_PLCOLOR)
	    call gseti (gp, G_PLCOLOR, GT_COLOR(gt))
	    pltype = gstati (gp, G_PLTYPE)
	    call gseti (gp, G_PLTYPE, GT_LINE(gt))
	    call gvline (gp, v, npts, x1, x2)
	    call gseti (gp, G_PLTYPE, pltype)
	    call gseti (gp, G_PLCOLOR, color)
	case 3:
	    color = gstati (gp, G_PLCOLOR)
	    call gseti (gp, G_PLCOLOR, GT_COLOR(gt))
	    pltype = gstati (gp, G_PLTYPE)
	    call gseti (gp, G_PLTYPE, GT_LINE(gt))
	    dx = (x2 - x1) / (npts - 1)
	    x = x1 - dx / 2
	    do i = 1, npts-1 {
		x = x + dx
		call gline (gp, x-dx, v[i], x, v[i])
		call gline (gp, x, v[i], x, v[i+1])
	    }
	    call gline (gp, x, v[npts], x+dx, v[npts])
	    call gseti (gp, G_PLTYPE, pltype)
	    call gseti (gp, G_PLCOLOR, color)
	}
end