//box.h Copyright (C) 1989-97 I.Pedley (CTPP) Sun 17-Jan-1999 at 23:42:33

//basic box support
struct BOX{UI t,l,b,r;};

CH* savebox(BOX* b);
VD  restorebox(BOX* b,CH* ptr);
VD  clearbox(BOX* b,UL col);
VD  clearline(BOX* b,UL col,UL line);
VD  sbox1   (BOX* b,UL no,CH* str,UI col);

VD  highlight(UL row,UL col,UL colour,UL len);

VD  hilite   (BOX* b,UL row,UL colour);
SL  displayat(BOX* b,UL row,UL col,CH* format,...);

VD  obclearbox (UL dispoff,BOX* b,UL col);
VD  obsbox1    (UL dispoff,BOX* b,UL no,CH* str,UI col);
VD  obhilite   (UL dispoff,BOX* b,UL row,UL colour);
SL  obdisplayat(UL dispoff,BOX* b,UL row,UL col,CH* format,...);

//some help when managing display lists
struct BOXCUR
{
    UL  visibles;
    UL  total;
    UL  scrollinc;
    UL  start;
    UL  cur;
};
VD  cursorkey(UL key,BOXCUR* c);
VD  setcursor(UL idx,BOXCUR* c);

//dual mode display functions
CH* dsavebox(BOX* b);
VD  drestorebox(BOX* b,CH* ptr);
VD  dbox1(BOX* b,UL no,CH* str,UI col);
VD  dobsbox1   (UL dispoff,BOX* b,UL no,CH* str,UI col);
VD  dobclearbox(UL dispoff,BOX* b,UL col);
VD  dclear(BOX* b,UL col);
VD  dclearpane(BOX* b,UL col);