This repository has been archived on 2023-10-09. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
blender-archive/source/blender/editors/transform/transform_mode.h
Germano Cavalcante e6a557952e Fix T100633: Node Editor: Edge scrolling breaks node snapping
The view offset, calculated by the Edge Pan system, only affects the
position of the nodes, but forget to update:
- snapping data
- final value of transform
- values used for custom drawing

Therefore, to avoid having to update a lot of scattered data, the
`transformViewUpdate` utility has been implemented to recalculate input
values when the view changes.

This utility does more than is necessary to fix the bug, but with that,
it can work in any situation.
2022-08-26 14:17:55 -03:00

196 lines
4.8 KiB
C++

/* SPDX-License-Identifier: GPL-2.0-or-later
* Copyright 2001-2002 NaN Holding BV. All rights reserved. */
/** \file
* \ingroup edtransform
* \brief transform modes used by different operators.
*/
#pragma once
struct AnimData;
struct LinkNode;
struct TransData;
struct TransDataContainer;
struct TransInfo;
struct bContext;
struct wmOperator;
/* header of TransDataEdgeSlideVert, TransDataEdgeSlideEdge */
typedef struct TransDataGenericSlideVert {
struct BMVert *v;
struct LinkNode **cd_loop_groups;
float co_orig_3d[3];
} TransDataGenericSlideVert;
/* transform_mode.c */
eTfmMode transform_mode_really_used(struct bContext *C, eTfmMode mode);
bool transdata_check_local_center(const TransInfo *t, short around);
/**
* Informs if the mode can be switched during modal.
*/
bool transform_mode_is_changeable(int mode);
void protectedTransBits(short protectflag, float vec[3]);
void protectedSizeBits(short protectflag, float size[3]);
void constraintTransLim(const TransInfo *t, TransData *td);
void constraintSizeLim(const TransInfo *t, TransData *td);
/**
* Used by Transform Rotation and Transform Normal Rotation.
*/
void headerRotation(TransInfo *t, char *str, int str_size, float final);
/**
* Applies values of rotation to `td->loc` and `td->ext->quat`
* based on a rotation matrix (mat) and a pivot (center).
*
* Protected axis and other transform settings are taken into account.
*/
void ElementRotation_ex(const TransInfo *t,
const TransDataContainer *tc,
TransData *td,
const float mat[3][3],
const float *center);
void ElementRotation(const TransInfo *t,
const TransDataContainer *tc,
TransData *td,
const float mat[3][3],
short around);
void headerResize(TransInfo *t, const float vec[3], char *str, int str_size);
void ElementResize(const TransInfo *t,
const TransDataContainer *tc,
TransData *td,
const float mat[3][3]);
void transform_mode_init(TransInfo *t, struct wmOperator *op, int mode);
/**
* When in modal and not set, initializes a default orientation for the mode.
*/
void transform_mode_default_modal_orientation_set(TransInfo *t, int type);
/* transform_mode_align.c */
void initAlign(TransInfo *t);
/* transform_mode_baketime.c */
void initBakeTime(TransInfo *t);
/* transform_mode_bbone_resize.c */
void initBoneSize(TransInfo *t);
/* transform_mode_bend.c */
void initBend(TransInfo *t);
/* transform_mode_boneenvelope.c */
void initBoneEnvelope(TransInfo *t);
/* transform_mode_boneroll.c */
void initBoneRoll(TransInfo *t);
/* transform_mode_curveshrinkfatten.c */
void initCurveShrinkFatten(TransInfo *t);
/* transform_mode_edge_bevelweight.c */
void initBevelWeight(TransInfo *t);
/* transform_mode_edge_crease.c */
void initEgdeCrease(TransInfo *t);
void initVertCrease(TransInfo *t);
/* transform_mode_edge_rotate_normal.c */
void initNormalRotation(TransInfo *t);
/* transform_mode_edge_seq_slide.c */
void initSeqSlide(TransInfo *t);
/* transform_mode_edge_slide.c */
void drawEdgeSlide(TransInfo *t);
void initEdgeSlide_ex(
TransInfo *t, bool use_double_side, bool use_even, bool flipped, bool use_clamp);
void initEdgeSlide(TransInfo *t);
void transform_mode_edge_slide_reproject_input(TransInfo *t);
/* transform_mode_gpopacity.c */
void initGPOpacity(TransInfo *t);
/* transform_mode_gpshrinkfatten.c */
void initGPShrinkFatten(TransInfo *t);
/* transform_mode_maskshrinkfatten.c */
void initMaskShrinkFatten(TransInfo *t);
/* transform_mode_mirror.c */
void initMirror(TransInfo *t);
/* transform_mode_push_pull.c */
void initPushPull(TransInfo *t);
/* transform_mode_resize.c */
void initResize(TransInfo *t, float mouse_dir_constraint[3]);
/* transform_mode_rotate.c */
void initRotation(TransInfo *t);
/* transform_mode_shear.c */
void initShear(TransInfo *t);
/* transform_mode_shrink_fatten.c */
void initShrinkFatten(TransInfo *t);
/* transform_mode_skin_resize.c */
void initSkinResize(TransInfo *t);
/* transform_mode_tilt.c */
void initTilt(TransInfo *t);
/* transform_mode_timescale.c */
void initTimeScale(TransInfo *t);
/* transform_mode_timeslide.c */
void initTimeSlide(TransInfo *t);
/* transform_mode_timetranslate.c */
void initTimeTranslate(TransInfo *t);
/* transform_mode_tosphere.c */
void initToSphere(TransInfo *t);
/* transform_mode_trackball.c */
void initTrackball(TransInfo *t);
/* transform_mode_translate.c */
void initTranslation(TransInfo *t);
/* transform_mode_vert_slide.c */
void drawVertSlide(TransInfo *t);
void initVertSlide_ex(TransInfo *t, bool use_even, bool flipped, bool use_clamp);
void initVertSlide(TransInfo *t);
void transform_mode_vert_slide_reproject_input(TransInfo *t);