frame.m 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. Framem : module {
  2. PATH : con "/dis/acme/frame.dis";
  3. BACK, HIGH, BORD, TEXT, HTEXT, NCOL : con iota;
  4. FRTICKW : con 3;
  5. init : fn(mods : ref Dat->Mods);
  6. newframe : fn() : ref Frame;
  7. Frbox : adt {
  8. wid : int; # in pixels
  9. nrune : int; # <0 ==> negate and treat as break char
  10. ptr : string;
  11. bc : int; # break char
  12. minwid : int;
  13. };
  14. Frame : adt {
  15. font : ref Draw->Font; # of chars in the frame
  16. b : ref Draw->Image; # on which frame appears
  17. cols : array of ref Draw->Image; # colours
  18. r : Draw->Rect; # in which text appears
  19. entire : Draw->Rect; # of full frame
  20. box : array of ref Frbox;
  21. scroll : int; # call framescroll function
  22. p0 : int;
  23. p1 : int; # selection
  24. nbox, nalloc : int;
  25. maxtab : int; # max size of tab, in pixels
  26. nchars : int; # runes in frame
  27. nlines : int; # lines with text
  28. maxlines : int; # total # lines in frame
  29. lastlinefull : int; # last line fills frame
  30. modified : int; # changed since frselect()
  31. noglyph : int; # char to use when a char has 0 width glyph
  32. tick : ref Draw->Image; # typing tick
  33. tickback : ref Draw->Image; # saved image under tick
  34. ticked : int; # is tick on screen ?
  35. };
  36. frcharofpt : fn(f : ref Frame, p : Draw->Point) : int;
  37. frptofchar : fn(f : ref Frame, c : int) : Draw->Point;
  38. frdelete : fn(f : ref Frame, c1 : int, c2 : int) : int;
  39. frinsert : fn(f : ref Frame, s : string, l : int, i : int);
  40. frselect : fn(f : ref Frame, m : ref Draw->Pointer);
  41. frinit : fn(f : ref Frame, r : Draw->Rect, f : ref Draw->Font, b : ref Draw->Image, cols : array of ref Draw->Image);
  42. frsetrects : fn(f : ref Frame, r : Draw->Rect, b : ref Draw->Image);
  43. frclear : fn(f : ref Frame, x : int);
  44. frdrawsel : fn(f : ref Frame, p : Draw->Point, p0 : int, p1 : int, n : int);
  45. frdrawsel0 : fn(f : ref Frame, p : Draw->Point, p0 : int, p1 : int, i1 : ref Draw->Image, i2 : ref Draw->Image);
  46. frtick : fn(f : ref Frame, p : Draw->Point, n : int);
  47. };