This repository has been archived on 2023-10-09. You can view files and clone it, but cannot push or open issues or pull requests.
Files
blender-archive/source/blender/editors/include/ED_manipulator_library.h

144 lines
5.1 KiB
C++
Raw Normal View History

/*
* ***** BEGIN GPL LICENSE BLOCK *****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* ***** END GPL LICENSE BLOCK *****
*/
/** \file ED_manipulator_library.h
* \ingroup wm
*
* \name Generic Manipulators.
*
* This is exposes pre-defined manipulators for re-use.
*/
#ifndef __ED_MANIPULATOR_LIBRARY_H__
#define __ED_MANIPULATOR_LIBRARY_H__
/* initialize manipulators */
void ED_manipulatortypes_arrow_2d(void);
void ED_manipulatortypes_arrow_3d(void);
void ED_manipulatortypes_cage_2d(void);
void ED_manipulatortypes_dial_3d(void);
void ED_manipulatortypes_grab_3d(void);
void ED_manipulatortypes_facemap_3d(void);
void ED_manipulatortypes_primitive_3d(void);
struct wmManipulator;
struct wmManipulatorGroup;
/* -------------------------------------------------------------------- */
/* Shape Presets
*
* Intended to be called by custom draw functions.
*/
/* manipulator_library_presets.c */
void ED_manipulator_draw_preset_box(
const struct wmManipulator *mpr, float mat[4][4], int select_id);
void ED_manipulator_draw_preset_arrow(
const struct wmManipulator *mpr, float mat[4][4], int axis, int select_id);
void ED_manipulator_draw_preset_circle(
const struct wmManipulator *mpr, float mat[4][4], int axis, int select_id);
void ED_manipulator_draw_preset_facemap(
const struct wmManipulator *mpr, struct Scene *scene, struct Object *ob, const int facemap, int select_id);
/* -------------------------------------------------------------------- */
/* 3D Arrow Manipulator */
enum {
ED_MANIPULATOR_ARROW_STYLE_NORMAL = 1,
ED_MANIPULATOR_ARROW_STYLE_NO_AXIS = (1 << 1),
ED_MANIPULATOR_ARROW_STYLE_CROSS = (1 << 2),
/* inverted offset during interaction - if set it also sets constrained below */
ED_MANIPULATOR_ARROW_STYLE_INVERTED = (1 << 3),
/* clamp arrow interaction to property width */
ED_MANIPULATOR_ARROW_STYLE_CONSTRAINED = (1 << 4),
/* use a box for the arrowhead */
ED_MANIPULATOR_ARROW_STYLE_BOX = (1 << 5),
ED_MANIPULATOR_ARROW_STYLE_CONE = (1 << 6),
};
void ED_manipulator_arrow3d_set_style(struct wmManipulator *mpr, int style);
void ED_manipulator_arrow3d_set_line_len(struct wmManipulator *mpr, const float len);
void ED_manipulator_arrow3d_set_ui_range(struct wmManipulator *mpr, const float min, const float max);
void ED_manipulator_arrow3d_set_range_fac(struct wmManipulator *mpr, const float range_fac);
void ED_manipulator_arrow3d_cone_set_aspect(struct wmManipulator *mpr, const float aspect[2]);
/* -------------------------------------------------------------------- */
/* 2D Arrow Manipulator */
void ED_manipulator_arrow2d_set_angle(struct wmManipulator *mpr, const float rot_fac);
void ED_manipulator_arrow2d_set_line_len(struct wmManipulator *mpr, const float len);
/* -------------------------------------------------------------------- */
/* Cage Manipulator */
enum {
ED_MANIPULATOR_RECT_TRANSFORM_STYLE_TRANSLATE = 1, /* Manipulator translates */
ED_MANIPULATOR_RECT_TRANSFORM_STYLE_ROTATE = (1 << 1), /* Manipulator rotates */
ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE = (1 << 2), /* Manipulator scales */
ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM = (1 << 3), /* Manipulator scales uniformly */
};
void ED_manipulator_cage2d_transform_set_style(struct wmManipulator *mpr, int style);
void ED_manipulator_cage2d_transform_set_dims(
struct wmManipulator *mpr, const float width, const float height);
/* -------------------------------------------------------------------- */
/* Dial Manipulator */
enum {
ED_MANIPULATOR_DIAL_STYLE_RING = 0,
ED_MANIPULATOR_DIAL_STYLE_RING_CLIPPED = 1,
ED_MANIPULATOR_DIAL_STYLE_RING_FILLED = 2,
};
void ED_manipulator_dial3d_set_style(struct wmManipulator *mpr, int style);
void ED_manipulator_dial3d_set_use_start_y_axis(
struct wmManipulator *mpr, const bool enabled);
void ED_manipulator_dial3d_set_use_double_helper(
struct wmManipulator *mpr, const bool enabled);
/* -------------------------------------------------------------------- */
/* Grab Manipulator */
enum {
ED_MANIPULATOR_GRAB_STYLE_RING = 0,
};
void ED_manipulator_grab3d_set_style(struct wmManipulator *mpr, int style);
/* -------------------------------------------------------------------- */
/* Primitive Manipulator */
enum {
ED_MANIPULATOR_PRIMITIVE_STYLE_PLANE = 0,
};
void ED_manipulator_primitive3d_set_style(struct wmManipulator *mpr, int style);
#endif /* __ED_MANIPULATOR_LIBRARY_H__ */