Cleanup: remove redundant doxygen \file argument
[blender.git] / source / blender / editors / gizmo_library / gizmo_library_intern.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  * The Original Code is Copyright (C) 2016 Blender Foundation.
17  * All rights reserved.
18  */
19
20 /** \file \ingroup edgizmolib
21  */
22
23 #ifndef __GIZMO_LIBRARY_INTERN_H__
24 #define __GIZMO_LIBRARY_INTERN_H__
25
26 /* distance around which gizmos respond to input (and get highlighted) */
27 #define GIZMO_HOTSPOT 14.0f
28
29 /**
30  * Data for common interactions. Used in gizmo_library_utils.c functions.
31  */
32 typedef struct GizmoCommonData {
33         float range_fac;      /* factor for arrow min/max distance */
34         float offset;
35
36         /* property range for constrained gizmos */
37         float range;
38         /* min/max value for constrained gizmos */
39         float min, max;
40
41         uint is_custom_range_set : 1;
42 } GizmoCommonData;
43
44 typedef struct GizmoInteraction {
45         float init_value; /* initial property value */
46         float init_mval[2];
47         float init_offset;
48         float init_matrix_final[4][4];
49         float init_matrix_basis[4][4];
50
51         /* offset of last handling step */
52         float prev_offset;
53         /* Total offset added by precision tweaking.
54          * Needed to allow toggling precision on/off without causing jumps */
55         float precision_offset;
56 } GizmoInteraction;
57
58 float gizmo_offset_from_value(
59         GizmoCommonData *data, const float value,
60         const bool constrained, const bool inverted);
61 float gizmo_value_from_offset(
62         GizmoCommonData *data, GizmoInteraction *inter, const float offset,
63         const bool constrained, const bool inverted, const bool use_precision);
64
65 void gizmo_property_data_update(
66         struct wmGizmo *gz, GizmoCommonData *data, wmGizmoProperty *gz_prop,
67         const bool constrained, const bool inverted);
68
69 void  gizmo_property_value_reset(
70         bContext *C, const struct wmGizmo *gz, GizmoInteraction *inter, wmGizmoProperty *gz_prop);
71
72
73 /* -------------------------------------------------------------------- */
74
75 void gizmo_color_get(
76         const struct wmGizmo *gz, const bool highlight,
77         float r_color[4]);
78
79 bool gizmo_window_project_2d(
80         bContext *C, const struct wmGizmo *gz, const float mval[2], int axis, bool use_offset,
81         float r_co[2]);
82
83 bool gizmo_window_project_3d(
84         bContext *C, const struct wmGizmo *gz, const float mval[2], bool use_offset,
85         float r_co[3]);
86
87 /* -------------------------------------------------------------------- */
88 /* Gizmo drawing */
89
90 #include "gizmo_geometry.h"
91
92 void wm_gizmo_geometryinfo_draw(const struct GizmoGeomInfo *info, const bool select, const float color[4]);
93 void wm_gizmo_vec_draw(
94         const float color[4], const float (*verts)[3], uint vert_count,
95         uint pos, uint primitive_type);
96
97
98 #endif  /* __GIZMO_LIBRARY_INTERN_H__ */