2022-02-11 09:07:11 +11:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
|
* Copyright 2001-2002 NaN Holding BV. All rights reserved. */
|
2019-09-05 14:34:54 -03:00
|
|
|
|
|
|
|
|
/** \file
|
|
|
|
|
* \ingroup edtransform
|
2020-02-07 10:02:11 -03:00
|
|
|
* \brief conversion and adaptation of different datablocks to a common struct.
|
2019-09-05 14:34:54 -03:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
2022-04-28 12:50:22 +02:00
|
|
|
#include "RE_engine.h"
|
|
|
|
|
|
2021-01-04 17:36:51 -03:00
|
|
|
struct BMEditMesh;
|
|
|
|
|
struct BMesh;
|
2021-02-18 14:14:17 +11:00
|
|
|
struct BezTriple;
|
2020-06-09 20:27:40 -03:00
|
|
|
struct FCurve;
|
2019-09-05 14:34:54 -03:00
|
|
|
struct ListBase;
|
|
|
|
|
struct Object;
|
|
|
|
|
struct TransData;
|
|
|
|
|
struct TransDataCurveHandleFlags;
|
|
|
|
|
struct TransInfo;
|
2019-09-09 20:50:11 +10:00
|
|
|
struct bContext;
|
2019-09-05 14:34:54 -03:00
|
|
|
|
|
|
|
|
/* transform_convert.c */
|
2021-12-09 00:55:11 +11:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Change the chain-length of auto-IK.
|
|
|
|
|
*/
|
2019-09-05 14:34:54 -03:00
|
|
|
void transform_autoik_update(TransInfo *t, short mode);
|
|
|
|
|
int special_transform_moving(TransInfo *t);
|
2021-12-09 00:55:11 +11:00
|
|
|
/**
|
|
|
|
|
* Inserting keys, point-cache, redraw events.
|
|
|
|
|
*/
|
2019-09-05 14:34:54 -03:00
|
|
|
void special_aftertrans_update(struct bContext *C, TransInfo *t);
|
|
|
|
|
void sort_trans_data_dist(TransInfo *t);
|
|
|
|
|
void createTransData(struct bContext *C, TransInfo *t);
|
2022-01-07 11:38:08 +11:00
|
|
|
bool clipUVTransform(TransInfo *t, float vec[2], bool resize);
|
2019-09-05 14:34:54 -03:00
|
|
|
void clipUVData(TransInfo *t);
|
2022-01-07 11:38:08 +11:00
|
|
|
void transform_convert_flush_handle2D(TransData *td, TransData2D *td2d, float y_fac);
|
2021-12-09 00:55:11 +11:00
|
|
|
/**
|
|
|
|
|
* Called for updating while transform acts, once per redraw.
|
|
|
|
|
*/
|
2021-08-17 16:53:29 -03:00
|
|
|
void recalcData(TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_mesh.c */
|
2021-12-09 00:55:11 +11:00
|
|
|
|
2021-04-24 10:46:46 -03:00
|
|
|
void transform_convert_mesh_customdatacorrect_init(TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_sequencer.c */
|
2021-12-09 00:55:11 +11:00
|
|
|
|
2021-06-29 20:12:19 +02:00
|
|
|
void transform_convert_sequencer_channel_clamp(TransInfo *t, float r_val[2]);
|
|
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/********************* intern **********************/
|
|
|
|
|
|
|
|
|
|
/* transform_convert.c */
|
2021-12-09 00:55:11 +11:00
|
|
|
|
2020-05-15 22:48:00 +10:00
|
|
|
bool transform_mode_use_local_origins(const TransInfo *t);
|
2021-12-09 00:55:11 +11:00
|
|
|
/**
|
|
|
|
|
* Transforming around ourselves is no use, fallback to individual origins,
|
|
|
|
|
* useful for curve/armatures.
|
|
|
|
|
*/
|
2020-06-15 01:07:59 +10:00
|
|
|
void transform_around_single_fallback_ex(TransInfo *t, int data_len_all);
|
2019-09-05 14:34:54 -03:00
|
|
|
void transform_around_single_fallback(TransInfo *t);
|
2021-12-09 00:55:11 +11:00
|
|
|
/**
|
|
|
|
|
* Called during special_aftertrans_update to make sure selected keyframes replace
|
|
|
|
|
* any other keyframes which may reside on that frame (that is not selected).
|
|
|
|
|
*
|
|
|
|
|
* \param sel_flag: The flag (bezt.f1/2/3) value to use to determine selection. Usually `SELECT`,
|
|
|
|
|
* but may want to use a different one at times (if caller does not operate on
|
|
|
|
|
* selection).
|
|
|
|
|
*/
|
2022-01-07 11:38:08 +11:00
|
|
|
void posttrans_fcurve_clean(struct FCurve *fcu, int sel_flag, bool use_handle);
|
2021-12-09 00:55:11 +11:00
|
|
|
/**
|
|
|
|
|
* Little helper function for ObjectToTransData used to give certain
|
|
|
|
|
* constraints (ChildOf, FollowPath, and others that may be added)
|
|
|
|
|
* inverse corrections for transform, so that they aren't in CrazySpace.
|
|
|
|
|
* These particular constraints benefit from this, but others don't, hence
|
|
|
|
|
* this semi-hack ;-) - Aligorith
|
|
|
|
|
*/
|
2019-09-05 14:34:54 -03:00
|
|
|
bool constraints_list_needinv(TransInfo *t, ListBase *list);
|
2020-07-15 12:28:32 +02:00
|
|
|
void calc_distanceCurveVerts(TransData *head, TransData *tail, bool cyclic);
|
2021-12-09 00:55:11 +11:00
|
|
|
/**
|
|
|
|
|
* Utility function for getting the handle data from bezier's.
|
|
|
|
|
*/
|
2019-09-05 14:34:54 -03:00
|
|
|
struct TransDataCurveHandleFlags *initTransDataCurveHandles(TransData *td, struct BezTriple *bezt);
|
2021-12-09 00:55:11 +11:00
|
|
|
/**
|
|
|
|
|
* Used for `TFM_TIME_EXTEND`.
|
|
|
|
|
*/
|
2020-04-27 11:42:18 -03:00
|
|
|
char transform_convert_frame_side_dir_get(TransInfo *t, float cframe);
|
2021-12-09 00:55:11 +11:00
|
|
|
/**
|
|
|
|
|
* This function tests if a point is on the "mouse" side of the cursor/frame-marking.
|
|
|
|
|
*/
|
2019-09-05 14:34:54 -03:00
|
|
|
bool FrameOnMouseSide(char side, float frame, float cframe);
|
2021-04-24 11:15:55 -03:00
|
|
|
void transform_convert_clip_mirror_modifier_apply(TransDataContainer *tc);
|
2021-12-09 00:55:11 +11:00
|
|
|
/**
|
|
|
|
|
* For the realtime animation recording feature, handle overlapping data.
|
|
|
|
|
*/
|
2022-05-25 13:00:18 +02:00
|
|
|
void animrecord_check_state(TransInfo *t, struct ID *id);
|
2019-09-05 14:34:54 -03:00
|
|
|
|
|
|
|
|
/* transform_convert_action.c */
|
2021-12-09 00:55:11 +11:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransActionData(bContext *C, TransInfo *t);
|
2021-12-09 00:55:11 +11:00
|
|
|
/* helper for recalcData() - for Action Editor transforms */
|
2020-06-07 18:48:33 -03:00
|
|
|
void recalcData_actedit(TransInfo *t);
|
2020-06-09 20:27:40 -03:00
|
|
|
void special_aftertrans_update__actedit(bContext *C, TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_armature.c */
|
2021-12-09 00:55:11 +11:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Sets transform flags in the bones.
|
|
|
|
|
* Returns total number of bones with #BONE_TRANSFORM.
|
|
|
|
|
*/
|
2022-02-01 18:38:26 -03:00
|
|
|
void transform_convert_pose_transflags_update(Object *ob, int mode, short around);
|
|
|
|
|
|
2021-12-09 00:55:11 +11:00
|
|
|
/**
|
|
|
|
|
* When objects array is NULL, use 't->data_container' as is.
|
|
|
|
|
*/
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransPose(TransInfo *t);
|
|
|
|
|
void createTransArmatureVerts(TransInfo *t);
|
2020-06-07 18:48:33 -03:00
|
|
|
void recalcData_edit_armature(TransInfo *t);
|
|
|
|
|
void recalcData_pose(TransInfo *t);
|
2020-06-09 20:27:40 -03:00
|
|
|
void special_aftertrans_update__pose(bContext *C, TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_cursor.c */
|
2021-12-09 00:55:11 +11:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransCursor_image(TransInfo *t);
|
2021-10-07 12:32:04 +11:00
|
|
|
void createTransCursor_sequencer(TransInfo *t);
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransCursor_view3d(TransInfo *t);
|
2021-04-24 10:59:37 -03:00
|
|
|
void recalcData_cursor_image(TransInfo *t);
|
2021-10-07 12:32:04 +11:00
|
|
|
void recalcData_cursor_sequencer(TransInfo *t);
|
|
|
|
|
void recalcData_cursor_view3d(TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_curve.c */
|
2021-12-09 00:55:11 +11:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransCurveVerts(TransInfo *t);
|
2020-06-07 18:48:33 -03:00
|
|
|
void recalcData_curve(TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_graph.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2021-12-09 00:55:11 +11:00
|
|
|
/**
|
|
|
|
|
* It is important to note that this doesn't always act on the selection (like it's usually done),
|
|
|
|
|
* it acts on a subset of it. E.g. the selection code may leave a hint that we just dragged on a
|
|
|
|
|
* left or right handle (SIPO_RUNTIME_FLAG_TWEAK_HANDLES_LEFT/RIGHT) and then we only transform the
|
|
|
|
|
* selected left or right handles accordingly.
|
|
|
|
|
* The points to be transformed are tagged with BEZT_FLAG_TEMP_TAG; some lower level curve
|
|
|
|
|
* functions may need to be made aware of this. It's ugly that these act based on selection state
|
|
|
|
|
* anyway.
|
|
|
|
|
*/
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransGraphEditData(bContext *C, TransInfo *t);
|
2021-12-09 00:55:11 +11:00
|
|
|
/* helper for recalcData() - for Graph Editor transforms */
|
2020-06-07 18:48:33 -03:00
|
|
|
void recalcData_graphedit(TransInfo *t);
|
2020-06-09 20:27:40 -03:00
|
|
|
void special_aftertrans_update__graph(bContext *C, TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_gpencil.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransGPencil(bContext *C, TransInfo *t);
|
2021-12-09 00:55:11 +11:00
|
|
|
/* force recalculation of triangles during transformation */
|
2020-06-07 18:48:33 -03:00
|
|
|
void recalcData_gpencil_strokes(TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_lattice.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransLatticeVerts(TransInfo *t);
|
2020-06-09 12:17:00 +02:00
|
|
|
void recalcData_lattice(TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_mask.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransMaskingData(bContext *C, TransInfo *t);
|
2020-06-07 18:48:33 -03:00
|
|
|
void recalcData_mask_common(TransInfo *t);
|
2020-06-09 20:27:40 -03:00
|
|
|
void special_aftertrans_update__mask(bContext *C, TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_mball.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransMBallVerts(TransInfo *t);
|
2021-04-24 10:59:37 -03:00
|
|
|
void recalcData_mball(TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_mesh.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2021-01-04 17:36:51 -03:00
|
|
|
struct TransIslandData {
|
|
|
|
|
float (*center)[3];
|
|
|
|
|
float (*axismtx)[3][3];
|
|
|
|
|
int island_tot;
|
|
|
|
|
int *island_vert_map;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct MirrorDataVert {
|
|
|
|
|
int index;
|
|
|
|
|
int flag;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct TransMirrorData {
|
|
|
|
|
struct MirrorDataVert *vert_map;
|
|
|
|
|
int mirror_elem_len;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct TransMeshDataCrazySpace {
|
|
|
|
|
float (*quats)[4];
|
|
|
|
|
float (*defmats)[3][3];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
void transform_convert_mesh_islands_calc(struct BMEditMesh *em,
|
2022-01-07 11:38:08 +11:00
|
|
|
bool calc_single_islands,
|
|
|
|
|
bool calc_island_center,
|
|
|
|
|
bool calc_island_axismtx,
|
2021-01-04 17:36:51 -03:00
|
|
|
struct TransIslandData *r_island_data);
|
|
|
|
|
void transform_convert_mesh_islanddata_free(struct TransIslandData *island_data);
|
2021-12-09 00:55:11 +11:00
|
|
|
/**
|
|
|
|
|
* \param mtx: Measure distance in this space.
|
|
|
|
|
* \param dists: Store the closest connected distance to selected vertices.
|
|
|
|
|
* \param index: Optionally store the original index we're measuring the distance to (can be NULL).
|
|
|
|
|
*/
|
2021-01-04 17:36:51 -03:00
|
|
|
void transform_convert_mesh_connectivity_distance(struct BMesh *bm,
|
|
|
|
|
const float mtx[3][3],
|
|
|
|
|
float *dists,
|
|
|
|
|
int *index);
|
|
|
|
|
void transform_convert_mesh_mirrordata_calc(struct BMEditMesh *em,
|
2022-01-07 11:38:08 +11:00
|
|
|
bool use_select,
|
|
|
|
|
bool use_topology,
|
2021-01-04 17:36:51 -03:00
|
|
|
const bool mirror_axis[3],
|
|
|
|
|
struct TransMirrorData *r_mirror_data);
|
|
|
|
|
void transform_convert_mesh_mirrordata_free(struct TransMirrorData *mirror_data);
|
2021-12-09 00:55:11 +11:00
|
|
|
/**
|
|
|
|
|
* Detect CrazySpace [tm].
|
|
|
|
|
* Vertices with space affected by quats are marked with #BM_ELEM_TAG.
|
|
|
|
|
*/
|
2021-01-04 17:36:51 -03:00
|
|
|
void transform_convert_mesh_crazyspace_detect(TransInfo *t,
|
|
|
|
|
struct TransDataContainer *tc,
|
|
|
|
|
struct BMEditMesh *em,
|
|
|
|
|
struct 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],
|
|
|
|
|
struct TransData *r_td);
|
|
|
|
|
void transform_convert_mesh_crazyspace_free(struct TransMeshDataCrazySpace *r_crazyspace_data);
|
|
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransEditVerts(TransInfo *t);
|
2020-06-07 18:48:33 -03:00
|
|
|
void recalcData_mesh(TransInfo *t);
|
2020-06-09 20:27:40 -03:00
|
|
|
void special_aftertrans_update__mesh(bContext *C, TransInfo *t);
|
2020-06-06 10:57:05 -03:00
|
|
|
|
|
|
|
|
/* transform_convert_mesh_edge.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransEdge(TransInfo *t);
|
2021-06-07 07:52:34 -03:00
|
|
|
void recalcData_mesh_edge(TransInfo *t);
|
2020-06-06 10:57:05 -03:00
|
|
|
|
2021-01-04 17:36:51 -03:00
|
|
|
/* transform_convert_mesh_skin.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2021-01-04 17:36:51 -03:00
|
|
|
void createTransMeshSkin(TransInfo *t);
|
|
|
|
|
void recalcData_mesh_skin(TransInfo *t);
|
|
|
|
|
|
2020-06-06 10:57:05 -03:00
|
|
|
/* transform_convert_mesh_uv.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransUVs(bContext *C, TransInfo *t);
|
2021-12-09 00:55:11 +11:00
|
|
|
/* helper for recalcData() - for Image Editor transforms */
|
2020-06-07 18:48:33 -03:00
|
|
|
void recalcData_uv(TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_nla.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransNlaData(bContext *C, TransInfo *t);
|
2021-12-09 00:55:11 +11:00
|
|
|
/* helper for recalcData() - for NLA Editor transforms */
|
2020-06-07 18:48:33 -03:00
|
|
|
void recalcData_nla(TransInfo *t);
|
2020-06-09 20:27:40 -03:00
|
|
|
void special_aftertrans_update__nla(bContext *C, TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_node.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2020-06-07 18:48:33 -03:00
|
|
|
void createTransNodeData(TransInfo *t);
|
|
|
|
|
void flushTransNodes(TransInfo *t);
|
2020-06-09 20:27:40 -03:00
|
|
|
void special_aftertrans_update__node(bContext *C, TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_object.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransObject(bContext *C, TransInfo *t);
|
2021-12-09 00:55:11 +11:00
|
|
|
/* helper for recalcData() - for object transforms, typically in the 3D view */
|
2020-06-07 18:48:33 -03:00
|
|
|
void recalcData_objects(TransInfo *t);
|
2020-06-09 20:27:40 -03:00
|
|
|
void special_aftertrans_update__object(bContext *C, TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2021-02-06 16:37:16 -03:00
|
|
|
/* transform_convert_object_texspace.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2021-02-06 16:37:16 -03:00
|
|
|
void createTransTexspace(TransInfo *t);
|
2021-12-09 00:55:11 +11:00
|
|
|
/* helper for recalcData() - for object transforms, typically in the 3D view */
|
2021-02-06 16:37:16 -03:00
|
|
|
void recalcData_texspace(TransInfo *t);
|
|
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_paintcurve.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransPaintCurveVerts(bContext *C, TransInfo *t);
|
2020-06-07 18:48:33 -03:00
|
|
|
void flushTransPaintCurve(TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_particle.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2021-02-11 12:34:41 +11:00
|
|
|
void createTransParticleVerts(TransInfo *t);
|
2020-06-07 18:48:33 -03:00
|
|
|
void recalcData_particles(TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2019-09-10 19:55:15 +02:00
|
|
|
/* transform_convert_sculpt.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2020-06-10 16:36:07 -03:00
|
|
|
void createTransSculpt(bContext *C, TransInfo *t);
|
2020-06-07 18:48:33 -03:00
|
|
|
void recalcData_sculpt(TransInfo *t);
|
2020-06-10 16:36:07 -03:00
|
|
|
void special_aftertrans_update__sculpt(bContext *C, TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2020-06-07 18:48:33 -03:00
|
|
|
/* transform_convert_sequencer.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2020-02-28 12:33:23 +11:00
|
|
|
void createTransSeqData(TransInfo *t);
|
2021-12-09 00:55:11 +11:00
|
|
|
/* helper for recalcData() - for sequencer transforms */
|
2020-06-07 18:48:33 -03:00
|
|
|
void recalcData_sequencer(TransInfo *t);
|
2020-06-09 20:27:40 -03:00
|
|
|
void special_aftertrans_update__sequencer(bContext *C, TransInfo *t);
|
2020-02-07 10:02:11 -03:00
|
|
|
|
2021-09-21 09:38:30 +02:00
|
|
|
/* transform_convert_sequencer_image.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2021-09-21 09:38:30 +02:00
|
|
|
void createTransSeqImageData(TransInfo *t);
|
|
|
|
|
void recalcData_sequencer_image(TransInfo *t);
|
2021-12-17 12:44:26 +01:00
|
|
|
void special_aftertrans_update__sequencer_image(bContext *C, TransInfo *t);
|
2021-09-21 09:38:30 +02:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
/* transform_convert_tracking.c */
|
2022-04-04 13:17:03 +10:00
|
|
|
|
2019-09-05 14:34:54 -03:00
|
|
|
void createTransTrackingData(bContext *C, TransInfo *t);
|
2021-12-09 00:55:11 +11:00
|
|
|
/* helper for recalcData() - for Movie Clip transforms */
|
2020-06-07 18:48:33 -03:00
|
|
|
void recalcData_tracking(TransInfo *t);
|
2020-06-09 20:27:40 -03:00
|
|
|
void special_aftertrans_update__movieclip(bContext *C, TransInfo *t);
|