revert between 56095 -> 55830 in arch
[AROS.git] / rom / hidds / mouse / include / mouse.h
blob5858afe5e66047edbc38fdfc16a43fcac9927107
1 #ifndef HIDD_MOUSE_H
2 #define HIDD_MOUSE_H
4 /*
5 Copyright © 1995-2013, The AROS Development Team. All rights reserved.
6 $Id$
8 Desc: Include for the mouse hidd.
9 Lang: English.
12 #ifndef OOP_OOP_H
13 # include <oop/oop.h>
14 #endif
16 #ifndef PROTO_OOP_H
17 # include <proto/oop.h>
18 #endif
20 #define CLID_Hidd_Mouse "hidd.mouse"
21 #define CLID_HW_Mouse "hw.mouse"
23 #define IID_Hidd_Mouse "hidd.mouse"
25 #define HiddMouseAB __abHidd_Mouse
27 #ifndef __OOP_NOATTRBASES__
28 extern OOP_AttrBase HiddMouseAB;
29 #endif
31 /* Attrs */
33 enum {
35 aoHidd_Mouse_IrqHandler,
36 aoHidd_Mouse_IrqHandlerData,
37 aoHidd_Mouse_State,
38 aoHidd_Mouse_RelativeCoords,
39 aoHidd_Mouse_Extended,
41 num_Hidd_Mouse_Attrs
45 #define aHidd_Mouse_IrqHandler (aoHidd_Mouse_IrqHandler + HiddMouseAB)
46 #define aHidd_Mouse_IrqHandlerData (aoHidd_Mouse_IrqHandlerData + HiddMouseAB)
47 #define aHidd_Mouse_State (aoHidd_Mouse_State + HiddMouseAB)
48 #define aHidd_Mouse_RelativeCoords (aoHidd_Mouse_RelativeCoords + HiddMouseAB)
49 #define aHidd_Mouse_Extended (aoHidd_Mouse_Extended + HiddMouseAB)
51 #define IS_HIDDMOUSE_ATTR(attr, idx) IS_IF_ATTR(attr, idx, HiddMouseAB, num_Hidd_Mouse_Attrs)
53 /* Parameter values for the IRQ handler */
55 struct pHidd_Mouse_Event
57 UWORD button;
58 WORD x;
59 WORD y;
60 UWORD type; /* See below */
63 struct pHidd_Mouse_ExtEvent
65 UWORD button;
66 WORD x;
67 WORD y;
68 UWORD type;
69 UWORD flags; /* See below */
72 /* Event types */
73 enum {
74 vHidd_Mouse_Press,
75 vHidd_Mouse_Release,
76 vHidd_Mouse_Motion,
77 vHidd_Mouse_WheelMotion
80 /* Button codes */
81 enum {
82 vHidd_Mouse_NoButton,
83 vHidd_Mouse_Button1,
84 vHidd_Mouse_Button2,
85 vHidd_Mouse_Button3
88 /* Flags */
89 #define vHidd_Mouse_Relative 0x0001
91 enum
93 moHidd_Mouse_AddHardwareDriver = 0,
94 moHidd_Mouse_RemHardwareDriver,
96 NUM_Mouse_METHODS
99 struct pHidd_Mouse_AddHardwareDriver
101 OOP_MethodID mID;
102 OOP_Class *driverClass;
103 struct TagItem *tags;
106 struct pHidd_Mouse_RemHardwareDriver
108 OOP_MethodID mID;
109 OOP_Object *driverObject;
112 #if !defined(HiddMouseBase) && !defined(__OOP_NOMETHODBASES__)
113 #define HiddMouseBase HIDD_Mouse_GetMethodBase(__obj)
115 static inline OOP_MethodID HIDD_Mouse_GetMethodBase(OOP_Object *obj)
117 static OOP_MethodID MouseMethodBase;
119 if (!MouseMethodBase)
121 struct Library *OOPBase = (struct Library *)OOP_OOPBASE(obj);
123 MouseMethodBase = OOP_GetMethodID(IID_Hidd_Mouse, 0);
126 return MouseMethodBase;
128 #endif
130 #define HIDD_Mouse_AddHardwareDriver(obj, driverClass, tags) \
131 ({OOP_Object *__obj = obj;\
132 HIDD_Mouse_AddHardwareDriver_(HiddMouseBase, __obj, driverClass, tags); })
134 static inline OOP_Object *HIDD_Mouse_AddHardwareDriver_(OOP_MethodID MouseMethodBase, OOP_Object *obj, OOP_Class *driverClass, struct TagItem *tags)
136 struct pHidd_Mouse_AddHardwareDriver p;
138 p.mID = MouseMethodBase + moHidd_Mouse_AddHardwareDriver;
139 p.driverClass = driverClass;
140 p.tags = tags;
142 return (OOP_Object *)OOP_DoMethod(obj, (OOP_Msg) &p);
145 #define HIDD_Mouse_RemHardwareDriver(obj, driverObject) \
146 ({OOP_Object *__obj = obj; \
147 HIDD_Mouse_RemHardwareDriver_(HiddMouseBase, __obj, driverObject); })
149 static inline void HIDD_Mouse_RemHardwareDriver_(OOP_MethodID MouseMethodBase, OOP_Object *obj, OOP_Object *driver)
151 struct pHidd_Mouse_RemHardwareDriver p;
153 p.mID = MouseMethodBase + moHidd_Mouse_RemHardwareDriver;
154 p.driverObject = driver;
156 OOP_DoMethod(obj, (OOP_Msg) &p);
158 #endif /* HIDD_MOUSE_H */