37 return float2(vec.x * cos_angle - vec.y * sin_angle, vec.x * sin_angle + vec.y * cos_angle);
59 if (selection.is_empty()) {
71 const float2 &co = view_positions[point_i];
73 scene, brush, co, extension_sample,
params.multi_frame_falloff);
74 if (influence <= 0.0f) {
79 const float2 radial_offset = co - mouse_pos;
80 positions[point_i] = projection_fn(deformation.positions[point_i],
85 params.drawing.tag_positions_changed();
93 return std::make_unique<TwistOperation>(stroke_mode);
Scene * CTX_data_scene(const bContext *C)
Low-level operations for curves.
Low-level operations for grease pencil.
Paint * BKE_paint_get_active_from_context(const bContext *C)
Brush * BKE_paint_brush(Paint *paint)
#define GPENCIL_ANY_SCULPT_MASK(flag)
eGP_Sculpt_SelectMaskFlag
bool is_inverted(const Brush &brush) const
GreasePencilStrokeOperationCommon()
void stroke_extended(const InputSample &extension_sample)
void init_stroke(const bContext &C, const InputSample &start_sample)
void foreach_editable_drawing(const bContext &C, FunctionRef< bool(const GreasePencilStrokeParams ¶ms)> fn) const
void on_stroke_done(const bContext &) override
void on_stroke_begin(const bContext &C, const InputSample &start_sample) override
void on_stroke_extended(const bContext &C, const InputSample &extension_sample) override
CCL_NAMESPACE_BEGIN ccl_device float invert(float color, float factor)
static float2 rotate_by_angle(const float2 &vec, const float angle)
IndexMask point_selection_mask(const GreasePencilStrokeParams ¶ms, const bool use_masking, IndexMaskMemory &memory)
Array< float2 > calculate_view_positions(const GreasePencilStrokeParams ¶ms, const IndexMask &selection)
float brush_point_influence(const Scene &scene, const Brush &brush, const float2 &co, const InputSample &sample, float multi_frame_falloff)
bke::crazyspace::GeometryDeformation get_drawing_deformation(const GreasePencilStrokeParams ¶ms)
std::unique_ptr< GreasePencilStrokeOperation > new_twist_operation(BrushStrokeMode stroke_mode)
std::function< float3(const float3 position, const float2 &screen_delta)> DeltaProjectionFunc
T cos(const AngleRadianBase< T > &a)
T sin(const AngleRadianBase< T > &a)
VecBase< float, 2 > float2