45 const ColorGeometry4f replace_color(color_linear.x, color_linear.y, color_linear.z, 1.0f);
50 if (!point_selection.
is_empty() && do_points) {
55 scene, brush, view_positions[point_i], extension_sample,
params.multi_frame_falloff);
56 if (influence > 0.0f && vertex_colors[point_i].a > 0.0f) {
57 vertex_colors[point_i] = replace_color;
63 if (!fill_selection.is_empty() && do_fill) {
69 const IndexRange points = points_by_curve[curve_i];
72 scene, brush, curve_view_positions, extension_sample,
params.multi_frame_falloff);
73 if (influence > 0.0f && fill_colors[curve_i].a > 0.0f) {
74 fill_colors[curve_i] = replace_color;
86 return std::make_unique<VertexReplaceOperation>();
const float * BKE_brush_color_get(const Scene *scene, 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)
void srgb_to_linearrgb_v3_v3(float linear[3], const float srgb[3])
#define GPENCIL_ANY_VERTEX_MASK(flag)
eGP_vertex_SelectMaskFlag
Span< T > as_span() const
GreasePencilStrokeOperationCommon()
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 &C) override
void on_stroke_extended(const bContext &C, const InputSample &extension_sample) override
void on_stroke_begin(const bContext &C, const InputSample &start_sample) override
void foreach_index(Fn &&fn) const
std::unique_ptr< GreasePencilStrokeOperation > new_vertex_replace_operation()
bool do_vertex_color_fill(const Brush &brush)
IndexMask point_selection_mask(const GreasePencilStrokeParams ¶ms, const bool use_masking, IndexMaskMemory &memory)
Array< float2 > calculate_view_positions(const GreasePencilStrokeParams ¶ms, const IndexMask &selection)
IndexMask fill_selection_mask(const GreasePencilStrokeParams ¶ms, const bool use_masking, IndexMaskMemory &memory)
float brush_point_influence(const Scene &scene, const Brush &brush, const float2 &co, const InputSample &sample, float multi_frame_falloff)
float brush_fill_influence(const Scene &scene, const Brush &brush, Span< float2 > fill_positions, const InputSample &sample, float multi_frame_falloff)
bool do_vertex_color_points(const Brush &brush)