aboutsummaryrefslogtreecommitdiff
path: root/pkg/images/tv/iis/ids/testcode/crin.x
blob: c9d27279c9efa91d5174d4249016369aaf7122db (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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

include <error.h>
include <fio.h>
include <fset.h>
include "ids.h"
include <gki.h>
include <gset.h>

define	DIM	512
define	MCXSCALE	64
define	MCYSCALE	64

# zoom

procedure t_im()

pointer	gp
char	device[SZ_FNAME]

pointer	gopen()
int	dd[LEN_GKIDD]

short	i, data[DIM+1]
int	key, but, fnum
real	x, y
real	xjunk, yjunk

begin
	call clgstr("device", device, SZ_FNAME)
	call ids_open (device, dd)
	call gki_inline_kernel (STDIMAGE, dd)
	gp = gopen ( device, NEW_FILE, STDIMAGE)

	call fseti (STDIMAGE, F_TYPE, SPOOL_FILE)
	call fseti (STDIMAGE, F_CANCEL, OK)
	call ids_grstream (STDIMAGE)

	# read first to clear box
	call gseti(gp, G_CURSOR, IDS_BUT_RD)
	call ggcur(gp, xjunk, yjunk, key)

	i = 1
	repeat {
	    call eprintf("set zoom and zoom center\n")
	    call gseti (gp, G_CURSOR, IDS_BUT_WT)
	    call ggcur(gp, x, y, but)
	    call gseti (gp, G_CURSOR, 1)
	    call ggcur(gp, x, y, key)
	    call zm(gp, but, x, y)
	    call eprintf("set frame, 4 to exit\n")
	    call gseti (gp, G_CURSOR, IDS_BUT_WT)
	    call ggcur(gp, xjunk, yjunk, fnum)
	    if ( fnum == 4)
		break
	    call iset(gp, fnum)
	    repeat {
	        call gseti (gp, G_CURSOR, IDS_BUT_WT)
	        call ggcur(gp, xjunk, yjunk, but)
	        call gseti (gp, G_CURSOR, fnum)
	        call rpc(gp, x, y, key)
		call ggcell (gp, data, 1, 1, x, y, x, y)
		call eprintf("frame %d, datum: %d\n")
		   call pargi (fnum)
		   call pargs (data[1])
	    } until ( but == 4)
	} until ( i == 0 )


	# all done
	call gclose ( gp )
	call ids_close
end

# rpcursor --- read and print cursor

procedure rpc(gp, sx, sy, key)

pointer	gp
real	sx,sy
int 	key

begin
	call ggcur (gp, sx, sy, key)
	call eprintf("cursor: (%f,%f) (%d,%d) key %d\n")
	    call pargr (sx)
	    call pargr (sy)
	    call pargi ( int(sx*32767)/64)
	    call pargi ( int(sy*32767)/64)
	    call pargi (key)
end

# zoom

procedure zm(gp, pow, x, y)

int	pow
pointer	gp
real	x, y

short	data[9]

begin
	    data[1] = IDS_ZOOM
	    data[2] = IDS_WRITE
	    data[3] = 3
	    data[4] = IDS_EOD
	    data[5] = IDS_EOD
	    data[6] = 0
	    data[7] = 2**(pow-1)
	    data[8] = x * GKI_MAXNDC
	    data[9] = y * GKI_MAXNDC
	    call gescape ( gp, IDS_CONTROL, data[1], 9)
end

# set image plane for operation

procedure iset (gp, frame)

int	frame
pointer	gp

short	data[10]

begin
	data[1] = frame
	data[2] = IDS_EOD
	data[3] = IDS_EOD	# all bitplanes
	call gescape (gp, IDS_SET_IP, data, 3)
end