flayer.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. * This file is part of the UCB release of Plan 9. It is subject to the license
  3. * terms in the LICENSE file found in the top-level directory of this
  4. * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
  5. * part of the UCB release of Plan 9, including this file, may be copied,
  6. * modified, propagated, or distributed except according to the terms contained
  7. * in the LICENSE file.
  8. */
  9. typedef enum Vis{
  10. None=0,
  11. Some,
  12. All,
  13. }Vis;
  14. enum{
  15. Clicktime=1000, /* one second */
  16. };
  17. typedef struct Flayer Flayer;
  18. struct Flayer
  19. {
  20. Frame f;
  21. long origin; /* offset of first char in flayer */
  22. long p0, p1;
  23. long click; /* time at which selection click occurred, in HZ */
  24. Rune *(*textfn)(Flayer*, long, uint32_t*);
  25. int user0;
  26. void *user1;
  27. Rectangle entire;
  28. Rectangle scroll;
  29. Rectangle lastsr; /* geometry of scrollbar when last drawn */
  30. Vis visible;
  31. };
  32. void flborder(Flayer*, int);
  33. void flclose(Flayer*);
  34. void fldelete(Flayer*, long, long);
  35. void flfp0p1(Flayer*, uint32_t*, uint32_t*);
  36. void flinit(Flayer*, Rectangle, Font*, Image**);
  37. void flinsert(Flayer*, Rune*, Rune*, long);
  38. void flnew(Flayer*, Rune *(*fn)(Flayer*, long, uint32_t*), int,
  39. void*);
  40. int flprepare(Flayer*);
  41. Rectangle flrect(Flayer*, Rectangle);
  42. void flrefresh(Flayer*, Rectangle, int);
  43. void flresize(Rectangle);
  44. int flselect(Flayer*);
  45. void flsetselect(Flayer*, long, long);
  46. void flstart(Rectangle);
  47. void flupfront(Flayer*);
  48. Flayer *flwhich(Point);
  49. #define FLMARGIN 4
  50. #define FLSCROLLWID 12
  51. #define FLGAP 4
  52. extern Image *maincols[NCOL];
  53. extern Image *cmdcols[NCOL];