diff options
Diffstat (limited to 'noao/onedspec/ecidentify/ecmark.x')
-rw-r--r-- | noao/onedspec/ecidentify/ecmark.x | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/noao/onedspec/ecidentify/ecmark.x b/noao/onedspec/ecidentify/ecmark.x new file mode 100644 index 00000000..58b02d0f --- /dev/null +++ b/noao/onedspec/ecidentify/ecmark.x @@ -0,0 +1,71 @@ +include <gset.h> +include <pkg/center1d.h> +include "ecidentify.h" + +procedure ec_mark (ec, feature) + +pointer ec # ID pointer +int feature + +int pix +real x, y +real mx, my, x1, x2, y1, y2, tick, gap +pointer sp, format, label +double smw_c1trand() + +define TICK .03 # Tick size in NDC +define GAP .02 # Gap size in NDC + +begin + call ggwind (EC_GP(ec), x1, x2, y1, y2) + + x = FIT(ec,feature) + + if ((x < min (x1, x2)) || (x > max (x1, x2))) + return + + pix = smw_c1trand (EC_PL(ec), PIX(ec,feature)) + pix = max (1, min (pix, EC_NPTS(ec) - 1)) + + call smark (sp) + call salloc (format, SZ_LINE, TY_CHAR) + call salloc (label, SZ_LINE, TY_CHAR) + switch (EC_FTYPE(ec)) { + case EMISSION: + y = max (IMDATA(ec,pix), IMDATA(ec,pix+1)) + tick = TICK + gap = GAP + call strcpy ("u=180;h=c;v=b;s=0.5", Memc[format], SZ_LINE) + case ABSORPTION: + y = min (IMDATA(ec,pix), IMDATA(ec,pix+1)) + tick = -TICK + gap = -GAP + call strcpy ("u=0;h=c;v=t;s=0.5", Memc[format], SZ_LINE) + } + + call gctran (EC_GP(ec), x, y, mx, my, 1, 0) + call gctran (EC_GP(ec), mx, my + gap, x1, y1, 0, 1) + call gctran (EC_GP(ec), mx, my + gap + tick, x1, y2, 0, 1) + call gline (EC_GP(ec), x1, y1, x1, y2) + + call gctran (EC_GP(ec), mx, my + tick + 2 * gap, x1, y2, 0, 1) + switch (EC_LABELS(ec)) { + case 2: + call sprintf (Memc[label], SZ_LINE, "%d") + call pargi (feature) + call gtext (EC_GP(ec), x1, y2, Memc[label], Memc[format]) + case 3: + call sprintf (Memc[label], SZ_LINE, "%0.2f") + call pargd (PIX(ec,feature)) + call gtext (EC_GP(ec), x1, y2, Memc[label], Memc[format]) + case 4: + if (!IS_INDEFD (USER(ec,feature))) { + call sprintf (Memc[label], SZ_LINE, "%0.4f") + call pargd (USER(ec,feature)) + call gtext (EC_GP(ec), x1, y2, Memc[label], Memc[format]) + } + } + + call sfree (sp) + call gflush (EC_GP(ec)) +end |