1 typedef enum Vis{ 2 None=0, 3 Some, 4 All, 5 }Vis; 6 7 enum{ 8 Clicktime=1000, /* one second */ 9 }; 10 11 typedef struct Flayer Flayer; 12 13 struct Flayer 14 { 15 Frame f; 16 long origin; /* offset of first char in flayer */ 17 long p0, p1; 18 long click; /* time at which selection click occurred, in HZ */ 19 Rune *(*textfn)(Flayer*, long, ulong*); 20 int user0; 21 void *user1; 22 Rectangle entire; 23 Rectangle scroll; 24 Rectangle lastsr; /* geometry of scrollbar when last drawn */ 25 Vis visible; 26 }; 27 28 void flborder(Flayer*, int); 29 void flclose(Flayer*); 30 void fldelete(Flayer*, long, long); 31 void flfp0p1(Flayer*, ulong*, ulong*); 32 void flinit(Flayer*, Rectangle, Font*, Image**); 33 void flinsert(Flayer*, Rune*, Rune*, long); 34 void flnew(Flayer*, Rune *(*fn)(Flayer*, long, ulong*), int, void*); 35 int flprepare(Flayer*); 36 Rectangle flrect(Flayer*, Rectangle); 37 void flrefresh(Flayer*, Rectangle, int); 38 void flresize(Rectangle); 39 int flselect(Flayer*); 40 void flsetselect(Flayer*, long, long); 41 void flstart(Rectangle); 42 void flupfront(Flayer*); 43 Flayer *flwhich(Point); 44 45 #define FLMARGIN 4 46 #define FLSCROLLWID 12 47 #define FLGAP 4 48 49 extern Image *maincols[NCOL]; 50 extern Image *cmdcols[NCOL]; 51