Blender V4.3
transform_convert.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9
10#pragma once
11
12#include "RE_engine.h"
13
14#include "BKE_curves.hh"
15
16#include "BLI_index_mask.hh"
17
18struct BMEditMesh;
19struct BMesh;
20struct BezTriple;
21struct ListBase;
22struct Object;
23struct TransData;
25struct TransInfo;
26struct bContext;
27struct Sequence;
28
30 int flags; /* #eTFlag. */
31
36
41
46};
47
54 blender::float3 dir_side[2]; /* Directional vectors on the sides. */
55 float edge_len; /* Distance between vectors. */
56 int loop_nr; /* Number that identifies the group of connected edges. */
57
58 const float *v_co_orig() const
59 {
60 return this->td->iloc;
61 }
62};
63
72
73 const float *co_orig_3d() const
74 {
75 return this->td->iloc;
76 }
77
79 {
80 return this->co_link_orig_3d[this->co_link_curr];
81 }
82};
83
110
111/* `transform_convert.cc` */
112
116void transform_autoik_update(TransInfo *t, short mode);
124void clipUVData(TransInfo *t);
125void transform_convert_flush_handle2D(TransData *td, TransData2D *td2d, float y_fac);
129void recalc_data(TransInfo *t);
130
131/* `transform_convert_mesh.cc` */
132
134
135/* `transform_convert_sequencer.cc` */
136
138
139/********************* intern **********************/
140
141/* `transform_convert.cc` */
142
148void transform_around_single_fallback_ex(TransInfo *t, int data_len_all);
158void calc_distanceCurveVerts(TransData *head, TransData *tail, bool cyclic);
170bool FrameOnMouseSide(char side, float frame, float cframe);
176
177/* `transform_convert_curves.cc` */
178
186 std::optional<blender::MutableSpan<float>> value_attribute,
187 const blender::Span<blender::IndexMask> points_to_transform_indices,
188 const blender::IndexMask &affected_curves,
189 bool use_connected_only,
190 const blender::IndexMask &bezier_curves,
191 void *extra = nullptr);
192
194
196 const TransCustomData &custom_data,
197 const int layer,
199
200/* `transform_convert_action.cc` */
201
203
204/* `transform_convert_armature.cc` */
205
208
213void transform_convert_pose_transflags_update(Object *ob, int mode, short around);
214
215/* `transform_convert_cursor.cc` */
216
220
221/* `transform_convert_curve.cc` */
222
224
225/* `transform_convert_curves.cc` */
226
228
229/* `transform_convert_graph.cc` */
230
232
233/* `transform_convert_gpencil_legacy.cc` */
234
236
237/* `transform_convert_greasepencil.cc` */
238
240
241/* `transform_convert_lattice.cc` */
242
244
245/* `transform_convert_mask.cc` */
246
248
249/* `transform_convert_mball.cc` */
250
252
253/* `transform_convert_mesh.cc` */
254
256
263
265 int index;
266 int flag;
267};
268
273
278
280 bool calc_single_islands,
281 bool calc_island_center,
282 bool calc_island_axismtx,
283 TransIslandData *r_island_data);
291 const float mtx[3][3],
292 float *dists,
293 int *index);
295 bool use_select,
296 bool use_topology,
297 const bool mirror_axis[3],
298 TransMirrorData *r_mirror_data);
306 BMEditMesh *em,
307 TransMeshDataCrazySpace *r_crazyspace_data);
308void transform_convert_mesh_crazyspace_transdata_set(const float mtx[3][3],
309 const float smtx[3][3],
310 const float defmat[3][3],
311 const float quat[4],
312 TransData *r_td);
314
316 const TransDataContainer *tc, blender::Vector<blender::float3> &r_loc_dst_buffer);
317
319 const TransDataContainer *tc, int *r_group_len);
320
321/* `transform_convert_mesh_edge.cc` */
322
324
325/* `transform_convert_mesh_skin.cc` */
326
328
329/* `transform_convert_mesh_uv.cc` */
330
332
334 const TransInfo *t,
336 blender::Vector<blender::float3> &r_loc_dst_buffer);
337
339 const TransInfo *t, TransDataContainer *tc, int *r_group_len);
340
341/* `transform_convert_mesh_vert_cdata.cc` */
342
344
345/* `transform_convert_nla.cc` */
346
348
349/* `transform_convert_node.cc` */
350
352
353/* `transform_convert_object.cc` */
354
356
357/* `transform_convert_object_texspace.cc` */
358
360
361/* `transform_convert_paintcurve.cc` */
362
364
365/* `transform_convert_particle.cc` */
366
368
369/* `transform_convert_sculpt.cc` */
370
372
373/* `transform_convert_sequencer.cc` */
374
376
378
379/* `transform_convert_sequencer_image.cc` */
380
382
383/* `transform_convert_sequencer_retiming.cc` */
384
386
387/* `transform_convert_tracking.cc` */
388
390
391/* `transform_convert_tracking_curves.cc` */
392
Low-level operations for curves.
#define C
Definition RandGen.cpp:29
ATTR_WARN_UNUSED_RESULT BMesh * bm
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
draw_view in_light_buf[] float
MatBase< float, 4, 4 > float4x4
VecBase< float, 3 > float3
blender::IndexMaskMemory memory
blender::Vector< int > layer_offsets
blender::Array< blender::float3 > positions
blender::Vector< float > grease_pencil_falloffs
blender::Vector< blender::IndexMask > selection_by_layer
Definition DNA_ID.h:413
void(* create_trans_data)(bContext *C, TransInfo *t)
void(* special_aftertrans_update)(bContext *C, TransInfo *t)
void(* recalc_data)(TransInfo *t)
const float * v_co_orig() const
blender::float3 dir_side[2]
const blender::float3 & co_dest_3d() const
const float * co_orig_3d() const
blender::Span< blender::float3 > co_link_orig_3d
float(* axismtx)[3][3]
blender::Array< blender::float3x3, 0 > defmats
MirrorDataVert * vert_map
void calc_distanceCurveVerts(TransData *head, TransData *tail, bool cyclic)
void transform_autoik_update(TransInfo *t, short mode)
TransConvertTypeInfo TransConvertType_Action
void special_aftertrans_update(bContext *C, TransInfo *t)
void transform_convert_clip_mirror_modifier_apply(TransDataContainer *tc)
void transform_convert_flush_handle2D(TransData *td, TransData2D *td2d, float y_fac)
void transform_convert_mesh_crazyspace_transdata_set(const float mtx[3][3], const float smtx[3][3], const float defmat[3][3], const float quat[4], TransData *r_td)
TransConvertTypeInfo TransConvertType_CursorImage
TransConvertTypeInfo TransConvertType_GPencil
void transform_convert_pose_transflags_update(Object *ob, int mode, short around)
TransConvertTypeInfo TransConvertType_MeshSkin
TransConvertTypeInfo TransConvertType_GreasePencil
blender::Array< TransDataEdgeSlideVert > transform_mesh_edge_slide_data_create(const TransDataContainer *tc, int *r_group_len)
TransConvertTypeInfo TransConvertType_TrackingCurves
blender::Array< TransDataVertSlideVert > transform_mesh_vert_slide_data_create(const TransDataContainer *tc, blender::Vector< blender::float3 > &r_loc_dst_buffer)
void transform_convert_mesh_mirrordata_calc(BMEditMesh *em, bool use_select, bool use_topology, const bool mirror_axis[3], TransMirrorData *r_mirror_data)
void sort_trans_data_dist(TransInfo *t)
void transform_convert_mesh_islands_calc(BMEditMesh *em, bool calc_single_islands, bool calc_island_center, bool calc_island_axismtx, TransIslandData *r_island_data)
TransConvertTypeInfo TransConvertType_MeshVertCData
bool FrameOnMouseSide(char side, float frame, float cframe)
TransConvertTypeInfo TransConvertType_Cursor3D
void transform_around_single_fallback(TransInfo *t)
void transform_convert_mesh_customdatacorrect_init(TransInfo *t)
bool seq_transform_check_overlap(blender::Span< Sequence * > transformed_strips)
TransConvertTypeInfo TransConvertType_Mask
blender::Array< TransDataVertSlideVert > transform_mesh_uv_vert_slide_data_create(const TransInfo *t, TransDataContainer *tc, blender::Vector< blender::float3 > &r_loc_dst_buffer)
void transform_convert_mesh_crazyspace_detect(TransInfo *t, TransDataContainer *tc, BMEditMesh *em, TransMeshDataCrazySpace *r_crazyspace_data)
TransConvertTypeInfo TransConvertType_NLA
void clipUVData(TransInfo *t)
CurvesTransformData * create_curves_transform_custom_data(TransCustomData &custom_data)
void animrecord_check_state(TransInfo *t, ID *id)
TransConvertTypeInfo TransConvertType_Particle
TransConvertTypeInfo TransConvertType_PaintCurve
TransConvertTypeInfo TransConvertType_Sequencer
void recalc_data(TransInfo *t)
TransConvertTypeInfo TransConvertType_MeshUV
void transform_convert_sequencer_channel_clamp(TransInfo *t, float r_val[2])
TransDataCurveHandleFlags * initTransDataCurveHandles(TransData *td, BezTriple *bezt)
TransConvertTypeInfo TransConvertType_CursorSequencer
void transform_around_single_fallback_ex(TransInfo *t, int data_len_all)
TransConvertTypeInfo TransConvertType_MeshEdge
void transform_convert_mesh_connectivity_distance(BMesh *bm, const float mtx[3][3], float *dists, int *index)
TransConvertTypeInfo TransConvertType_Sculpt
void transform_convert_mesh_mirrordata_free(TransMirrorData *mirror_data)
TransConvertTypeInfo TransConvertType_ObjectTexSpace
TransConvertTypeInfo TransConvertType_Tracking
bool transform_mode_use_local_origins(const TransInfo *t)
TransConvertTypeInfo TransConvertType_MBall
int special_transform_moving(TransInfo *t)
TransConvertTypeInfo TransConvertType_Graph
bool constraints_list_needinv(TransInfo *t, ListBase *list)
void curve_populate_trans_data_structs(TransDataContainer &tc, blender::bke::CurvesGeometry &curves, const blender::float4x4 &transform, std::optional< blender::MutableSpan< float > > value_attribute, const blender::Span< blender::IndexMask > points_to_transform_indices, const blender::IndexMask &affected_curves, bool use_connected_only, const blender::IndexMask &bezier_curves, void *extra=nullptr)
TransConvertTypeInfo TransConvertType_Curve
void transform_convert_mesh_islanddata_free(TransIslandData *island_data)
TransConvertTypeInfo TransConvertType_Node
void copy_positions_from_curves_transform_custom_data(const TransCustomData &custom_data, const int layer, blender::MutableSpan< blender::float3 > positions_dst)
TransConvertTypeInfo TransConvertType_Lattice
TransConvertTypeInfo TransConvertType_SequencerRetiming
void create_trans_data(bContext *C, TransInfo *t)
TransConvertTypeInfo TransConvertType_EditArmature
blender::Array< TransDataEdgeSlideVert > transform_mesh_uv_edge_slide_data_create(const TransInfo *t, TransDataContainer *tc, int *r_group_len)
TransConvertTypeInfo TransConvertType_SequencerImage
char transform_convert_frame_side_dir_get(TransInfo *t, float cframe)
TransConvertTypeInfo TransConvertType_Curves
TransConvertTypeInfo TransConvertType_Mesh
TransConvertTypeInfo TransConvertType_Pose
void transform_convert_mesh_crazyspace_free(TransMeshDataCrazySpace *r_crazyspace_data)
TransConvertTypeInfo TransConvertType_Object