Cleanup: comment line length (windowmanager)
[blender.git] / source / blender / windowmanager / gizmo / wm_gizmo_fn.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  */
16
17 /** \file
18  * \ingroup wm
19  *
20  * Callback function definitions, needed for both Types & API headers.
21  */
22
23 #ifndef __WM_GIZMO_FN_H__
24 #define __WM_GIZMO_FN_H__
25
26 #include "BLI_compiler_attrs.h"
27
28 /* wmGizmoGroup */
29 typedef bool (*wmGizmoGroupFnPoll)(const struct bContext *,
30                                    struct wmGizmoGroupType *) ATTR_WARN_UNUSED_RESULT;
31 typedef void (*wmGizmoGroupFnInit)(const struct bContext *, struct wmGizmoGroup *);
32 typedef void (*wmGizmoGroupFnRefresh)(const struct bContext *, struct wmGizmoGroup *);
33 typedef void (*wmGizmoGroupFnDrawPrepare)(const struct bContext *, struct wmGizmoGroup *);
34 typedef void (*wmGizmoGroupFnInvokePrepare)(const struct bContext *,
35                                             struct wmGizmoGroup *,
36                                             struct wmGizmo *);
37 typedef struct wmKeyMap *(*wmGizmoGroupFnSetupKeymap)(const struct wmGizmoGroupType *,
38                                                       struct wmKeyConfig *)ATTR_WARN_UNUSED_RESULT;
39 typedef void (*wmGizmoGroupFnMsgBusSubscribe)(const struct bContext *,
40                                               struct wmGizmoGroup *,
41                                               struct wmMsgBus *);
42
43 /* wmGizmo */
44 /* See: wmGizmoType for docs on each type. */
45
46 typedef void (*wmGizmoFnSetup)(struct wmGizmo *);
47 typedef void (*wmGizmoFnDraw)(const struct bContext *, struct wmGizmo *);
48 typedef void (*wmGizmoFnDrawSelect)(const struct bContext *, struct wmGizmo *, int);
49 typedef int (*wmGizmoFnTestSelect)(struct bContext *, struct wmGizmo *, const int mval[2]);
50 typedef int (*wmGizmoFnModal)(struct bContext *,
51                               struct wmGizmo *,
52                               const struct wmEvent *,
53                               eWM_GizmoFlagTweak);
54 typedef void (*wmGizmoFnPropertyUpdate)(struct wmGizmo *, struct wmGizmoProperty *);
55 typedef void (*wmGizmoFnMatrixBasisGet)(const struct wmGizmo *, float[4][4]);
56 typedef int (*wmGizmoFnInvoke)(struct bContext *, struct wmGizmo *, const struct wmEvent *);
57 typedef void (*wmGizmoFnExit)(struct bContext *, struct wmGizmo *, const bool);
58 typedef int (*wmGizmoFnCursorGet)(struct wmGizmo *);
59 typedef void (*wmGizmoFnSelectRefresh)(struct wmGizmo *);
60 typedef void (*wmGizmoFnFree)(struct wmGizmo *);
61
62 /* wmGizmoProperty ('value' type defined by 'wmGizmoProperty.data_type') */
63 typedef void (*wmGizmoPropertyFnGet)(const struct wmGizmo *,
64                                      struct wmGizmoProperty *,
65                                      /* typically 'float *' */
66                                      void *value);
67 typedef void (*wmGizmoPropertyFnSet)(const struct wmGizmo *,
68                                      struct wmGizmoProperty *,
69                                      /* typically 'const float *' */
70                                      const void *value);
71 typedef void (*wmGizmoPropertyFnRangeGet)(const struct wmGizmo *,
72                                           struct wmGizmoProperty *,
73                                           /* typically 'float[2]' */
74                                           void *range);
75 typedef void (*wmGizmoPropertyFnFree)(const struct wmGizmo *, struct wmGizmoProperty *);
76
77 typedef struct wmGizmoPropertyFnParams {
78   wmGizmoPropertyFnGet value_get_fn;
79   wmGizmoPropertyFnSet value_set_fn;
80   wmGizmoPropertyFnRangeGet range_get_fn;
81   wmGizmoPropertyFnFree free_fn;
82   void *user_data;
83 } wmGizmoPropertyFnParams;
84
85 #endif /* __WM_GIZMO_FN_H__ */