2011-02-23 10:52:22 +00:00
|
|
|
/*
|
2009-01-23 14:43:25 +00:00
|
|
|
* 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
|
2018-06-01 18:19:39 +02:00
|
|
|
* of the License, or (at your option) any later version.
|
2009-01-23 14:43:25 +00:00
|
|
|
*
|
|
|
|
* 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,
|
2010-02-12 13:34:04 +00:00
|
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
2009-01-23 14:43:25 +00:00
|
|
|
*
|
|
|
|
* The Original Code is Copyright (C) 2008 Blender Foundation.
|
|
|
|
* All rights reserved.
|
|
|
|
*/
|
|
|
|
|
2019-02-18 08:08:12 +11:00
|
|
|
/** \file
|
|
|
|
* \ingroup edcurve
|
2011-02-27 20:29:51 +00:00
|
|
|
*/
|
|
|
|
|
2020-08-07 09:50:34 +02:00
|
|
|
#pragma once
|
2009-01-23 14:43:25 +00:00
|
|
|
|
|
|
|
/* internal exports only */
|
2013-09-16 00:03:33 +00:00
|
|
|
struct EditNurb;
|
2018-03-19 16:30:53 +01:00
|
|
|
struct GHash;
|
2019-01-28 21:08:24 +11:00
|
|
|
struct ListBase;
|
2013-09-16 00:03:33 +00:00
|
|
|
struct Object;
|
2015-07-08 23:24:16 +10:00
|
|
|
struct ViewContext;
|
2019-01-28 21:08:24 +11:00
|
|
|
struct wmOperatorType;
|
2009-01-23 14:43:25 +00:00
|
|
|
|
|
|
|
/* editfont.c */
|
2019-04-17 06:17:24 +02:00
|
|
|
enum {
|
|
|
|
DEL_NEXT_CHAR,
|
|
|
|
DEL_PREV_CHAR,
|
|
|
|
DEL_NEXT_WORD,
|
|
|
|
DEL_PREV_WORD,
|
|
|
|
DEL_SELECTION,
|
|
|
|
DEL_NEXT_SEL,
|
|
|
|
DEL_PREV_SEL
|
|
|
|
};
|
2.5: Text edit mode operators back. Took me a while getting
them nicely repeatable, and splitting up the big edit_text
operator into individual operator so it's all nicely scriptable,
documented, configurable, etc..
* Insert Text, Line Break, Insert Lorem
* Toggle Case, Set Case, Toggle Style, Set Style, Set Material
* Copy Text, Cut Text, Paste Text, Paste File, Paste Buffer
* Move, Move Select, Delete
* Change Spacing, Change Character
Notes
* Text (datablock) to Object doesn't work yet, will need to
implement text editor context for that.
* Some shortcut keys don't work because screen/wm overrides them,
ctrl+x, ctrl+left/right. That override goes top down which works
well for some cases, but here we need to override in the other
direction.
* There's no unicode support in RNA, or the user interface code
for that matter, but text strings can contain these characters.
At the moment it stores a UTF-8 string in char arrays, which is
supposed to be nicely compatible with ascii. Seems reasonable to
add support for UTF-8 in the interface code, python bindings, ..
eventually?
2009-02-17 19:55:20 +00:00
|
|
|
enum { CASE_LOWER, CASE_UPPER };
|
2019-04-17 06:17:24 +02:00
|
|
|
enum {
|
|
|
|
LINE_BEGIN,
|
|
|
|
LINE_END,
|
|
|
|
PREV_CHAR,
|
|
|
|
NEXT_CHAR,
|
|
|
|
PREV_WORD,
|
|
|
|
NEXT_WORD,
|
|
|
|
PREV_LINE,
|
|
|
|
NEXT_LINE,
|
|
|
|
PREV_PAGE,
|
|
|
|
NEXT_PAGE
|
|
|
|
};
|
2.5: Text edit mode operators back. Took me a while getting
them nicely repeatable, and splitting up the big edit_text
operator into individual operator so it's all nicely scriptable,
documented, configurable, etc..
* Insert Text, Line Break, Insert Lorem
* Toggle Case, Set Case, Toggle Style, Set Style, Set Material
* Copy Text, Cut Text, Paste Text, Paste File, Paste Buffer
* Move, Move Select, Delete
* Change Spacing, Change Character
Notes
* Text (datablock) to Object doesn't work yet, will need to
implement text editor context for that.
* Some shortcut keys don't work because screen/wm overrides them,
ctrl+x, ctrl+left/right. That override goes top down which works
well for some cases, but here we need to override in the other
direction.
* There's no unicode support in RNA, or the user interface code
for that matter, but text strings can contain these characters.
At the moment it stores a UTF-8 string in char arrays, which is
supposed to be nicely compatible with ascii. Seems reasonable to
add support for UTF-8 in the interface code, python bindings, ..
eventually?
2009-02-17 19:55:20 +00:00
|
|
|
|
2015-07-08 23:24:16 +10:00
|
|
|
typedef enum eVisible_Types {
|
2019-04-17 06:17:24 +02:00
|
|
|
HIDDEN = true,
|
|
|
|
VISIBLE = false,
|
2015-07-08 23:24:16 +10:00
|
|
|
} eVisible_Types;
|
|
|
|
|
|
|
|
typedef enum eEndPoint_Types {
|
2019-04-17 06:17:24 +02:00
|
|
|
FIRST = true,
|
|
|
|
LAST = false,
|
2015-07-08 23:24:16 +10:00
|
|
|
} eEndPoint_Types;
|
|
|
|
|
|
|
|
typedef enum eCurveElem_Types {
|
2019-04-17 06:17:24 +02:00
|
|
|
CURVE_VERTEX = 0,
|
|
|
|
CURVE_SEGMENT,
|
2015-07-08 23:24:16 +10:00
|
|
|
} eCurveElem_Types;
|
|
|
|
|
|
|
|
/* internal select utils */
|
2020-09-16 12:23:23 +02:00
|
|
|
bool select_beztriple(BezTriple *bezt, bool selstatus, uint8_t flag, eVisible_Types hidden);
|
|
|
|
bool select_bpoint(BPoint *bp, bool selstatus, uint8_t flag, bool hidden);
|
2015-07-08 23:24:16 +10:00
|
|
|
|
2009-04-12 22:43:07 +00:00
|
|
|
void FONT_OT_text_insert(struct wmOperatorType *ot);
|
2.5: Text edit mode operators back. Took me a while getting
them nicely repeatable, and splitting up the big edit_text
operator into individual operator so it's all nicely scriptable,
documented, configurable, etc..
* Insert Text, Line Break, Insert Lorem
* Toggle Case, Set Case, Toggle Style, Set Style, Set Material
* Copy Text, Cut Text, Paste Text, Paste File, Paste Buffer
* Move, Move Select, Delete
* Change Spacing, Change Character
Notes
* Text (datablock) to Object doesn't work yet, will need to
implement text editor context for that.
* Some shortcut keys don't work because screen/wm overrides them,
ctrl+x, ctrl+left/right. That override goes top down which works
well for some cases, but here we need to override in the other
direction.
* There's no unicode support in RNA, or the user interface code
for that matter, but text strings can contain these characters.
At the moment it stores a UTF-8 string in char arrays, which is
supposed to be nicely compatible with ascii. Seems reasonable to
add support for UTF-8 in the interface code, python bindings, ..
eventually?
2009-02-17 19:55:20 +00:00
|
|
|
void FONT_OT_line_break(struct wmOperatorType *ot);
|
|
|
|
|
2009-03-29 02:15:13 +00:00
|
|
|
void FONT_OT_case_toggle(struct wmOperatorType *ot);
|
|
|
|
void FONT_OT_case_set(struct wmOperatorType *ot);
|
|
|
|
void FONT_OT_style_toggle(struct wmOperatorType *ot);
|
|
|
|
void FONT_OT_style_set(struct wmOperatorType *ot);
|
2.5: Text edit mode operators back. Took me a while getting
them nicely repeatable, and splitting up the big edit_text
operator into individual operator so it's all nicely scriptable,
documented, configurable, etc..
* Insert Text, Line Break, Insert Lorem
* Toggle Case, Set Case, Toggle Style, Set Style, Set Material
* Copy Text, Cut Text, Paste Text, Paste File, Paste Buffer
* Move, Move Select, Delete
* Change Spacing, Change Character
Notes
* Text (datablock) to Object doesn't work yet, will need to
implement text editor context for that.
* Some shortcut keys don't work because screen/wm overrides them,
ctrl+x, ctrl+left/right. That override goes top down which works
well for some cases, but here we need to override in the other
direction.
* There's no unicode support in RNA, or the user interface code
for that matter, but text strings can contain these characters.
At the moment it stores a UTF-8 string in char arrays, which is
supposed to be nicely compatible with ascii. Seems reasonable to
add support for UTF-8 in the interface code, python bindings, ..
eventually?
2009-02-17 19:55:20 +00:00
|
|
|
|
2013-12-29 23:43:19 +11:00
|
|
|
void FONT_OT_select_all(struct wmOperatorType *ot);
|
|
|
|
|
2009-04-12 22:43:07 +00:00
|
|
|
void FONT_OT_text_copy(struct wmOperatorType *ot);
|
|
|
|
void FONT_OT_text_cut(struct wmOperatorType *ot);
|
|
|
|
void FONT_OT_text_paste(struct wmOperatorType *ot);
|
2014-01-06 00:36:09 +11:00
|
|
|
void FONT_OT_text_paste_from_file(struct wmOperatorType *ot);
|
2.5: Text edit mode operators back. Took me a while getting
them nicely repeatable, and splitting up the big edit_text
operator into individual operator so it's all nicely scriptable,
documented, configurable, etc..
* Insert Text, Line Break, Insert Lorem
* Toggle Case, Set Case, Toggle Style, Set Style, Set Material
* Copy Text, Cut Text, Paste Text, Paste File, Paste Buffer
* Move, Move Select, Delete
* Change Spacing, Change Character
Notes
* Text (datablock) to Object doesn't work yet, will need to
implement text editor context for that.
* Some shortcut keys don't work because screen/wm overrides them,
ctrl+x, ctrl+left/right. That override goes top down which works
well for some cases, but here we need to override in the other
direction.
* There's no unicode support in RNA, or the user interface code
for that matter, but text strings can contain these characters.
At the moment it stores a UTF-8 string in char arrays, which is
supposed to be nicely compatible with ascii. Seems reasonable to
add support for UTF-8 in the interface code, python bindings, ..
eventually?
2009-02-17 19:55:20 +00:00
|
|
|
|
|
|
|
void FONT_OT_move(struct wmOperatorType *ot);
|
|
|
|
void FONT_OT_move_select(struct wmOperatorType *ot);
|
|
|
|
void FONT_OT_delete(struct wmOperatorType *ot);
|
|
|
|
|
|
|
|
void FONT_OT_change_character(struct wmOperatorType *ot);
|
|
|
|
void FONT_OT_change_spacing(struct wmOperatorType *ot);
|
2009-01-23 14:43:25 +00:00
|
|
|
|
2010-01-11 05:10:57 +00:00
|
|
|
void FONT_OT_open(struct wmOperatorType *ot);
|
|
|
|
void FONT_OT_unlink(struct wmOperatorType *ot);
|
|
|
|
|
2010-06-21 23:20:44 +00:00
|
|
|
void FONT_OT_textbox_add(struct wmOperatorType *ot);
|
|
|
|
void FONT_OT_textbox_remove(struct wmOperatorType *ot);
|
|
|
|
|
2009-02-11 23:02:21 +00:00
|
|
|
/* editcurve.c */
|
2.5: Text edit mode operators back. Took me a while getting
them nicely repeatable, and splitting up the big edit_text
operator into individual operator so it's all nicely scriptable,
documented, configurable, etc..
* Insert Text, Line Break, Insert Lorem
* Toggle Case, Set Case, Toggle Style, Set Style, Set Material
* Copy Text, Cut Text, Paste Text, Paste File, Paste Buffer
* Move, Move Select, Delete
* Change Spacing, Change Character
Notes
* Text (datablock) to Object doesn't work yet, will need to
implement text editor context for that.
* Some shortcut keys don't work because screen/wm overrides them,
ctrl+x, ctrl+left/right. That override goes top down which works
well for some cases, but here we need to override in the other
direction.
* There's no unicode support in RNA, or the user interface code
for that matter, but text strings can contain these characters.
At the moment it stores a UTF-8 string in char arrays, which is
supposed to be nicely compatible with ascii. Seems reasonable to
add support for UTF-8 in the interface code, python bindings, ..
eventually?
2009-02-17 19:55:20 +00:00
|
|
|
void CURVE_OT_hide(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_reveal(struct wmOperatorType *ot);
|
|
|
|
|
2009-02-11 23:02:21 +00:00
|
|
|
void CURVE_OT_separate(struct wmOperatorType *ot);
|
2013-08-29 02:32:51 +00:00
|
|
|
void CURVE_OT_split(struct wmOperatorType *ot);
|
2.5: Text edit mode operators back. Took me a while getting
them nicely repeatable, and splitting up the big edit_text
operator into individual operator so it's all nicely scriptable,
documented, configurable, etc..
* Insert Text, Line Break, Insert Lorem
* Toggle Case, Set Case, Toggle Style, Set Style, Set Material
* Copy Text, Cut Text, Paste Text, Paste File, Paste Buffer
* Move, Move Select, Delete
* Change Spacing, Change Character
Notes
* Text (datablock) to Object doesn't work yet, will need to
implement text editor context for that.
* Some shortcut keys don't work because screen/wm overrides them,
ctrl+x, ctrl+left/right. That override goes top down which works
well for some cases, but here we need to override in the other
direction.
* There's no unicode support in RNA, or the user interface code
for that matter, but text strings can contain these characters.
At the moment it stores a UTF-8 string in char arrays, which is
supposed to be nicely compatible with ascii. Seems reasonable to
add support for UTF-8 in the interface code, python bindings, ..
eventually?
2009-02-17 19:55:20 +00:00
|
|
|
void CURVE_OT_duplicate(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_delete(struct wmOperatorType *ot);
|
2016-05-02 18:11:09 +10:00
|
|
|
void CURVE_OT_dissolve_verts(struct wmOperatorType *ot);
|
2.5: Text edit mode operators back. Took me a while getting
them nicely repeatable, and splitting up the big edit_text
operator into individual operator so it's all nicely scriptable,
documented, configurable, etc..
* Insert Text, Line Break, Insert Lorem
* Toggle Case, Set Case, Toggle Style, Set Style, Set Material
* Copy Text, Cut Text, Paste Text, Paste File, Paste Buffer
* Move, Move Select, Delete
* Change Spacing, Change Character
Notes
* Text (datablock) to Object doesn't work yet, will need to
implement text editor context for that.
* Some shortcut keys don't work because screen/wm overrides them,
ctrl+x, ctrl+left/right. That override goes top down which works
well for some cases, but here we need to override in the other
direction.
* There's no unicode support in RNA, or the user interface code
for that matter, but text strings can contain these characters.
At the moment it stores a UTF-8 string in char arrays, which is
supposed to be nicely compatible with ascii. Seems reasonable to
add support for UTF-8 in the interface code, python bindings, ..
eventually?
2009-02-17 19:55:20 +00:00
|
|
|
|
2009-03-29 02:15:13 +00:00
|
|
|
void CURVE_OT_spline_type_set(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_radius_set(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_spline_weight_set(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_handle_type_set(struct wmOperatorType *ot);
|
2013-12-14 02:32:48 +11:00
|
|
|
void CURVE_OT_normals_make_consistent(struct wmOperatorType *ot);
|
2017-10-30 22:36:51 +11:00
|
|
|
void CURVE_OT_decimate(struct wmOperatorType *ot);
|
2009-07-21 00:36:07 +00:00
|
|
|
void CURVE_OT_shade_smooth(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_shade_flat(struct wmOperatorType *ot);
|
2009-03-29 02:15:13 +00:00
|
|
|
void CURVE_OT_tilt_clear(struct wmOperatorType *ot);
|
2.5: Text edit mode operators back. Took me a while getting
them nicely repeatable, and splitting up the big edit_text
operator into individual operator so it's all nicely scriptable,
documented, configurable, etc..
* Insert Text, Line Break, Insert Lorem
* Toggle Case, Set Case, Toggle Style, Set Style, Set Material
* Copy Text, Cut Text, Paste Text, Paste File, Paste Buffer
* Move, Move Select, Delete
* Change Spacing, Change Character
Notes
* Text (datablock) to Object doesn't work yet, will need to
implement text editor context for that.
* Some shortcut keys don't work because screen/wm overrides them,
ctrl+x, ctrl+left/right. That override goes top down which works
well for some cases, but here we need to override in the other
direction.
* There's no unicode support in RNA, or the user interface code
for that matter, but text strings can contain these characters.
At the moment it stores a UTF-8 string in char arrays, which is
supposed to be nicely compatible with ascii. Seems reasonable to
add support for UTF-8 in the interface code, python bindings, ..
eventually?
2009-02-17 19:55:20 +00:00
|
|
|
|
2009-02-11 23:02:21 +00:00
|
|
|
void CURVE_OT_smooth(struct wmOperatorType *ot);
|
2013-07-24 14:30:45 +00:00
|
|
|
void CURVE_OT_smooth_weight(struct wmOperatorType *ot);
|
2.5: Most curve/surface editmode operators back:
* Hide, Reveal
* Separate, Duplicate, Delete
* Set Weight, Set Radius, Set Spline Type, Set Handle Type, Set Smooth
* Tilt, Clear Tilt
* Smooth, Smooth Radius
* De(select) First, De(select) Last, De(select) All, Select Inverse,
Select Linked, Select Control Point Row, Select Next, Select Previous,
Select More, Select Less, Select Random, Select Every Nth
* Switch Direction, Subdivide, Make Segment, Spin, Extrude, Toggle Cyclic
* Specials Menu
Not working correct yet:
* Add Vertex (ctrl click)
* Add Menu
2009-02-12 22:12:21 +00:00
|
|
|
void CURVE_OT_smooth_radius(struct wmOperatorType *ot);
|
2013-07-24 14:30:45 +00:00
|
|
|
void CURVE_OT_smooth_tilt(struct wmOperatorType *ot);
|
2.5: Text edit mode operators back. Took me a while getting
them nicely repeatable, and splitting up the big edit_text
operator into individual operator so it's all nicely scriptable,
documented, configurable, etc..
* Insert Text, Line Break, Insert Lorem
* Toggle Case, Set Case, Toggle Style, Set Style, Set Material
* Copy Text, Cut Text, Paste Text, Paste File, Paste Buffer
* Move, Move Select, Delete
* Change Spacing, Change Character
Notes
* Text (datablock) to Object doesn't work yet, will need to
implement text editor context for that.
* Some shortcut keys don't work because screen/wm overrides them,
ctrl+x, ctrl+left/right. That override goes top down which works
well for some cases, but here we need to override in the other
direction.
* There's no unicode support in RNA, or the user interface code
for that matter, but text strings can contain these characters.
At the moment it stores a UTF-8 string in char arrays, which is
supposed to be nicely compatible with ascii. Seems reasonable to
add support for UTF-8 in the interface code, python bindings, ..
eventually?
2009-02-17 19:55:20 +00:00
|
|
|
|
|
|
|
void CURVE_OT_switch_direction(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_subdivide(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_make_segment(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_spin(struct wmOperatorType *ot);
|
2009-04-12 22:43:07 +00:00
|
|
|
void CURVE_OT_vertex_add(struct wmOperatorType *ot);
|
2.5: Text edit mode operators back. Took me a while getting
them nicely repeatable, and splitting up the big edit_text
operator into individual operator so it's all nicely scriptable,
documented, configurable, etc..
* Insert Text, Line Break, Insert Lorem
* Toggle Case, Set Case, Toggle Style, Set Style, Set Material
* Copy Text, Cut Text, Paste Text, Paste File, Paste Buffer
* Move, Move Select, Delete
* Change Spacing, Change Character
Notes
* Text (datablock) to Object doesn't work yet, will need to
implement text editor context for that.
* Some shortcut keys don't work because screen/wm overrides them,
ctrl+x, ctrl+left/right. That override goes top down which works
well for some cases, but here we need to override in the other
direction.
* There's no unicode support in RNA, or the user interface code
for that matter, but text strings can contain these characters.
At the moment it stores a UTF-8 string in char arrays, which is
supposed to be nicely compatible with ascii. Seems reasonable to
add support for UTF-8 in the interface code, python bindings, ..
eventually?
2009-02-17 19:55:20 +00:00
|
|
|
void CURVE_OT_extrude(struct wmOperatorType *ot);
|
2009-03-29 02:15:13 +00:00
|
|
|
void CURVE_OT_cyclic_toggle(struct wmOperatorType *ot);
|
2.5: Most curve/surface editmode operators back:
* Hide, Reveal
* Separate, Duplicate, Delete
* Set Weight, Set Radius, Set Spline Type, Set Handle Type, Set Smooth
* Tilt, Clear Tilt
* Smooth, Smooth Radius
* De(select) First, De(select) Last, De(select) All, Select Inverse,
Select Linked, Select Control Point Row, Select Next, Select Previous,
Select More, Select Less, Select Random, Select Every Nth
* Switch Direction, Subdivide, Make Segment, Spin, Extrude, Toggle Cyclic
* Specials Menu
Not working correct yet:
* Add Vertex (ctrl click)
* Add Menu
2009-02-12 22:12:21 +00:00
|
|
|
|
Move curve's boundbox and texspace calculation out of modifier stack
There were several issues with how bounding box and texture space
are calculated:
- This was done at the same time as applying modifiers, meaning if
several objects are sharing the same curve datablock, bounding
box and texture space will be calculated multiple times.
Further, allocating bounding box wasn't safe for threading.
- Bounding box and texture space were evaluated after pre-tessellation
modifiers are applied. This means Curve-level data is actually
depends on object data, and it's really bad because different
objects could have different modifiers and this leads to
conflicts (curve's data depends on object evaluation order)
and doesn't behave in a predictable way.
This commit moves bounding box and texture space evaluation from
modifier stack to own utility functions, just like it's was done
for meshes.
This makes curve objects update thread-safe, but gives some
limitations as well. Namely, with such approach it's not so
clear how to preserve the same behavior of texture space:
before this change texture space and bounding box would match
beveled curve as accurate as possible.
Old behavior was nice for quick texturing -- in most cases you
didn't need to modify texture space at all. But texture space
was depending on render/preview settings which could easily lead
to situations, when final result would be far different from
preview one.
Now we're using CV points coordinates and their radius to approximate
the bounding box. This doesn't give the same exact texture space,
but it helps a lot keeping texture space in a nice predictable way.
We could make approximation smarter in the future, but fir now
added operator to match texture space to fully tessellated curve
called "Match Texture Space".
Review link:
https://codereview.appspot.com/15410043/
Brief description:
http://wiki.blender.org/index.php/User:Nazg-gul/GSoC-2013/Results#Curve_Texture_Space
2013-10-20 14:41:33 +02:00
|
|
|
void CURVE_OT_match_texture_space(struct wmOperatorType *ot);
|
|
|
|
|
2018-03-19 16:30:53 +01:00
|
|
|
/* exported for editcurve_undo.c */
|
|
|
|
struct GHash *ED_curve_keyindex_hash_duplicate(struct GHash *keyindex);
|
2019-04-17 06:17:24 +02:00
|
|
|
void ED_curve_keyindex_update_nurb(struct EditNurb *editnurb, struct Nurb *nu, struct Nurb *newnu);
|
2018-03-19 16:30:53 +01:00
|
|
|
|
2013-09-16 00:03:33 +00:00
|
|
|
/* helper functions */
|
2020-09-16 12:23:23 +02:00
|
|
|
void ed_editnurb_translate_flag(struct ListBase *editnurb, uint8_t flag, const float vec[3]);
|
|
|
|
bool ed_editnurb_extrude_flag(struct EditNurb *editnurb, const uint8_t flag);
|
2019-04-17 06:17:24 +02:00
|
|
|
bool ed_editnurb_spin(float viewmat[4][4],
|
|
|
|
struct View3D *v3d,
|
|
|
|
struct Object *obedit,
|
|
|
|
const float axis[3],
|
|
|
|
const float cent[3]);
|
2013-09-16 00:03:33 +00:00
|
|
|
|
2015-07-08 23:24:16 +10:00
|
|
|
/* editcurve_select.c */
|
|
|
|
void CURVE_OT_de_select_first(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_de_select_last(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_select_all(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_select_linked(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_select_linked_pick(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_select_row(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_select_next(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_select_previous(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_select_more(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_select_less(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_select_random(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_select_nth(struct wmOperatorType *ot);
|
2015-07-09 02:58:40 +10:00
|
|
|
void CURVE_OT_select_similar(struct wmOperatorType *ot);
|
2015-07-09 13:14:09 +10:00
|
|
|
void CURVE_OT_shortest_path_pick(struct wmOperatorType *ot);
|
2013-09-16 00:03:33 +00:00
|
|
|
|
|
|
|
/* editcurve_add.c */
|
|
|
|
void CURVE_OT_primitive_bezier_curve_add(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_primitive_bezier_circle_add(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_primitive_nurbs_curve_add(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_primitive_nurbs_circle_add(struct wmOperatorType *ot);
|
|
|
|
void CURVE_OT_primitive_nurbs_path_add(struct wmOperatorType *ot);
|
|
|
|
|
|
|
|
void SURFACE_OT_primitive_nurbs_surface_curve_add(struct wmOperatorType *ot);
|
|
|
|
void SURFACE_OT_primitive_nurbs_surface_circle_add(struct wmOperatorType *ot);
|
|
|
|
void SURFACE_OT_primitive_nurbs_surface_surface_add(struct wmOperatorType *ot);
|
|
|
|
void SURFACE_OT_primitive_nurbs_surface_cylinder_add(struct wmOperatorType *ot);
|
|
|
|
void SURFACE_OT_primitive_nurbs_surface_sphere_add(struct wmOperatorType *ot);
|
|
|
|
void SURFACE_OT_primitive_nurbs_surface_torus_add(struct wmOperatorType *ot);
|
2009-01-23 14:43:25 +00:00
|
|
|
|
2020-04-03 12:05:13 +11:00
|
|
|
/* editcurve_query.c */
|
|
|
|
bool ED_curve_pick_vert(struct ViewContext *vc,
|
|
|
|
short sel,
|
|
|
|
struct Nurb **r_nurb,
|
|
|
|
struct BezTriple **r_bezt,
|
|
|
|
struct BPoint **r_bp,
|
|
|
|
short *r_handle,
|
|
|
|
struct Base **r_base);
|
|
|
|
void ED_curve_nurb_vert_selected_find(
|
|
|
|
Curve *cu, View3D *v3d, Nurb **r_nu, BezTriple **r_bezt, BPoint **r_bp);
|
|
|
|
|
2016-04-15 18:10:05 +10:00
|
|
|
/* editcurve_paint.c */
|
|
|
|
void CURVE_OT_draw(struct wmOperatorType *ot);
|