Blender V4.5
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 "BLI_index_mask.hh"
13
14#include "transform.hh"
15
16struct BMEditMesh;
17struct BMesh;
18struct BezTriple;
19struct ListBase;
20struct Object;
21struct TransData;
22struct TransDataCurveHandleFlags;
23struct TransInfo;
24struct bContext;
25struct Strip;
26
29}
30namespace blender::bke {
31class CurvesGeometry;
32}
33
34namespace blender::ed::transform {
35
37 int flags; /* #eTFlag. */
38
43
48
53};
54
61 float3 dir_side[2]; /* Directional vectors on the sides. */
62 float edge_len; /* Distance between vectors. */
63 int loop_nr; /* Number that identifies the group of connected edges. */
64
65 const float *v_co_orig() const
66 {
67 return this->td->iloc;
68 }
69};
70
77 Span<float3> co_link_orig_3d; /* Target locations. */
79
80 const float *co_orig_3d() const
81 {
82 return this->td->iloc;
83 }
84
85 const float3 &co_dest_3d() const
86 {
87 return this->co_link_orig_3d[this->co_link_curr];
88 }
89};
90
120
121/* `transform_convert.cc` */
122
126void transform_autoik_update(TransInfo *t, short mode);
134void clipUVData(TransInfo *t);
135void transform_convert_flush_handle2D(TransData *td, TransData2D *td2d, float y_fac);
139void recalc_data(TransInfo *t);
140
141/* `transform_convert_mesh.cc` */
142
144
145/* `transform_convert_sequencer.cc` */
146
148
149/********************* intern **********************/
150
151/* `transform_convert.cc` */
152
158void transform_around_single_fallback_ex(TransInfo *t, int data_len_all);
168void calc_distanceCurveVerts(TransData *head, TransData *tail, bool cyclic);
180bool FrameOnMouseSide(char side, float frame, float cframe);
186
187/* `transform_convert_curves.cc` */
188
189namespace curves {
190
197 const float4x4 &transform,
198 const bke::crazyspace::GeometryDeformation &deformation,
199 std::optional<MutableSpan<float>> value_attribute,
200 const Span<IndexMask> points_to_transform_per_attr,
201 const IndexMask &affected_curves,
202 bool use_connected_only,
203 const IndexMask &bezier_curves,
204 void *extra = nullptr);
205
207
209 const int layer,
210 MutableSpan<float3> positions_dst);
211
212void update_vector_handle_types(const IndexMask &selected_handles,
213 MutableSpan<int8_t> handle_types);
214void update_auto_handle_types(const IndexMask &selected_handles_left,
215 const IndexMask &selected_handles_right,
216 const IndexMask &bezier_points,
217 MutableSpan<int8_t> handle_types_left,
218 MutableSpan<int8_t> handle_types_right);
219
220} // namespace curves
221
222/* `transform_convert_action.cc` */
223
225
226/* `transform_convert_armature.cc` */
227
230
235void transform_convert_pose_transflags_update(Object *ob, int mode, short around);
236
237/* `transform_convert_cursor.cc` */
238
242
243/* `transform_convert_curve.cc` */
244
246
247/* `transform_convert_curves.cc` */
248
249namespace curves {
251}
252
253/* `transform_convert_pointcloud.cc` */
254
258
259/* `transform_convert_graph.cc` */
260
262
263/* `transform_convert_greasepencil.cc` */
264
268
269/* `transform_convert_lattice.cc` */
270
272
273/* `transform_convert_mask.cc` */
274
276
277/* `transform_convert_mball.cc` */
278
280
281/* `transform_convert_mesh.cc` */
282
284
286 float (*center)[3];
287 float (*axismtx)[3][3];
290};
291
293 int index;
294 int flag;
295};
296
301
306
308 bool calc_single_islands,
309 bool calc_island_center,
310 bool calc_island_axismtx,
311 TransIslandData *r_island_data);
319 const float mtx[3][3],
320 float *dists,
321 int *index);
323 bool use_select,
324 bool use_topology,
325 const bool mirror_axis[3],
326 TransMirrorData *r_mirror_data);
334 BMEditMesh *em,
335 TransMeshDataCrazySpace *r_crazyspace_data);
336void transform_convert_mesh_crazyspace_transdata_set(const float mtx[3][3],
337 const float smtx[3][3],
338 const float defmat[3][3],
339 const float quat[4],
340 TransData *r_td);
342
344 const TransDataContainer *tc, Vector<float3> &r_loc_dst_buffer);
345
347 int *r_group_len);
348
349/* `transform_convert_mesh_edge.cc` */
350
352
353/* `transform_convert_mesh_skin.cc` */
354
356
357/* `transform_convert_mesh_uv.cc` */
358
360
362 const TransInfo *t, TransDataContainer *tc, Vector<float3> &r_loc_dst_buffer);
363
366 int *r_group_len);
367
368/* `transform_convert_mesh_vert_cdata.cc` */
369
371
372/* `transform_convert_nla.cc` */
373
375
376/* `transform_convert_node.cc` */
377
379
380/* `transform_convert_object.cc` */
381
383
384/* `transform_convert_object_texspace.cc` */
385
387
388/* `transform_convert_paintcurve.cc` */
389
391
392/* `transform_convert_particle.cc` */
393
395
396/* `transform_convert_sculpt.cc` */
397
399
400/* `transform_convert_sequencer.cc` */
401
403
404bool seq_transform_check_overlap(Span<Strip *> transformed_strips);
405
406/* `transform_convert_sequencer_image.cc` */
407
409
410/* `transform_convert_sequencer_retiming.cc` */
411
413
414/* `transform_convert_tracking.cc` */
415
417
418/* `transform_convert_tracking_curves.cc` */
419
421
422} // namespace blender::ed::transform
#define C
Definition RandGen.cpp:29
BMesh * bm
void update_vector_handle_types(const IndexMask &selected_handles, MutableSpan< int8_t > handle_types)
void curve_populate_trans_data_structs(const TransInfo &t, TransDataContainer &tc, bke::CurvesGeometry &curves, const float4x4 &transform, const bke::crazyspace::GeometryDeformation &deformation, std::optional< MutableSpan< float > > value_attribute, const Span< IndexMask > points_to_transform_per_attr, const IndexMask &affected_curves, bool use_connected_only, const IndexMask &bezier_curves, void *extra=nullptr)
void copy_positions_from_curves_transform_custom_data(const TransCustomData &custom_data, const int layer, MutableSpan< float3 > positions_dst)
CurvesTransformData * create_curves_transform_custom_data(TransCustomData &custom_data)
void update_auto_handle_types(const IndexMask &selected_handles_left, const IndexMask &selected_handles_right, const IndexMask &bezier_points, MutableSpan< int8_t > handle_types_left, MutableSpan< int8_t > handle_types_right)
Array< TransDataVertSlideVert > transform_mesh_vert_slide_data_create(const TransDataContainer *tc, Vector< float3 > &r_loc_dst_buffer)
TransConvertTypeInfo TransConvertType_Pose
TransConvertTypeInfo TransConvertType_Mesh
void animrecord_check_state(TransInfo *t, ID *id)
TransConvertTypeInfo TransConvertType_Mask
TransConvertTypeInfo TransConvertType_Sequencer
void special_aftertrans_update(bContext *C, TransInfo *t)
void recalc_data(TransInfo *t)
void clipUVData(TransInfo *t)
TransConvertTypeInfo TransConvertType_Sculpt
TransConvertTypeInfo TransConvertType_Node
bool transform_mode_use_local_origins(const TransInfo *t)
void transform_convert_mesh_mirrordata_free(TransMirrorData *mirror_data)
void transform_convert_mesh_mirrordata_calc(BMEditMesh *em, bool use_select, bool use_topology, const bool mirror_axis[3], TransMirrorData *r_mirror_data)
Array< TransDataEdgeSlideVert > transform_mesh_edge_slide_data_create(const TransDataContainer *tc, int *r_group_len)
void transform_convert_mesh_islanddata_free(TransIslandData *island_data)
TransConvertTypeInfo TransConvertType_Graph
void transform_convert_mesh_crazyspace_free(TransMeshDataCrazySpace *r_crazyspace_data)
Array< TransDataVertSlideVert > transform_mesh_uv_vert_slide_data_create(const TransInfo *t, TransDataContainer *tc, Vector< float3 > &r_loc_dst_buffer)
char transform_convert_frame_side_dir_get(TransInfo *t, float cframe)
void transform_around_single_fallback(TransInfo *t)
TransConvertTypeInfo TransConvertType_Curve
TransConvertTypeInfo TransConvertType_CursorImage
TransConvertTypeInfo TransConvertType_MeshEdge
Array< TransDataEdgeSlideVert > transform_mesh_uv_edge_slide_data_create(const TransInfo *t, TransDataContainer *tc, int *r_group_len)
TransConvertTypeInfo TransConvertType_Lattice
void transform_convert_mesh_customdatacorrect_init(TransInfo *t)
void transform_convert_mesh_crazyspace_detect(TransInfo *t, TransDataContainer *tc, BMEditMesh *em, TransMeshDataCrazySpace *r_crazyspace_data)
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)
bool constraints_list_needinv(TransInfo *t, ListBase *list)
TransConvertTypeInfo TransConvertType_Particle
TransDataCurveHandleFlags * initTransDataCurveHandles(TransData *td, BezTriple *bezt)
TransConvertTypeInfo TransConvertType_MBall
void transform_convert_clip_mirror_modifier_apply(TransDataContainer *tc)
void transform_convert_pose_transflags_update(Object *ob, int mode, short around)
TransConvertTypeInfo TransConvertType_Action
bool FrameOnMouseSide(char side, float frame, float cframe)
void transform_autoik_update(TransInfo *t, short mode)
TransConvertTypeInfo TransConvertType_NLA
TransConvertTypeInfo TransConvertType_MeshSkin
void transform_convert_sequencer_channel_clamp(TransInfo *t, float r_val[2])
void sort_trans_data_dist(TransInfo *t)
void transform_convert_mesh_connectivity_distance(BMesh *bm, const float mtx[3][3], float *dists, int *index)
void transform_around_single_fallback_ex(TransInfo *t, int data_len_all)
void transform_convert_flush_handle2D(TransData *td, TransData2D *td2d, const float y_fac)
TransConvertTypeInfo TransConvertType_MeshUV
TransConvertTypeInfo TransConvertType_Tracking
TransConvertTypeInfo TransConvertType_Object
TransConvertTypeInfo TransConvertType_CursorSequencer
bool seq_transform_check_overlap(Span< Strip * > transformed_strips)
TransConvertTypeInfo TransConvertType_PaintCurve
void transform_convert_mesh_islands_calc(BMEditMesh *em, bool calc_single_islands, bool calc_island_center, bool calc_island_axismtx, TransIslandData *r_island_data)
int special_transform_moving(TransInfo *t)
void calc_distanceCurveVerts(TransData *head, TransData *tail, bool cyclic)
TransConvertTypeInfo TransConvertType_EditArmature
void create_trans_data(bContext *C, TransInfo *t)
TransConvertTypeInfo TransConvertType_Cursor3D
MatBase< float, 4, 4 > float4x4
VecBase< float, 3 > float3
Definition DNA_ID.h:404
void(* special_aftertrans_update)(bContext *C, TransInfo *t)
void(* create_trans_data)(bContext *C, TransInfo *t)