Annotation of coherent/g/usr/bin/vsh/winlib/scrollbar.c, revision 1.1

1.1     ! root        1: /*
        !             2:  *      Functions for scrollbars
        !             3:  *
        !             4:  *      Copyright (c) 1992-93 by Udo Munk
        !             5:  */
        !             6: 
        !             7: #ifdef AIX
        !             8: #define NLS
        !             9: #endif
        !            10: 
        !            11: #include <curses.h>
        !            12: #include "winfun.h"
        !            13: 
        !            14: extern WINDOW *open_window();
        !            15: extern void free();
        !            16: 
        !            17: SCROLLBAR *create_scrollbar(y, x, s)
        !            18: int x, y, s;
        !            19: {
        !            20:        register SCROLLBAR *sp;
        !            21:        register int i;
        !            22: 
        !            23:        if ((sp = (SCROLLBAR *) malloc(sizeof(SCROLLBAR))) == NULL)
        !            24:                nomem();
        !            25:        if ((sp->sc_window = open_window(s, 2, y, x)) == (WINDOW *) 0)
        !            26:                nomem();
        !            27:        sp->sc_size = s;
        !            28:        sp->sc_position = 1;
        !            29:        mvwaddch(sp->sc_window, 0, 1, u_arrow);
        !            30:        mvwaddch(sp->sc_window, 1, 1, fullboard);
        !            31:        for (i = 2; i < s -1; i++)
        !            32:                mvwaddch(sp->sc_window, i, 1, checkboard);
        !            33:        mvwaddch(sp->sc_window, s-1, 1, d_arrow);
        !            34:        wrefresh(sp->sc_window);
        !            35:        return (sp);
        !            36: }
        !            37: 
        !            38: remove_scrollbar(p)
        !            39: SCROLLBAR *p;
        !            40: {
        !            41:        close_window(p->sc_window);
        !            42:        free((char *) p);
        !            43: }
        !            44: 
        !            45: update_slider(s, n, p)
        !            46: SCROLLBAR *s;
        !            47: int n, p;
        !            48: {
        !            49:        register int np;
        !            50: 
        !            51:        /* compute new position of the slider */
        !            52:        if (p == 0)
        !            53:                np = 1;
        !            54:        else if (p == n-1)
        !            55:                np = s->sc_size - 2;
        !            56:        else
        !            57:                np = (s->sc_size - 2) * p / n + 1;
        !            58: 
        !            59:        /* update position of the slider */
        !            60:        if (np != s->sc_position) {
        !            61:                mvwaddch(s->sc_window, s->sc_position, 1, checkboard);
        !            62:                mvwaddch(s->sc_window, np, 1, fullboard);
        !            63:                s->sc_position = np;
        !            64:                wrefresh(s->sc_window);
        !            65:        }
        !            66: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.