tframe.h - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       tframe.h (2850B)
       ---
            1 #ifndef _FRAME_H_
            2 #define _FRAME_H_ 1
            3 #if defined(__cplusplus)
            4 extern "C" {
            5 #endif
            6 
            7 AUTOLIB(frame)
            8 
            9 typedef struct Frbox Frbox;
           10 typedef struct Frame Frame;
           11 
           12 enum{
           13         BACK,
           14         HIGH,
           15         BORD,
           16         TEXT,
           17         HTEXT,
           18         NCOL
           19 };
           20 
           21 #define        FRTICKW        3
           22 struct Frbox
           23 {
           24         long                wid;                /* in pixels */
           25         long                nrune;                /* <0 ==> negate and treat as break char */
           26         uchar        *ptr;
           27         short        bc;        /* break char */
           28         short        minwid;
           29 };
           30 
           31 struct Frame
           32 {
           33         Font                *font;                /* of chars in the frame */
           34         Display                *display;        /* on which frame appears */
           35         Image                *b;                /* on which frame appears */
           36         Image                *cols[NCOL];        /* text and background colors */
           37         Rectangle        r;                /* in which text appears */
           38         Rectangle        entire;                /* of full frame */
           39         void                        (*scroll)(Frame*, int);        /* scroll function provided by application */
           40         Frbox                *box;
           41         ulong                p0, p1;                /* selection */
           42         ushort                nbox, nalloc;
           43         ushort                maxtab;                /* max size of tab, in pixels */
           44         ushort                nchars;                /* # runes in frame */
           45         ushort                nlines;                /* # lines with text */
           46         ushort                maxlines;        /* total # lines in frame */
           47         ushort                lastlinefull;        /* last line fills frame */
           48         ushort                modified;        /* changed since frselect() */
           49         Image                *tick;        /* typing tick */
           50         Image                *tickback;        /* saved image under tick */
           51         int                        ticked;        /* flag: is tick onscreen? */
           52         int                        noredraw;        /* don't draw on the screen */
           53         int                        tickscale;        /* tick scaling factor */
           54 };
           55 
           56 ulong        frcharofpt(Frame*, Point);
           57 Point        frptofchar(Frame*, ulong);
           58 int        frdelete(Frame*, ulong, ulong);
           59 void        frinsert(Frame*, Rune*, Rune*, ulong);
           60 void        frselect(Frame*, Mousectl*);
           61 void        frselectpaint(Frame*, Point, Point, Image*);
           62 void        frdrawsel(Frame*, Point, ulong, ulong, int);
           63 Point        frdrawsel0(Frame*, Point, ulong, ulong, Image*, Image*);
           64 void        frinit(Frame*, Rectangle, Font*, Image*, Image**);
           65 void        frsetrects(Frame*, Rectangle, Image*);
           66 void        frclear(Frame*, int);
           67 void        frredraw(Frame*);
           68 
           69 uchar        *_frallocstr(Frame*, unsigned);
           70 void        _frinsure(Frame*, int, unsigned);
           71 Point        _frdraw(Frame*, Point);
           72 void        _frgrowbox(Frame*, int);
           73 void        _frfreebox(Frame*, int, int);
           74 void        _frmergebox(Frame*, int);
           75 void        _frdelbox(Frame*, int, int);
           76 void        _frsplitbox(Frame*, int, int);
           77 int        _frfindbox(Frame*, int, ulong, ulong);
           78 void        _frclosebox(Frame*, int, int);
           79 int        _frcanfit(Frame*, Point, Frbox*);
           80 void        _frcklinewrap(Frame*, Point*, Frbox*);
           81 void        _frcklinewrap0(Frame*, Point*, Frbox*);
           82 void        _fradvance(Frame*, Point*, Frbox*);
           83 int        _frnewwid(Frame*, Point, Frbox*);
           84 int        _frnewwid0(Frame*, Point, Frbox*);
           85 void        _frclean(Frame*, Point, int, int);
           86 void        _frdrawtext(Frame*, Point, Image*, Image*);
           87 void        _fraddbox(Frame*, int, int);
           88 Point        _frptofcharptb(Frame*, ulong, Point, int);
           89 Point        _frptofcharnb(Frame*, ulong, int);
           90 int        _frstrlen(Frame*, int);
           91 void        frtick(Frame*, Point, int);
           92 void        frinittick(Frame*);
           93 
           94 #define        NRUNE(b)        ((b)->nrune<0? 1 : (b)->nrune)
           95 #define        NBYTE(b)        strlen((char*)(b)->ptr)
           96 #if defined(__cplusplus)
           97 }
           98 #endif
           99 #endif