aboutsummaryrefslogtreecommitdiff
path: root/noao/onedspec/ecidentify/ecmark.x
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /noao/onedspec/ecidentify/ecmark.x
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'noao/onedspec/ecidentify/ecmark.x')
-rw-r--r--noao/onedspec/ecidentify/ecmark.x71
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