Blender V5.0
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 "ED_grease_pencil.hh"
15
16#include "transform.hh"
17
18struct BMEditMesh;
19struct BMesh;
20struct BezTriple;
21struct ListBase;
22struct Object;
23struct TransData;
24struct TransDataCurveHandleFlags;
25struct TransInfo;
26struct bContext;
27struct Strip;
28
31}
32namespace blender::bke {
33class CurvesGeometry;
34}
35
36namespace blender::ed::transform {
37
39 int flags; /* #eTFlag. */
40
45
50
55};
56
63 float3 dir_side[2]; /* Directional vectors on the sides. */
64 float edge_len; /* Distance between vectors. */
65 int loop_nr; /* Number that identifies the group of connected edges. */
66
67 const float *v_co_orig() const
68 {
69 return this->td->iloc;
70 }
71};
72
79 Span<float3> co_link_orig_3d; /* Target locations. */
81
82 const float *co_orig_3d() const
83 {
84 return this->td->iloc;
85 }
86
87 const float3 &co_dest_3d() const
88 {
89 return this->co_link_orig_3d[this->co_link_curr];
90 }
91};
92
128
129/* `transform_convert.cc` */
130
134void transform_autoik_update(TransInfo *t, short mode);
142void clipUVData(TransInfo *t);
143void transform_convert_flush_handle2D(TransData *td, TransData2D *td2d, float y_fac);
147void recalc_data(TransInfo *t);
148
149/* `transform_convert_mesh.cc` */
150
152
153/* `transform_convert_sequencer.cc` */
154
155bool transform_convert_sequencer_clamp(const TransInfo *t, float r_val[2]);
156
157/********************* intern **********************/
158
159/* `transform_convert.cc` */
160
166void transform_around_single_fallback_ex(TransInfo *t, int data_len_all);
176void calc_distanceCurveVerts(TransData *head, TransData *tail, bool cyclic);
188bool FrameOnMouseSide(char side, float frame, float cframe);
194
195/* `transform_convert_curves.cc` */
196
197namespace curves {
198
205 const float4x4 &transform,
206 const bke::crazyspace::GeometryDeformation &deformation,
207 std::optional<MutableSpan<float>> value_attribute,
208 Span<IndexMask> points_to_transform_per_attr,
209 const IndexMask &affected_curves,
210 bool use_connected_only,
211 const IndexMask &bezier_curves,
212 void *extra = nullptr);
213
215
217 int layer,
218 MutableSpan<float3> positions_dst);
219
221 Span<IndexMask> points_to_transform_per_attr,
222 int curve_index,
223 TransCustomData &custom_data);
224void calculate_aligned_handles(const TransCustomData &custom_data,
226 int curve_index);
228 const std::array<IndexMask, 3> &selection_per_attribute,
229 const IndexMask &bezier_points,
231
232} // namespace curves
233
234/* `transform_convert_action.cc` */
235
237
238/* `transform_convert_armature.cc` */
239
242
246void transform_convert_pose_transflags_update(Object *ob, int mode, short around);
247
248/* `transform_convert_cursor.cc` */
249
253
254/* `transform_convert_curve.cc` */
255
257
258/* `transform_convert_curves.cc` */
259
260namespace curves {
262}
263
264/* `transform_convert_pointcloud.cc` */
265
269
270/* `transform_convert_graph.cc` */
271
273
274/* `transform_convert_greasepencil.cc` */
275
279
280/* `transform_convert_lattice.cc` */
281
283
284/* `transform_convert_mask.cc` */
285
287
288/* `transform_convert_mball.cc` */
289
291
292/* `transform_convert_mesh.cc` */
293
295
302
304 int index;
305 int flag;
306};
307
312
317
319 bool calc_single_islands,
320 bool calc_island_center,
321 bool calc_island_axismtx,
322 TransIslandData *r_island_data);
330 const float mtx[3][3],
331 float *dists,
332 int *index);
334 bool use_select,
335 bool use_topology,
336 const bool mirror_axis[3],
337 TransMirrorData *r_mirror_data);
345 BMEditMesh *em,
346 TransMeshDataCrazySpace *r_crazyspace_data);
347void transform_convert_mesh_crazyspace_transdata_set(const float mtx[3][3],
348 const float smtx[3][3],
349 const float defmat[3][3],
350 const float quat[4],
351 TransData *r_td);
353
355 const TransDataContainer *tc, Vector<float3> &r_loc_dst_buffer);
356
358 int *r_group_len);
359
360/* `transform_convert_mesh_edge.cc` */
361
363
364/* `transform_convert_mesh_skin.cc` */
365
367
368/* `transform_convert_mesh_uv.cc` */
369
371
373 const TransInfo *t, TransDataContainer *tc, Vector<float3> &r_loc_dst_buffer);
374
377 int *r_group_len);
378
379/* `transform_convert_mesh_vert_cdata.cc` */
380
382
383/* `transform_convert_nla.cc` */
384
386
387/* `transform_convert_node.cc` */
388
390
391/* `transform_convert_object.cc` */
392
394
395/* `transform_convert_object_texspace.cc` */
396
398
399/* `transform_convert_paintcurve.cc` */
400
402
403/* `transform_convert_particle.cc` */
404
406
407/* `transform_convert_sculpt.cc` */
408
410
411/* `transform_convert_sequencer.cc` */
412
414
415bool seq_transform_check_overlap(Span<Strip *> transformed_strips);
416
417/* `transform_convert_sequencer_image.cc` */
418
420
421/* `transform_convert_sequencer_retiming.cc` */
422
424
425/* `transform_convert_tracking.cc` */
426
428
429/* `transform_convert_tracking_curves.cc` */
430
432
433} // namespace blender::ed::transform
#define C
Definition RandGen.cpp:29
BMesh * bm
nullptr float
void create_aligned_handles_masks(const bke::CurvesGeometry &curves, Span< IndexMask > points_to_transform_per_attr, int curve_index, TransCustomData &custom_data)
CurvesTransformData * create_curves_transform_custom_data(TransCustomData &custom_data)
void calculate_aligned_handles(const TransCustomData &custom_data, bke::CurvesGeometry &curves, int curve_index)
bool update_handle_types_for_transform(eTfmMode mode, const std::array< IndexMask, 3 > &selection_per_attribute, const IndexMask &bezier_points, bke::CurvesGeometry &curves)
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, 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, int layer, MutableSpan< float3 > positions_dst)
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)
bool transform_convert_sequencer_clamp(const TransInfo *t, float r_val[2])
void transform_autoik_update(TransInfo *t, short mode)
TransConvertTypeInfo TransConvertType_NLA
TransConvertTypeInfo TransConvertType_MeshSkin
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:414
Vector< ed::greasepencil::MutableDrawingInfo > drawings
void(* special_aftertrans_update)(bContext *C, TransInfo *t)
void(* create_trans_data)(bContext *C, TransInfo *t)