MSMOUSE.DEF 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. (* Release 3.10 *)
  2. (*-------------------------------------------------------------------------*
  3. * *
  4. * MSMOUSE.DEF - Modula-2 Microsoft-compatible mouse interface *
  5. * *
  6. * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
  7. * All Rights Reserved *
  8. * *
  9. *--------------------------------------------------------------------------*)
  10. (*# call(o_a_copy => off,
  11. o_a_size => on) *)
  12. (*%F _fdata *)
  13. (*# call(seg_name => null) *)
  14. (*# data(seg_name => null) *)
  15. (*%E *)
  16. (*# module(implementation=>off) *)
  17. DEFINITION MODULE MsMouse;
  18. IMPORT Lib;
  19. TYPE
  20. MsData = RECORD
  21. left_pressed, middle_pressed, right_pressed: BOOLEAN;
  22. actions: CARDINAL;
  23. row, col: INTEGER;
  24. END;
  25. MsRange = RECORD
  26. max_col,min_col, max_row, min_row: INTEGER;
  27. END;
  28. MsMotion = RECORD
  29. vert, horiz: INTEGER;
  30. END;
  31. GraphcurMask = ARRAY [0..15] OF CARDINAL;
  32. MsGraphcur = RECORD
  33. row, col: INTEGER;
  34. screen_mask: GraphcurMask;
  35. cursor_mask: GraphcurMask;
  36. END;
  37. Hardware = RECORD
  38. start_scan, end_scan: INTEGER;
  39. END;
  40. Software = RECORD
  41. screen_mask, cursor_mask: CARDINAL;
  42. END;
  43. MsTextCur = RECORD
  44. type: BOOLEAN;
  45. CASE : BOOLEAN OF
  46. | TRUE : H: Hardware;
  47. | FALSE : S: Software;
  48. END;
  49. END;
  50. MsSense = RECORD
  51. h_speed, v_speed, threshold: INTEGER;
  52. END;
  53. (*# save *)
  54. (*# call(near_call=>off) *)
  55. MouseFuncType = PROCEDURE(CARDINAL,CARDINAL,CARDINAL,CARDINAL);
  56. (*# restore *)
  57. MsInterrupt = RECORD
  58. IntFunc: MouseFuncType;
  59. mask: CARDINAL;
  60. END;
  61. CONST
  62. _MS_ON = TRUE;
  63. _MS_OFF = FALSE;
  64. _MS_HIDE = FALSE;
  65. _MS_SHOW = TRUE;
  66. _MS_MIDDLE = 2;
  67. _MS_LEFT = 0;
  68. _MS_RIGHT = 1;
  69. _MS_HARD = TRUE;
  70. _MS_SOFT = FALSE;
  71. PROCEDURE Reset(): INTEGER;
  72. PROCEDURE Cursor(Mode: BOOLEAN);
  73. PROCEDURE DriverSize(): CARDINAL;
  74. PROCEDURE GetMotion(VAR mp: MsMotion);
  75. PROCEDURE GetPage(): CARDINAL;
  76. PROCEDURE GetPress(Button: INTEGER; VAR mp: MsData);
  77. PROCEDURE GetRelease(Button: INTEGER; VAR mp: MsData);
  78. PROCEDURE GetSensitivity(VAR mp: MsSense);
  79. PROCEDURE GetStatus(VAR mp: MsData);
  80. PROCEDURE LightPen(Mode: BOOLEAN);
  81. PROCEDURE RestoreDriver(Buffer: ADDRESS);
  82. PROCEDURE SaveDriver(Buffer: ADDRESS);
  83. PROCEDURE SetDouble(Threshold: INTEGER);
  84. PROCEDURE SetGraphCursor(VAR mp: MsGraphcur);
  85. PROCEDURE SetInterrupt(VAR mp: MsInterrupt);
  86. PROCEDURE SetMickeys(Vert, Horiz: INTEGER);
  87. PROCEDURE SetPage(Page: CARDINAL);
  88. PROCEDURE SetPosition(Row, Col: INTEGER);
  89. PROCEDURE SetRange(mp: MsRange);
  90. PROCEDURE SetSensitivity(mp: MsSense);
  91. PROCEDURE SetTextCursor(mp: MsTextCur);
  92. PROCEDURE SwapInterrupt(VAR mp: MsInterrupt);
  93. PROCEDURE UpdateScreen(x1, y1, x2, y2: INTEGER);
  94. END MsMouse.