summaryrefslogtreecommitdiff
path: root/wintable/new
diff options
context:
space:
mode:
Diffstat (limited to 'wintable/new')
-rw-r--r--wintable/new/coord.h31
-rw-r--r--wintable/new/events.h54
-rw-r--r--wintable/new/util.h14
3 files changed, 99 insertions, 0 deletions
diff --git a/wintable/new/coord.h b/wintable/new/coord.h
new file mode 100644
index 0000000..1814e87
--- /dev/null
+++ b/wintable/new/coord.h
@@ -0,0 +1,31 @@
+// 4 december 2014
+
+typedef struct rowcol rowcol;
+
+struct rowcol {
+ intptr_t row;
+ intptr_t column;
+};
+
+static rowcol clientCoordToRowColumn(struct table *t, POINT pt)
+{
+ // TODO
+}
+
+// same as client coordinates, but stored in a lParam (like the various mouse messages provide)
+static rowcol lParamToRowColumn(struct table *t, LPARAM lParam)
+{
+ POINT pt;
+
+ pt.x = GET_X_LPARAM(lParam);
+ pt.y = GET_Y_LPARAM(lParam);
+ return clientCoordToRowColumn(t, pt);
+}
+
+// returns TRUE if the row is visible and thus has client coordinates; FALSE otherwise
+static BOOL rowColumnToClientCoord(struct table *t, rowcol rc, struct POINT *pt)
+{
+ // TODO
+}
+
+// TODO idealCoordToRowColumn/rowColumnToIdealCoord?
diff --git a/wintable/new/events.h b/wintable/new/events.h
new file mode 100644
index 0000000..cef722a
--- /dev/null
+++ b/wintable/new/events.h
@@ -0,0 +1,54 @@
+// 5 december 2014
+
+static handlerfunc keyDownHandlers[] = {
+ NULL,
+};
+
+static handlerfunc keyUpHandlers[] = {
+ NULL,
+};
+
+static handlerfunc charHandlers[] = {
+ NULL,
+};
+
+static handlerfunc mouseMoveHandlers[] = {
+ NULL,
+};
+
+static handlerfunc mouseLeaveHandlers[] = {
+ NULL,
+};
+
+static handlerfunc lbuttonDownHandlers[] = {
+ NULL,
+};
+
+static handlerufnc lbuttonUpHandlers[] = {
+ NULL,
+};
+
+static handlerfunc mouseWheelHandlers[] = {
+ NULL,
+};
+
+// TODO WM_MOUSEHOVER, other mouse buttons
+
+HANDLER(events)
+{
+ switch (uMsg) {
+#define eventHandler(msg, array) \
+ case msg: \
+ return runHandlers(array, t, uMsg, wParam, lParam, lResult);
+ eventHandler(WM_KEYDOWN, keyDownHandlers)
+ eventHandler(WM_KEYUP, keyUpHandlers)
+ eventHandler(WM_CHAR, charHandlers)
+ eventHandler(WM_MOUSEMOVE, mouseMoveHandlers)
+ eventHandler(WM_MOUSELEAVE, mouseLeaveHandlers)
+ eventHandler(WM_LBUTTONDOWN, lbuttonDownHandlers)
+ eventHandler(WM_LBUTTONUP, lbuttonUpHandlers)
+ eventHandler(WM_MOUSEWHEEL, mouseWheelHandlers)
+#undef eventHandler
+ }
+ return FALSE;
+}
diff --git a/wintable/new/util.h b/wintable/new/util.h
new file mode 100644
index 0000000..c6cbfb3
--- /dev/null
+++ b/wintable/new/util.h
@@ -0,0 +1,14 @@
+// 4 december 2014
+
+typedef BOOL (*handlerfunc)(struct table *, UINT, WPARAM, LPARAM, LRESULT *);
+#define HANDLER(name) static BOOL name(struct table *t, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *lResult)
+
+static BOOL runHandlers(handlerfunc *list, struct table *t, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *lResult)
+{
+ handlerfunc *p;
+
+ for (p = list; *p != NULL; p++)
+ if ((*(*p))(t, uMsg, wParam, lParam, lResult))
+ return TRUE;
+ return FALSE;
+}