46 float color_linear[3];
48 const ColorGeometry4f mix_color(color_linear[0], color_linear[1], color_linear[2], 1.0f);
53 params, use_selection_masking, memory);
54 if (!point_selection.
is_empty() && do_points) {
62 paint, brush, view_positions[point_i], extension_sample,
params.multi_frame_falloff);
73 paint, brush, view_positions[point_i], extension_sample,
params.multi_frame_falloff);
82 params, use_selection_masking, memory);
83 if (!fill_selection.is_empty() && do_fill) {
90 const IndexRange points = points_by_curve[curve_i];
93 paint, brush, curve_view_positions, extension_sample,
params.multi_frame_falloff);
102 const IndexRange points = points_by_curve[curve_i];
105 paint, brush, curve_view_positions, extension_sample,
params.multi_frame_falloff);
120 return std::make_unique<VertexPaintOperation>(stroke_mode);
const float * BKE_brush_color_get(const Paint *paint, const Brush *brush)
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)
MINLINE void copy_v3_v3(float r[3], const float a[3])
Span< T > as_span() const
bool is_inverted(const Brush &brush) const
GreasePencilStrokeOperationCommon()=default
void init_stroke(const bContext &C, const InputSample &start_sample)
void foreach_editable_drawing(const bContext &C, FunctionRef< bool(const GreasePencilStrokeParams ¶ms, const DeltaProjectionFunc &projection_fn)> fn) const
void on_stroke_extended(const bContext &C, const InputSample &extension_sample) override
void on_stroke_done(const bContext &) override
void on_stroke_begin(const bContext &C, const InputSample &start_sample) override
void foreach_index(Fn &&fn) const
bool ED_grease_pencil_any_vertex_mask_selection(const ToolSettings *tool_settings)
CCL_NAMESPACE_BEGIN ccl_device float invert(const float color, const float factor)
IndexMask fill_mask_for_stroke_operation(const GreasePencilStrokeParams ¶ms, bool use_selection_masking, IndexMaskMemory &memory)
bool do_vertex_color_fill(const Brush &brush)
std::unique_ptr< GreasePencilStrokeOperation > new_vertex_paint_operation(BrushStrokeMode stroke_mode)
IndexMask point_mask_for_stroke_operation(const GreasePencilStrokeParams ¶ms, bool use_selection_masking, IndexMaskMemory &memory)
float brush_point_influence(const Paint &paint, const Brush &brush, const float2 &co, const InputSample &sample, float multi_frame_falloff)
Array< float2 > calculate_view_positions(const GreasePencilStrokeParams ¶ms, const IndexMask &selection)
float brush_fill_influence(const Paint &paint, const Brush &brush, Span< float2 > fill_positions, const InputSample &sample, float multi_frame_falloff)
bool do_vertex_color_points(const Brush &brush)
T interpolate(const T &a, const T &b, const FactorT &t)
T max(const T &a, const T &b)
ColorSceneLinear4f< eAlpha::Premultiplied > ColorGeometry4f
struct ToolSettings * toolsettings