Blender V4.3
BKE_brush.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
13#include "BLI_span.hh"
14
15#include "DNA_brush_enums.h"
16#include "DNA_color_types.h"
17#include "DNA_object_enums.h"
18
19enum class PaintMode : int8_t;
20struct Brush;
21struct ImBuf;
22struct ImagePool;
23struct Main;
24struct MTex;
25struct Paint;
26struct Scene;
28
29// enum eCurveMappingPreset;
30
31/* Globals for brush execution. */
32
35
36/* Data-block functions. */
37
42Brush *BKE_brush_add(Main *bmain, const char *name, eObjectMode ob_mode);
46bool BKE_brush_delete(Main *bmain, Brush *brush);
51
53
66
68
69void BKE_brush_jitter_pos(const Scene &scene,
70 const Brush &brush,
71 const float pos[2],
72 float jitterpos[2]);
74
75/* Brush curve. */
76
81
86 const CurveMapping *cumap,
87 blender::Span<float> distances,
88 float brush_radius,
93float BKE_brush_curve_strength_clamped(const Brush *br, float p, float len);
98 const CurveMapping *cumap,
99 float distance,
100 float brush_radius);
101float BKE_brush_curve_strength(const Brush *br, float p, float len);
102
103/* Sampling. */
104
112float BKE_brush_sample_tex_3d(const Scene *scene,
113 const Brush *br,
114 const MTex *mtex,
115 const float point[3],
116 float rgba[4],
117 int thread,
118 ImagePool *pool);
120 const Scene *scene, Brush *br, const float point[2], int thread, ImagePool *pool);
121
128const MTex *BKE_brush_mask_texture_get(const Brush *brush, const eObjectMode object_mode);
129
136const MTex *BKE_brush_color_texture_get(const Brush *brush, const eObjectMode object_mode);
137
141ImBuf *BKE_brush_gen_radial_control_imbuf(Brush *br, bool secondary, bool display_gradient);
142
143/* Unified strength size and color. */
144
145const float *BKE_brush_color_get(const Scene *scene, const Paint *paint, const Brush *brush);
146const float *BKE_brush_secondary_color_get(const Scene *scene,
147 const Paint *paint,
148 const Brush *brush);
149void BKE_brush_color_set(Scene *scene, const Paint *paint, Brush *brush, const float color[3]);
150
151int BKE_brush_size_get(const Scene *scene, const Brush *brush);
152void BKE_brush_size_set(Scene *scene, Brush *brush, int size);
153
154float BKE_brush_unprojected_radius_get(const Scene *scene, const Brush *brush);
156
157float BKE_brush_alpha_get(const Scene *scene, const Brush *brush);
158void BKE_brush_alpha_set(Scene *scene, Brush *brush, float alpha);
159float BKE_brush_weight_get(const Scene *scene, const Brush *brush);
160void BKE_brush_weight_set(const Scene *scene, Brush *brush, float value);
161
162int BKE_brush_input_samples_get(const Scene *scene, const Brush *brush);
163void BKE_brush_input_samples_set(const Scene *scene, Brush *brush, int value);
164
165bool BKE_brush_use_locked_size(const Scene *scene, const Brush *brush);
166bool BKE_brush_use_alpha_pressure(const Brush *brush);
167bool BKE_brush_use_size_pressure(const Brush *brush);
168
170
175 int new_brush_size,
176 int old_brush_size);
177
181void BKE_brush_scale_size(int *r_brush_size,
182 float new_unprojected_radius,
183 float old_unprojected_radius);
184
185/* Returns true if a brush requires a cube
186 * (often presented to the user as a square) tip inside a specific paint mode.
187 */
188bool BKE_brush_has_cube_tip(const Brush *brush, PaintMode paint_mode);
189
190/* debugging only */
void BKE_brush_jitter_pos(const Scene &scene, const Brush &brush, const float pos[2], float jitterpos[2])
Definition brush.cc:1224
void BKE_brush_weight_set(const Scene *scene, Brush *brush, float value)
Definition brush.cc:1167
const MTex * BKE_brush_mask_texture_get(const Brush *brush, const eObjectMode object_mode)
Definition brush.cc:762
bool BKE_brush_use_alpha_pressure(const Brush *brush)
Definition brush.cc:1096
void BKE_brush_randomize_texture_coords(UnifiedPaintSettings *ups, bool mask)
Definition brush.cc:1251
float BKE_brush_weight_get(const Scene *scene, const Brush *brush)
Definition brush.cc:1160
Brush * BKE_brush_add(Main *bmain, const char *name, eObjectMode ob_mode)
Definition brush.cc:542
float BKE_brush_unprojected_radius_get(const Scene *scene, const Brush *brush)
Definition brush.cc:1133
int BKE_brush_size_get(const Scene *scene, const Brush *brush)
Definition brush.cc:1075
float BKE_brush_curve_strength(eBrushCurvePreset preset, const CurveMapping *cumap, float distance, float brush_radius)
Definition brush.cc:1388
void BKE_brush_curve_preset(Brush *b, enum eCurveMappingPreset preset)
Definition brush.cc:744
const MTex * BKE_brush_color_texture_get(const Brush *brush, const eObjectMode object_mode)
Definition brush.cc:770
void BKE_brush_unprojected_radius_set(Scene *scene, Brush *brush, float unprojected_radius)
Definition brush.cc:1120
void BKE_brush_size_set(Scene *scene, Brush *brush, int size)
Definition brush.cc:1059
float BKE_brush_sample_tex_3d(const Scene *scene, const Brush *br, const MTex *mtex, const float point[3], float rgba[4], int thread, ImagePool *pool)
Definition brush.cc:778
const float * BKE_brush_secondary_color_get(const Scene *scene, const Paint *paint, const Brush *brush)
Definition brush.cc:1037
void BKE_brush_alpha_set(Scene *scene, Brush *brush, float alpha)
Definition brush.cc:1140
bool BKE_brush_use_size_pressure(const Brush *brush)
Definition brush.cc:1091
void BKE_brush_input_samples_set(const Scene *scene, Brush *brush, int value)
Definition brush.cc:1187
bool BKE_brush_has_cube_tip(const Brush *brush, PaintMode paint_mode)
Definition brush.cc:1514
void BKE_brush_init_curves_sculpt_settings(Brush *brush)
Definition brush.cc:605
void BKE_brush_system_init()
Definition brush.cc:470
ImBuf * BKE_brush_gen_radial_control_imbuf(Brush *br, bool secondary, bool display_gradient)
Definition brush.cc:1484
void BKE_brush_color_set(Scene *scene, const Paint *paint, Brush *brush, const float color[3])
Definition brush.cc:1047
bool BKE_brush_sculpt_has_secondary_color(const Brush *brush)
Definition brush.cc:1101
void BKE_brush_init_gpencil_settings(Brush *brush)
Definition brush.cc:563
void BKE_brush_scale_size(int *r_brush_size, float new_unprojected_radius, float old_unprojected_radius)
Definition brush.cc:1212
float BKE_brush_alpha_get(const Scene *scene, const Brush *brush)
Definition brush.cc:1153
const float * BKE_brush_color_get(const Scene *scene, const Paint *paint, const Brush *brush)
Definition brush.cc:1029
void BKE_brush_debug_print_state(Brush *br)
Definition brush.cc:638
bool BKE_brush_delete(Main *bmain, Brush *brush)
Definition brush.cc:589
bool BKE_brush_use_locked_size(const Scene *scene, const Brush *brush)
Definition brush.cc:1083
void BKE_brush_scale_unprojected_radius(float *unprojected_radius, int new_brush_size, int old_brush_size)
Definition brush.cc:1200
void BKE_brush_tag_unsaved_changes(Brush *brush)
Definition brush.cc:621
float BKE_brush_curve_strength_clamped(const Brush *br, float p, float len)
Definition brush.cc:1444
float BKE_brush_sample_masktex(const Scene *scene, Brush *br, const float point[2], int thread, ImagePool *pool)
Definition brush.cc:901
void BKE_brush_calc_curve_factors(eBrushCurvePreset preset, const CurveMapping *cumap, blender::Span< float > distances, float brush_radius, blender::MutableSpan< float > factors)
Definition brush.cc:1265
void BKE_brush_system_exit()
Definition brush.cc:476
int BKE_brush_input_samples_get(const Scene *scene, const Brush *brush)
Definition brush.cc:1180
Brush * BKE_brush_first_search(Main *bmain, eObjectMode ob_mode)
Definition brush.cc:628
PaintMode
Definition BKE_paint.hh:99
eBrushCurvePreset
eCurveMappingPreset
eObjectMode
local_group_size(16, 16) .push_constant(Type b
int len
signed char int8_t
Definition stdint.h:75