[Bf-blender-cvs] [3dc44f8c89a] master: Event System: improve event printing

Campbell Barton noreply at git.blender.org
Mon Mar 21 07:19:47 CET 2022


Commit: 3dc44f8c89acc082334034982ffc8bc802f23475
Author: Campbell Barton
Date:   Mon Mar 21 17:15:18 2022 +1100
Branches: master
https://developer.blender.org/rB3dc44f8c89acc082334034982ffc8bc802f23475

Event System: improve event printing

- Use set-style printing of modifier flags instead of booleans.
- Include event.flag.
- Print on a single line (so output can be more easily filtered).

===================================================================

M	source/blender/windowmanager/intern/wm_event_query.c

===================================================================

diff --git a/source/blender/windowmanager/intern/wm_event_query.c b/source/blender/windowmanager/intern/wm_event_query.c
index 9a7d31f8bb8..6a8ecdafd69 100644
--- a/source/blender/windowmanager/intern/wm_event_query.c
+++ b/source/blender/windowmanager/intern/wm_event_query.c
@@ -38,6 +38,30 @@
 /** \name Event Printing
  * \{ */
 
+struct FlagIdentifierPair {
+  const char *id;
+  uint flag;
+};
+
+static void event_ids_from_flag(char *str,
+                                const int str_maxlen,
+                                const struct FlagIdentifierPair *flag_data,
+                                const int flag_data_len,
+                                const uint flag)
+{
+  int ofs = 0;
+  ofs += BLI_strncpy_rlen(str + ofs, "{", str_maxlen - ofs);
+  for (int i = 0; i < flag_data_len; i++) {
+    if (flag & flag_data[i].flag) {
+      if (ofs != 1) {
+        ofs += BLI_strncpy_rlen(str + ofs, "|", str_maxlen - ofs);
+      }
+      ofs += BLI_strncpy_rlen(str + ofs, flag_data[i].id, str_maxlen - ofs);
+    }
+  }
+  ofs += BLI_strncpy_rlen(str + ofs, "}", str_maxlen - ofs);
+}
+
 static void event_ids_from_type_and_value(const short type,
                                           const short val,
                                           const char **r_type_id,
@@ -62,11 +86,33 @@ void WM_event_print(const wmEvent *event)
     event_ids_from_type_and_value(event->type, event->val, &type_id, &val_id);
     event_ids_from_type_and_value(event->prev_type, event->prev_val, &prev_type_id, &prev_val_id);
 
+    char modifier_id[128];
+    {
+      struct FlagIdentifierPair flag_data[4] = {
+          {"SHIFT", KM_SHIFT},
+          {"CTRL", KM_CTRL},
+          {"ALT", KM_ALT},
+          {"OS", KM_OSKEY},
+      };
+      event_ids_from_flag(
+          modifier_id, sizeof(modifier_id), flag_data, ARRAY_SIZE(flag_data), event->modifier);
+    }
+
+    char flag_id[128];
+    {
+      struct FlagIdentifierPair flag_data[4] = {
+          {"SCROLL_INVERT", WM_EVENT_SCROLL_INVERT},
+          {"IS_REPEAT", WM_EVENT_IS_REPEAT},
+          {"FORCE_DRAG_THRESHOLD", WM_EVENT_FORCE_DRAG_THRESHOLD},
+      };
+      event_ids_from_flag(flag_id, sizeof(flag_id), flag_data, ARRAY_SIZE(flag_data), event->flag);
+    }
+
     printf(
-        "wmEvent type:%d / %s, val:%d / %s,\n"
-        "        prev_type:%d / %s, prev_val:%d / %s,\n"
-        "        shift:%d, ctrl:%d, alt:%d, oskey:%d, keymodifier:%d, is_repeat:%d,\n"
-        "        mouse:(%d,%d), ascii:'%c', utf8:'%.*s', pointer:%p\n",
+        "wmEvent type:%d/%s, val:%d/%s, "
+        "prev_type:%d/%s, prev_val:%d/%s, "
+        "modifier=%s, keymodifier:%d, flag:%s, "
+        "mouse:(%d,%d), ascii:'%c', utf8:'%.*s', pointer:%p",
         event->type,
         type_id,
         event->val,
@@ -75,12 +121,9 @@ void WM_event_print(const wmEvent *event)
         prev_type_id,
         event->prev_val,
         prev_val_id,
-        (event->modifier & KM_SHIFT) != 0,
-        (event->modifier & KM_CTRL) != 0,
-        (event->modifier & KM_ALT) != 0,
-        (event->modifier & KM_OSKEY) != 0,
+        modifier_id,
         event->keymodifier,
-        (event->flag & WM_EVENT_IS_REPEAT) != 0,
+        flag_id,
         event->xy[0],
         event->xy[1],
         event->ascii,
@@ -92,7 +135,7 @@ void WM_event_print(const wmEvent *event)
     if (ISNDOF(event->type)) {
       const wmNDOFMotionData *ndof = event->customdata;
       if (event->type == NDOF_MOTION) {
-        printf("   ndof: rot: (%.4f %.4f %.4f), tx: (%.4f %.4f %.4f), dt: %.4f, progress: %u\n",
+        printf(", ndof: rot: (%.4f %.4f %.4f), tx: (%.4f %.4f %.4f), dt: %.4f, progress: %u",
                UNPACK3(ndof->rvec),
                UNPACK3(ndof->tvec),
                ndof->dt,
@@ -106,12 +149,13 @@ void WM_event_print(const wmEvent *event)
 
     if (event->tablet.active != EVT_TABLET_NONE) {
       const wmTabletData *wmtab = &event->tablet;
-      printf(" tablet: active: %d, pressure %.4f, tilt: (%.4f %.4f)\n",
+      printf(", tablet: active: %d, pressure %.4f, tilt: (%.4f %.4f)",
              wmtab->active,
              wmtab->pressure,
              wmtab->x_tilt,
              wmtab->y_tilt);
     }
+    printf("\n");
   }
   else {
     printf("wmEvent - NULL\n");



More information about the Bf-blender-cvs mailing list