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 <gset.h>
include <gki.h>
define DIM 512
define MCXSCALE 64
define MCYSCALE 64
# scroll
procedure t_im()
pointer gp
char device[SZ_FNAME]
pointer gopen()
int dd[LEN_GKIDD]
common /local/gp
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)
call cl_button
call scroll(1,1)
call cursor(129,129)
call wt_button
call scroll(129,195)
call cursor(129,129)
call wt_button
call zm(4,129,129)
call wt_button
call cursor(129,129)
call wt_button
call zm(1,205,205)
# all done
call gclose ( gp )
call ids_close
end
procedure scroll(x,y)
int x,y
pointer gp
common /local/gp
short data[8]
begin
data[1] = IDS_SCROLL
data[2] = IDS_WRITE
data[3] = 2
data[4] = IDS_EOD
data[5] = IDS_EOD
data[6] = 0
data[7] = (x-1) * MCXSCALE
data[8] = (y-1) * MCYSCALE
call gescape(gp, IDS_CONTROL, data, 8)
end
procedure cursor(x,y)
int x,y
pointer gp
real xr, yr
common /local/gp
begin
xr = real((x-1)*MCXSCALE)/GKI_MAXNDC
yr = real((y-1)*MCXSCALE)/GKI_MAXNDC
call gseti(gp, G_CURSOR, 1)
call gscur(gp, xr, yr)
end
procedure wt_button
real x,y
int key
pointer gp
common /local/gp
begin
call gseti(gp, G_CURSOR, IDS_BUT_WT)
call ggcur(gp, x, y, key)
end
procedure cl_button
real x,y
int key
pointer gp
common /local/gp
begin
call gseti(gp, G_CURSOR, IDS_BUT_RD)
call ggcur(gp, x, y, key)
end
procedure zm(power, x,y)
int power
int x,y
short data[9]
pointer gp
common /local/gp
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] = power
data[8] = (x-1) * MCXSCALE
data[9] = (y-1) * MCYSCALE
call gescape(gp, IDS_CONTROL, data, 9)
end
|