aboutsummaryrefslogtreecommitdiff
path: root/pkg/images/tv/iis/ids/testcode/grin.x
blob: b76e58b2fc552345c1d1f14d1d97c0dc34924b51 (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
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

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

define	DIM	512
define	MCXSCALE	64
define	MCYSCALE	64

# create a grey scale test image, using frames 1 and 2, and 
# position the cursor in the upper right quadrant.

procedure t_im()

pointer	gp
char	device[SZ_FNAME]

pointer	gopen()
int	open()
int	dd[LEN_GKIDD]

short	i,data[DIM+1]
short	display[6]
short	set_image[3]
real	y, sx, sy
int	key

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)

	data[1] = IDS_R_HARD
	call gescape ( gp, IDS_RESET, data, 1)
	# display all frames off
	display[1] = IDS_OFF
	display[2] = IDS_EOD	# all frames
	display[3] = IDS_EOD	# all colors
	display[4] = IDS_EOD	# all quads
	call gescape ( gp, IDS_DISPLAY_I, display, 6)
	# display frames 1, 2 on -- 1 red, 2 green
	display[1] = IDS_ON
	display[2] = 1
	display[3] = IDS_EOD
	display[4] = IDS_RED
	display[5] = IDS_EOD
	display[6] = IDS_EOD	# all quads
	call gescape ( gp, IDS_DISPLAY_I, display, 6)
	display[1] = IDS_ON
	display[2] = 2
	display[3] = IDS_EOD
	display[4] = IDS_GREEN
	display[5] = IDS_EOD
	display[6] = IDS_EOD	# all quads
	call gescape ( gp, IDS_DISPLAY_I, display, 6)

	# now set up grey scale changing upward in frame 1
	set_image[1] = 1
	set_image[2] = IDS_EOD
	set_image[3] = IDS_EOD	# all planes
	call gescape ( gp, IDS_SET_IP, set_image, 3)
	for ( i = 1; i <= DIM ; i = i + 1 ) {
	    call amovks ( i-1, data, DIM)
	    y = real(i-1)/(DIM-1)
	    call gpcell ( gp, data, DIM, 1, 0., y, 1., y)
	}

	# grey scale changing horizontally in frame 2
	set_image[1] = 2
	call gescape ( gp, IDS_SET_IP, set_image, 3)
	do i = 1, DIM
	    data[i] = i-1
	call gpcell ( gp, data, DIM, 1, 0., 0., 1., 1.)

	# set the cursor
	call gscur ( gp, 0.0, 1.0)

	# read cursor
	call ggcur (gp, sx, sy, key)
	call eprintf("cursor read as : (%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)

	# all done
	call gclose (gp)
	call ids_close
end