# class Curses::Pad

## Description¶ ↑

A Pad is like a Window but allows for scrolling of contents that cannot fit on the screen. Pads do not refresh automatically, use #refresh or #noutrefresh instead.

### Public Class Methods

new(height, width) click to toggle source

Construct a new Curses::Pad with constraints of `height` lines, `width` columns

    static VALUE
    pad_initialize(VALUE obj, VALUE h, VALUE w)
    {
        struct windata *padp;
        WINDOW *window;

        curses_init_screen();
        TypedData_Get_Struct(obj, struct windata, &windata_type, padp);
        if (padp->window) delwin(padp->window);
        window = newpad(NUM2INT(h), NUM2INT(w));
        wclear(window);
        padp->window = window;

        return obj;
    }

### Public Instance Methods

noutrefresh(pad_minrow, pad_mincol, screen_minrow, screen_mincol, screen_maxrow, screen_maxcol) click to toggle source

Refreshes the pad. `pad_minrow` and pad_mincol+ define the upper-left corner of the rectangle to be displayed. `screen_minrow`, `screen_mincol`, `screen_maxrow`, `screen_maxcol` define the edges of the rectangle to be displayed on the screen.

    static VALUE
    pad_noutrefresh(VALUE obj, VALUE pminrow, VALUE pmincol, VALUE sminrow,
                    VALUE smincol, VALUE smaxrow, VALUE smaxcol)
    {
        struct windata *padp;
        int pmr, pmc, smr, smc, sxr, sxc;

        pmr = NUM2INT(pminrow);
        pmc = NUM2INT(pmincol);
        smr = NUM2INT(sminrow);
        smc = NUM2INT(smincol);
        sxr = NUM2INT(smaxrow);
        sxc = NUM2INT(smaxcol);

        GetWINDOW(obj, padp);
    #ifdef HAVE_DOUPDATE
        pnoutrefresh(padp->window, pmr, pmc, smr, smc, sxr, sxc);
    #else
        prefresh(padp->window, pmr, pmc, smr, smc, sxr, sxc);
    #endif

        return Qnil;
    }

refresh(pad_minrow, pad_mincol, screen_minrow, screen_mincol, screen_maxrow, screen_maxcol) click to toggle source

Refreshes the pad. `pad_minrow` and pad_mincol+ define the upper-left corner of the rectangle to be displayed. `screen_minrow`, `screen_mincol`, `screen_maxrow`, `screen_maxcol` define the edges of the rectangle to be displayed on the screen.

    static VALUE
    pad_refresh(VALUE obj, VALUE pminrow, VALUE pmincol, VALUE sminrow,
                VALUE smincol, VALUE smaxrow, VALUE smaxcol)
    {
        struct windata *padp;
        int pmr, pmc, smr, smc, sxr, sxc;

        pmr = NUM2INT(pminrow);
        pmc = NUM2INT(pmincol);
        smr = NUM2INT(sminrow);
        smc = NUM2INT(smincol);
        sxr = NUM2INT(smaxrow);
        sxc = NUM2INT(smaxcol);

        GetWINDOW(obj, padp);
        prefresh(padp->window, pmr, pmc, smr, smc, sxr, sxc);

        return Qnil;
    }

subpad(height, width, begin_x, begin_y) click to toggle source

Construct a new subpad with constraints of `height` lines, `width` columns, begin at `begin_x` line, and `begin_y` columns on the pad.

    static VALUE
    pad_subpad(VALUE obj, VALUE height, VALUE width, VALUE begin_x, VALUE begin_y)
    {
        struct windata *padp;
        WINDOW *sub_pad;
        VALUE pad;
        int h, w, x, y;

        h = NUM2INT(height);
        w = NUM2INT(width);
        x = NUM2INT(begin_x);
        y = NUM2INT(begin_y);
        GetWINDOW(obj, padp);
        sub_pad = subpad(padp->window, h, w, x, y);
        pad = prep_window(rb_obj_class(obj), sub_pad);

        return pad;
    }