Class: Curses::Pad

Inherits:
Window
  • Object
show all
Defined in:
ext/curses/curses.c,
ext/curses/curses.c

Overview

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 Pad#refresh or Pad#noutrefresh instead.

Instance Method Summary collapse

Methods inherited from Window

#<<, #addch, #addstr, #attroff, #attron, #attrset, #begx, #begy, #bkgd, #bkgdset, #box, #clear, #close, #clrtoeol, #color_set, #curx, #cury, #delch, #deleteln, #derwin, #erase, #get_char, #getbkgd, #getch, #getstr, #idlok, #inch, #insch, #insertln, #keypad, #keypad=, #line_touched?, #maxx, #maxy, #move, #move_relative, #nodelay=, #redraw, #resize, #scrl, #scroll, #scrollok, #setpos, #setscrreg, #standend, #standout, #subwin, #timeout=, #touch, #touch_line, #touched?, #untouch

Constructor Details

#initialize(h, w) ⇒ Object

call-seq:

new(height, width)

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



2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
# File 'ext/curses/curses.c', line 2904

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;
}

Instance Method Details

#noutrefresh(pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol) ⇒ Object

call-seq:

pad.noutrefresh(pad_minrow, pad_mincol, screen_minrow, screen_mincol, screen_maxrow, screen_maxcol)

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.



2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
# File 'ext/curses/curses.c', line 2992

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(pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol) ⇒ Object

call-seq:

pad.refresh(pad_minrow, pad_mincol, screen_minrow, screen_mincol, screen_maxrow, screen_maxcol)

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.



2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
# File 'ext/curses/curses.c', line 2960

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) ⇒ Object

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



2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
# File 'ext/curses/curses.c', line 2929

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;
}