diff options
Diffstat (limited to 'pkg/utilities/nttools/gtedit/gtwrdata.x')
-rw-r--r-- | pkg/utilities/nttools/gtedit/gtwrdata.x | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/pkg/utilities/nttools/gtedit/gtwrdata.x b/pkg/utilities/nttools/gtedit/gtwrdata.x new file mode 100644 index 00000000..bc0022e2 --- /dev/null +++ b/pkg/utilities/nttools/gtedit/gtwrdata.x @@ -0,0 +1,90 @@ +include <mach.h> +include <gset.h> +include <tbset.h> + +# GT_WRDATA -- Write out the complete table record for this point + +procedure gt_wrdata (gd, tp, wx, wy, x, y, npix) + +pointer gd # Graphics descriptor +pointer tp # Table descriptor +real wx # Cursor position +real wy # "" +real x[ARB] # Plotted data +real y[ARB] # Plotted data +int npix # # of pixels + +pointer sp +pointer cname, cunits, cfmt # pointers to scratch space for column info +pointer ctext, cp +int row, i, colnum, datatype, lendata, lenfmt, ncols +int ip +real r2min, r2, x0, y0 + +pointer tbpsta(), tbcnum() + +begin + # Allocate some space + call smark (sp) + call salloc (cname, SZ_LINE, TY_CHAR) + call salloc (cunits, SZ_LINE, TY_CHAR) + call salloc (cfmt, SZ_COLFMT, TY_CHAR) + call salloc (ctext, SZ_LINE, TY_CHAR) + + # Search for the nearest point + row = 0 + r2min = MAX_REAL + + # Transform world cursor coordintes to NDC + call gctran (gd, wx, wy, wx, wy, 1, 0) + do i = 1 , npix { + call gctran (gd, x[i], y[i], x0, y0, 1, 0) + if (x[i] < INDEFR && y[i] < INDEFR) + r2 = (wx - x0) ** 2 + (wy - y0) ** 2 + else + r2 = MAX_REAL + + if (r2 < r2min) { + r2min = r2 + row = i + } + } + + if (row != 0) { + # Deactivate the workstation + call gdeactivate (gd, 0) + # Now get the info on the columns + ncols = tbpsta (tp, TBL_NCOLS) + + call printf ("\n") + do i = 1, ncols { + cp = tbcnum (tp, i) + call tbcinf (cp, + colnum, Memc[cname], Memc[cunits], Memc[cfmt], + datatype, lendata, lenfmt) + + # Print column units (ignore trailing blanks) + # (calling sequence of inquotes modified by PEH on 13 Jan 1995) + call inquotes (Memc[cunits], Memc[cunits], SZ_LINE, NO) + call printf (" %-14s ") + call pargstr (Memc[cunits]) + + # Print column name (and include trailing blanks) + call inquotes (Memc[cname], Memc[cname], SZ_LINE, YES) + call printf ("%-16s ") + call pargstr (Memc[cname]) + + #Print column value + # Modified by by PEH, 9 Sept 1994: + # remove case statement, and skip leading blanks. + call tbegtt (tp, cp, row, Memc[ctext], SZ_LINE) + ip = 0 + while (Memc[ctext+ip] == ' ') + ip = ip + 1 + call printf ("%s\n") + call pargstr (Memc[ctext+ip]) + } + } + call greactivate (gd, AW_PAUSE) + call sfree (sp) +end |