aboutsummaryrefslogtreecommitdiff
path: root/noao/onedspec/ecidentify/ecgdata.x
blob: 1087d38c1ce15ae6723f8f7a406cf088e32134a8 (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
include	<imhdr.h>
include	<imio.h>
include	<pkg/gtools.h>
include	<smw.h>
include	<units.h>
include	"ecidentify.h"

# EC_GDATA -- Get image data.

procedure ec_gdata (ec)

pointer	ec				# ID pointer

int	i, j
pointer	im, mw, sh, sp, str1, str2

double	smw_c1trand()
pointer	immap(), smw_openim(), smw_sctran()
errchk	immap, smw_openim, shdr_open

begin
	# Map the image.
	im = immap (Memc[EC_IMAGE(ec)], READ_ONLY, 0)

	# Free previous data
	do i = 1, EC_NLINES(ec)
	    call shdr_close (SH(ec,i))
	call mfree (EC_SHS(ec), TY_POINTER)
	call mfree (EC_PIXDATA(ec), TY_DOUBLE)

	# Set MWCS
	mw = smw_openim (im)
	EC_LP(ec) = smw_sctran (mw, "logical", "physical", 1)
	EC_PL(ec) = smw_sctran (mw, "physical", "logical", 1)

	# Allocate new vectors.
	EC_NCOLS(ec) = IM_LEN(im, 1)
	EC_NLINES(ec) = IM_LEN(im, 2)
	call calloc (EC_SHS(ec), EC_NLINES(ec), TY_POINTER)
	call malloc (EC_PIXDATA(ec), EC_NCOLS(ec)*EC_NLINES(ec), TY_DOUBLE)

	# Set the coordinates.
	sh = NULL
	do j = 1, EC_NLINES(ec) {
	    call shdr_open (im, mw, j, 1, INDEFI, SHDATA, sh)
	    if (EC_UN(ec) != NULL)
		iferr (call shdr_units (sh, UN_UNITS(EC_UN(ec))))
		    ;
	    if (j != EC_NLINES(ec))
		call shdr_copy (sh, SH(ec,j), NO)
	    else
		SH(ec,j) = sh
	    call ec_gline (ec, j)
	    do i = 1, EC_NPTS(ec)
	        PIXDATA(ec,i) = smw_c1trand (EC_LP(ec), double(i))
	}
	EC_LINE(ec) = 1
	call ec_gline (ec, EC_LINE(ec))
	EC_AP(ec) = APS(ec,EC_LINE(ec))
	EC_ORDER(ec) = ORDERS(ec,EC_LINE(ec))

	# Set graph title.
	call smark (sp)
	call salloc (str1, SZ_LINE, TY_CHAR)
	call salloc (str2, SZ_LINE, TY_CHAR)

	call sprintf (Memc[str1], SZ_LINE, "ecidentify %s: %s")
	    call pargstr (Memc[EC_IMAGE(ec)])
	    call pargstr (IM_TITLE(im))
	call gt_sets (EC_GT(ec), GTTITLE, Memc[str1])

	call imunmap (im)
	call sfree (sp)
end