aboutsummaryrefslogtreecommitdiff
path: root/pkg/xtools/gtools/gtswind.x
blob: 02766326d5b14bb7c2f586fc050a4e587e55a594 (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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

include	<gset.h>
include <mach.h>
include	"gtools.h"
	
# GT_SWIND -- Set graphics window.

procedure gt_swind (gp, gt)

pointer	gp			# GIO pointer
pointer	gt			# GTOOLS pointer

real	xmin, xmax, dx, ymin, ymax, dy

begin
	if (gt != NULL) {
	    if (GT_TRANSPOSE(gt) == NO) {
	        call gseti (gp, G_XTRAN, GT_XTRAN(gt))
	        call gseti (gp, G_YTRAN, GT_YTRAN(gt))
	    } else {
	        call gseti (gp, G_YTRAN, GT_XTRAN(gt))
	        call gseti (gp, G_XTRAN, GT_YTRAN(gt))
	    }
	    call ggwind (gp, xmin, xmax, ymin, ymax)
	    dx = xmax - xmin
	    dy = ymax - ymin

	    if (IS_INDEF (GT_XMIN(gt)))
		xmin = xmin - GT_XBUF(gt) * dx
	    else
		xmin = GT_XMIN(gt)

	    if (IS_INDEF (GT_XMAX(gt)))
		xmax = xmax + GT_XBUF(gt) * dx
	    else
		xmax = GT_XMAX(gt)

	    if (IS_INDEF (GT_YMIN(gt)))
		ymin = ymin - GT_YBUF(gt) * dy
	    else
		ymin = GT_YMIN(gt)

	    if (IS_INDEF (GT_YMAX(gt)))
		ymax = ymax + GT_YBUF(gt) * dy
	    else
		ymax = GT_YMAX(gt)

	    if (GT_XFLIP(gt) == YES) {
		dx = xmin
		xmin = xmax
		xmax = dx
	    }
	    if (GT_YFLIP(gt) == YES) {
		dy = ymin
		ymin = ymax
		ymax = dy
	    }

	    if (GT_TRANSPOSE(gt) == NO)
		call gswind (gp, xmin, xmax, ymin, ymax)
	    else
	        call gswind (gp, ymin, ymax, xmin, xmax)
	}
end