30#include "RNA_prototypes.hh"
64 TransDataSeq *
tdseq = MEM_new<TransDataSeq>(
"TransSeq TransDataSeq");
67 tdseq->orig_origin_pixelspace = origin;
91 float vertex[2] = {origin[0], origin[1]};
96 if (vert_index == 1) {
100 else if (vert_index == 2) {
105 td2d->
loc[0] = vertex[0];
106 td2d->
loc[1] = vertex[1];
107 td2d->
loc2d =
nullptr;
111 td->
center[0] = origin[0];
112 td->
center[1] = origin[1];
121 if (vert_index == 0) {
137 for (
int i = 0; i < tc->
data_len; i += 3) {
138 TransDataSeq *
tdseq =
static_cast<TransDataSeq *
>((td + i)->extra);
174 "TransSeq TransData2D");
201 bool changed =
false;
240 float2 handle_x =
float2((td2d + 1)->loc) - handle_origin;
241 float2 handle_y =
float2((td2d + 2)->loc) - handle_origin;
244 float2 orig_strip_origin_pixelspace =
tdseq->orig_origin_pixelspace;
246 return TransformResult{(orig_strip_origin_pixelspace - handle_origin) * mirror * aspect,
259 for (i = 0, td = tc->
data, td2d = tc->
data_2d; i < tc->
data_len; i += 3, td += 3, td2d += 3) {
260 TransDataSeq *
tdseq =
static_cast<TransDataSeq *
>(td->
extra);
330 return (quad_new[0] -
tdseq->quad_orig[0]) * mirror / viewport_pixel_aspect;
346 const float2 origin =
tdseq->orig_origin_pixelspace;
348 const float2 origin_pixelspace_unscaled = origin / viewport_pixel_aspect * mirror;
349 const float2 origin_translated = origin_pixelspace_unscaled - translation;
351 const float2 origin_abs = origin_raw_space + image_size / 2;
352 const float2 origin_rel = origin_abs / image_size;
363 for (i = 0, td = tc->
data, td2d = tc->
data_2d; i < tc->
data_len; i += 3, td += 3, td2d += 3) {
364 TransDataSeq *
tdseq =
static_cast<TransDataSeq *
>(td->
extra);
374 transform->xofs =
tdseq->orig_translation.x - delta_translation.x;
375 transform->yofs =
tdseq->orig_translation.y - delta_translation.y;
399 for (i = 0, td = tc->
data, td2d = tc->
data_2d; i < tc->
data_len; i += 3, td += 3, td2d += 3) {
400 TransDataSeq *
tdseq =
static_cast<TransDataSeq *
>(td->
extra);
Functions to insert, delete or modify keyframes.
void unit_m3(float m[3][3])
void normalize_m3(float R[3][3]) ATTR_NONNULL()
void axis_angle_to_mat3_single(float R[3][3], char axis, float angle)
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void copy_v3_v3(float r[3], const float a[3])
@ SEQ_VIEW_SEQUENCE_PREVIEW
@ AUTOKEY_FLAG_INSERTAVAILABLE
Read Guarded memory(de)allocation.
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
int64_t remove_if(Predicate &&predicate)
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
bool is_autokey_on(const Scene *scene)
bool autokeyframe_property(bContext *C, Scene *scene, PointerRNA *ptr, PropertyRNA *prop, int rnaindex, float cfra, bool only_if_property_keyed)
bool is_keying_flag(const Scene *scene, eKeying_Flag flag)
T length(const VecBase< T, Size > &a)
CartesianBasis invert(const CartesianBasis &basis)
VecBase< T, 3 > transform_point(const CartesianBasis &basis, const VecBase< T, 3 > &v)
Array< float2 > image_transform_final_quad_get(const Scene *scene, const Strip *strip)
void relations_invalidate_cache(Scene *scene, Strip *strip)
ListBase * channels_displayed_get(const Editing *ed)
float3x3 image_transform_matrix_get(const Scene *scene, const Strip *strip)
Editing * editing_get(const Scene *scene)
float2 image_transform_mirror_factor_get(const Strip *strip)
float2 image_transform_origin_offset_pixelspace_get(const Scene *scene, const Strip *strip)
VectorSet< Strip * > query_rendered_strips(const Scene *scene, ListBase *channels, ListBase *seqbase, const int timeline_frame, const int displayed_channel)
ListBase * active_seqbase_get(const Editing *ed)
VecBase< float, 2 > float2
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
struct ToolSettings * toolsettings
StripTransform * transform