=============================================================================

    pfterm - piaip's flat terminal system
    also as the "Perfect Term"

    API Manual
    禡U

    VERSION 1.1
    ̫s: 2007/12/24 18:00   piaip

=============================================================================

    pfterm OFѨM non-ANSI based terminal Bz麥xDӽϥͪC 
    ¦t (screen.c) ]XƥOª ASCII rA
    ҥHbBz DBCSH ANSI XɭԫD`e~PοXơC
    t~wİϦrjp (ANSILINELEN) yO]OӰDC

    pfterm ùBz覡O۬@ӵ DBCS-aware ANSI TerminalA
    bsɤ~Yɲͳ̨ΤƪXC

=============================================================================

    pfterm API OH ncurses-like ¦C
    H fterm_* }Y API, hbO pfterm ϥΪ禡F
    Ӹ ncurses PWά۪ API hO@{ϥΪC

=============================================================================

//// common ncurse-like library interface   
//// ncurse ۮe

// initialization   l
void    initscr     (void);                 lt
int     resizeterm  (int rows, int cols);   վjp(rows,col)
int     endwin      (void);                 t

// cursor           
void    getyx       (int *y, int *x);       oثeЦm
void    move        (int y, int x);         ʴ

// clear            Me
void    clear       (void);                 Mùæ^I(0,0)
void    clrtoeol    (void);                 Mܦ
void    clrtobot    (void);                 Mܿù

// clear (non-ncurses)  M(DзǡAĳϥ)
void    clrtoln     (int ln);               qثe橹UM(]t)ln:[y,ln)
void    clrcurln    (void);                 Mثe, ۷ clrtoln(y+1)
void    clrtobeg    (void);                 Mܦ歺
void    clrtohome   (void);                 MܿùI(0,0)
void    clrscr      (void);                 Mù^I
void    clrregion   (int r1, int r2);       M[r1,r2][r2,r1]d (V)

// flushing         se
void    doupdate    (void);                 se (ueXܪ)
void    refresh     (void);                 se (YJhs)
void    redrawwin   (void);                 jUse( refresh)

// scrolling        
void    scroll      (void);                 VWʤ@
void    rscroll     (void);                 VUʤ@
void    scrl        (int rows);              rows  (ȩWtȩU)

// scrolling (non-ncurses) (DзǡAĳϥ)
void    region_scroll_up(int top, int bot); W@ [top,bot] e

// attributes       CPݩ
ftattr  attrget     (void);                 Ūثeݩ
void    attrset     (ftattr attr);          ]wݩ
void    attrsetfg   (ftattr attr);          ]we (0-7)
void    attrsetbg   (ftattr attr);          ]wI (0-7)

// output (non-ncurses) X (D ncurses )
void    outc        (unsigned char c);      Xr (it ANSI X)
void    outs        (const char *s);        Xr (it ANSI X)
void    outstr      (const char *str);      Xr (itANSIX)

            P.S: tbA outstr() |pһݪŶAçӳBTMA
            outstr()  DBCS ѯOAҥH|\ru\@bܶýXC
            outc/outs hOL¤eл\C
            `N outstr ثeä|hҼ{ str O_u DBCS rC

// readback         ŪùWr
int     instr       (char *str);            гBrŪ^ str B
int     innstr      (char *str, int n);     гB̦h n ӦrŪ^ str 
int     inansistr   (char *str, int n);     Ū^ ANSI X榡rC

            P.S: `N inansistr q`ݭnŶ (ĳϥ ANSILINELEN)
            |]^зǪݩ (ESC[m)AYŶh|rC
            in*str Ǧ^OŪ쪺rơC

// restore          ^s
void    scr_dump    (void *psb);            NثeesJ psb
void    scr_restore (void *psb);             psb ŪXe귽

            ثe psb O screen_backup_t*, dump eݪl
            dump |tmOArestore h|A
            ҥH@wnC

// grayout          Grayout HJHXt
void    grayout     (int y, int end, int level);

            N϶ [y, end] e@HXβHJBzC level m:
            GRAYOUT_DARK:   ରtr
            GRAYOUT_BOLD:   ରGr
            GRAYOUT_NORM:   ରLmqr

// deprecated       ĳγ
void    standout    (void);                 ݩʳ]ϥ
void    standend    (void);                 ]ݩ

            : pfterm ثeåu䴩 stand ݩʡAҥHuOϥծĪGC
            move() ܸӦmAerhݩʷ|ܡC

=============================================================================

//// flat-term internal processor
//// pfterm 禡

        nN pfterm WYөh (/BBS/ɮ/...) unwqnX
        ౵禡Yiֳt:

int     fterm_inbuf     (void);         // raw input  adapter
            LJ౵禡AǦ^O_ŪJC (̨Τ refresh )

void    fterm_rawc      (int c);        // raw output adapter
            X౵禡AX@Ӧr쩳htΡC

void    fterm_rawnewline(void);         // raw output adapter
            X౵禡AX@ӴŸ쩳htΡC

void    fterm_rawflush  (void);         // raw output adapter
            X౵禡AeXҦwXe쩳htΡC

------------------------------------------------------------------------------

        UOIs౵禡򥻩RO:

void    fterm_raws      (const char *s);                Xr
void    fterm_rawnc     (int c, int n);                 X n ӭƪr c
void    fterm_rawnum    (int arg);                      XƦr

void    fterm_rawcmd    (int arg, int defval, char c);  X ANSI RO
void    fterm_rawcmd2   (int arg1, int arg2, int defval, char c);

            rawcmd/rawcmd2 |X ESC_CHR '[' arg ';' arg2 c RO
            Y arg/arg2 P defval ۵hӰѼƷ|L

void    fterm_rawattr   (ftattr attr);      ܩhXݩʻPm
void    fterm_rawclear  (void);             XMe()RO
void    fterm_rawclreol (void);             XMܦRO
void    fterm_rawhome   (void);             XܭI(0,0)RO
void    fterm_rawscroll (int dy);           ʿù dy AWtU
void    fterm_rawcursor (void);             shЪmPݩ
void    fterm_rawmove   (int y, int x);     ʩhШwm
void    fterm_rawmove_opt(int y, int x);    ̨ΤƲʴ
void    fterm_rawmove_rel(int dy, int dx);  ʩhШw۹m

int     fterm_chattr    (char *s,           Nݩʱq oattr ର nattr һݪ 
            ftattr oattr, ftattr nattr);    ANSI XX s BC
                                            `Nsn(_Xn FTATTR_MINCMD=16 
                                            r), Ҽ{ۮeʫĳ 32 HWC

        UO禡Aĳϥ:

void    fterm_markdirty (void);             аOثeeݭns
void    fterm_exec      (void);             ()w쪺 ANSI RO
void    fterm_flippage  (void);             () (pfterm  dual buffer)
void    fterm_dupe2bk   (void);             ()PBI
int     fterm_prepare_str(int len);         ()wM׬ len Ŷ

=============================================================================
// vim:expandtab:sw=4:ts=4
