aboutsummaryrefslogtreecommitdiff
path: root/vendor/x11iraf/xgterm/tabs.c
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 /vendor/x11iraf/xgterm/tabs.c
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'vendor/x11iraf/xgterm/tabs.c')
-rw-r--r--vendor/x11iraf/xgterm/tabs.c106
1 files changed, 106 insertions, 0 deletions
diff --git a/vendor/x11iraf/xgterm/tabs.c b/vendor/x11iraf/xgterm/tabs.c
new file mode 100644
index 00000000..c4152355
--- /dev/null
+++ b/vendor/x11iraf/xgterm/tabs.c
@@ -0,0 +1,106 @@
+/*
+ * $XConsortium: tabs.c,v 1.4 91/05/06 17:12:18 gildea Exp $
+ */
+
+/*
+ * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+ *
+ * All Rights Reserved
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of Digital Equipment
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior permission.
+ *
+ *
+ * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+/* tabs.c */
+
+#include "ptyx.h"
+
+/*
+ * This file presumes 32bits/word. This is somewhat of a crock, and should
+ * be fixed sometime.
+ */
+
+/*
+ * places tabstops at only every 8 columns
+ */
+TabReset(tabs)
+Tabs tabs;
+{
+ register int i;
+
+ for (i=0; i<TAB_ARRAY_SIZE; ++i)
+ tabs[i] = 0;
+
+ for (i=0; i<MAX_TABS; i+=8)
+ TabSet(tabs, i);
+}
+
+
+/*
+ * places a tabstop at col
+ */
+TabSet(tabs, col)
+ Tabs tabs;
+ int col;
+{
+ tabs[col >> 5] |= (1 << (col & 31));
+}
+
+/*
+ * clears a tabstop at col
+ */
+TabClear(tabs, col)
+ Tabs tabs;
+ int col;
+{
+ tabs[col >> 5] &= ~(1 << (col & 31));
+}
+
+/*
+ * returns the column of the next tabstop
+ * (or MAX_TABS - 1 if there are no more).
+ * A tabstop at col is ignored.
+ */
+TabNext (tabs, col)
+ Tabs tabs;
+ int col;
+{
+ extern XgtermWidget term;
+ register TScreen *screen = &term->screen;
+
+ if(screen->curses && screen->do_wrap && (term->flags & WRAPAROUND)) {
+ Index(screen, 1);
+ col = screen->cur_col = screen->do_wrap = 0;
+ }
+ for (++col; col<MAX_TABS; ++col)
+ if (tabs[col >> 5] & (1 << (col & 31)))
+ return (col);
+
+ return (MAX_TABS - 1);
+}
+
+/*
+ * clears all tabs
+ */
+TabZonk (tabs)
+Tabs tabs;
+{
+ register int i;
+
+ for (i=0; i<TAB_ARRAY_SIZE; ++i)
+ tabs[i] = 0;
+}