Blender V4.5
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
12
13#include <optional>
14
15#include "BLI_span.hh"
16
17#include "DNA_brush_enums.h"
18#include "DNA_color_types.h"
19#include "DNA_object_enums.h"
20#include "DNA_userdef_enums.h"
21
22enum class PaintMode : int8_t;
23struct Brush;
24struct ImBuf;
25struct ImagePool;
26struct Main;
27struct MTex;
28struct Paint;
29struct Scene;
31
32/* Globals for brush execution. */
33
36
37/* Data-block functions. */
38
43Brush *BKE_brush_add(Main *bmain, const char *name, eObjectMode ob_mode);
47bool BKE_brush_delete(Main *bmain, Brush *brush);
48
68 Brush *brush,
69 eDupli_ID_Flags dupflag,
70 /*eLibIDDuplicateFlags*/ uint duplicate_options);
75
77
90
92
93void BKE_brush_jitter_pos(const Scene &scene,
94 const Brush &brush,
95 const float pos[2],
96 float jitterpos[2]);
98
99/* Brush curve. */
100
105
110 const CurveMapping *cumap,
111 blender::Span<float> distances,
112 float brush_radius,
117float BKE_brush_curve_strength_clamped(const Brush *br, float p, float len);
122 const CurveMapping *cumap,
123 float distance,
124 float brush_radius);
125float BKE_brush_curve_strength(const Brush *br, float p, float len);
126
127/* Sampling. */
128
136float BKE_brush_sample_tex_3d(const Scene *scene,
137 const Brush *br,
138 const MTex *mtex,
139 const float point[3],
140 float rgba[4],
141 int thread,
142 ImagePool *pool);
144 const Scene *scene, Brush *br, const float point[2], int thread, ImagePool *pool);
145
152const MTex *BKE_brush_mask_texture_get(const Brush *brush, eObjectMode object_mode);
153
160const MTex *BKE_brush_color_texture_get(const Brush *brush, eObjectMode object_mode);
161
165ImBuf *BKE_brush_gen_radial_control_imbuf(Brush *br, bool secondary, bool display_gradient);
166
167/* Unified strength size and color. */
168
181
182const float *BKE_brush_color_get(const Scene *scene, const Paint *paint, const Brush *brush);
183const std::optional<BrushColorJitterSettings> BKE_brush_color_jitter_get_settings(
184 const Scene *scene, const Paint *paint, const Brush *brush);
185const float *BKE_brush_secondary_color_get(const Scene *scene,
186 const Paint *paint,
187 const Brush *brush);
188void BKE_brush_color_set(Scene *scene, const Paint *paint, Brush *brush, const float color[3]);
189
190int BKE_brush_size_get(const Scene *scene, const Brush *brush);
191void BKE_brush_size_set(Scene *scene, Brush *brush, int size);
192
193float BKE_brush_unprojected_radius_get(const Scene *scene, const Brush *brush);
194void BKE_brush_unprojected_radius_set(Scene *scene, Brush *brush, float unprojected_radius);
195
196float BKE_brush_alpha_get(const Scene *scene, const Brush *brush);
197void BKE_brush_alpha_set(Scene *scene, Brush *brush, float alpha);
198float BKE_brush_weight_get(const Scene *scene, const Brush *brush);
199void BKE_brush_weight_set(const Scene *scene, Brush *brush, float value);
200
201int BKE_brush_input_samples_get(const Scene *scene, const Brush *brush);
202void BKE_brush_input_samples_set(const Scene *scene, Brush *brush, int value);
203
204bool BKE_brush_use_locked_size(const Scene *scene, const Brush *brush);
205bool BKE_brush_use_alpha_pressure(const Brush *brush);
206bool BKE_brush_use_size_pressure(const Brush *brush);
207
211void BKE_brush_scale_unprojected_radius(float *unprojected_radius,
212 int new_brush_size,
213 int old_brush_size);
214
218void BKE_brush_scale_size(int *r_brush_size,
219 float new_unprojected_radius,
220 float old_unprojected_radius);
221
222/* Returns true if a brush requires a cube
223 * (often presented to the user as a square) tip inside a specific paint mode.
224 */
225bool BKE_brush_has_cube_tip(const Brush *brush, PaintMode paint_mode);
226
227/* debugging only */
229
230/* -------------------------------------------------------------------- */
235
237bool supports_dyntopo(const Brush &brush);
238bool supports_accumulate(const Brush &brush);
240bool supports_auto_smooth(const Brush &brush);
241bool supports_height(const Brush &brush);
243bool supports_plane_depth(const Brush &brush);
244bool supports_jitter(const Brush &brush);
246bool supports_rake_factor(const Brush &brush);
247bool supports_persistence(const Brush &brush);
252bool supports_color(const Brush &brush);
258bool supports_gravity(const Brush &brush);
259bool supports_tilt(const Brush &brush);
260} // namespace blender::bke::brush
261
void BKE_brush_jitter_pos(const Scene &scene, const Brush &brush, const float pos[2], float jitterpos[2])
Definition brush.cc:1340
void BKE_brush_weight_set(const Scene *scene, Brush *brush, float value)
Definition brush.cc:1283
bool BKE_brush_use_alpha_pressure(const Brush *brush)
Definition brush.cc:1231
void BKE_brush_randomize_texture_coords(UnifiedPaintSettings *ups, bool mask)
Definition brush.cc:1367
float BKE_brush_weight_get(const Scene *scene, const Brush *brush)
Definition brush.cc:1276
Brush * BKE_brush_add(Main *bmain, const char *name, eObjectMode ob_mode)
Definition brush.cc:583
const MTex * BKE_brush_color_texture_get(const Brush *brush, eObjectMode object_mode)
Definition brush.cc:869
float BKE_brush_unprojected_radius_get(const Scene *scene, const Brush *brush)
Definition brush.cc:1249
int BKE_brush_size_get(const Scene *scene, const Brush *brush)
Definition brush.cc:1210
float BKE_brush_curve_strength(eBrushCurvePreset preset, const CurveMapping *cumap, float distance, float brush_radius)
Definition brush.cc:1510
void BKE_brush_unprojected_radius_set(Scene *scene, Brush *brush, float unprojected_radius)
Definition brush.cc:1236
void BKE_brush_size_set(Scene *scene, Brush *brush, int size)
Definition brush.cc:1194
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:877
const float * BKE_brush_secondary_color_get(const Scene *scene, const Paint *paint, const Brush *brush)
Definition brush.cc:1172
void BKE_brush_alpha_set(Scene *scene, Brush *brush, float alpha)
Definition brush.cc:1256
bool BKE_brush_use_size_pressure(const Brush *brush)
Definition brush.cc:1226
void BKE_brush_input_samples_set(const Scene *scene, Brush *brush, int value)
Definition brush.cc:1303
bool BKE_brush_has_cube_tip(const Brush *brush, PaintMode paint_mode)
Definition brush.cc:1636
void BKE_brush_init_curves_sculpt_settings(Brush *brush)
Definition brush.cc:704
void BKE_brush_system_init()
Definition brush.cc:512
ImBuf * BKE_brush_gen_radial_control_imbuf(Brush *br, bool secondary, bool display_gradient)
Definition brush.cc:1606
void BKE_brush_color_set(Scene *scene, const Paint *paint, Brush *brush, const float color[3])
Definition brush.cc:1182
void BKE_brush_curve_preset(Brush *b, eCurveMappingPreset preset)
Definition brush.cc:843
const std::optional< BrushColorJitterSettings > BKE_brush_color_jitter_get_settings(const Scene *scene, const Paint *paint, const Brush *brush)
Definition brush.cc:1137
Brush * BKE_brush_duplicate(Main *bmain, Brush *brush, eDupli_ID_Flags dupflag, uint duplicate_options)
Definition brush.cc:646
void BKE_brush_init_gpencil_settings(Brush *brush)
Definition brush.cc:604
void BKE_brush_scale_size(int *r_brush_size, float new_unprojected_radius, float old_unprojected_radius)
Definition brush.cc:1328
float BKE_brush_alpha_get(const Scene *scene, const Brush *brush)
Definition brush.cc:1269
const float * BKE_brush_color_get(const Scene *scene, const Paint *paint, const Brush *brush)
Definition brush.cc:1128
void BKE_brush_debug_print_state(Brush *br)
Definition brush.cc:737
bool BKE_brush_delete(Main *bmain, Brush *brush)
Definition brush.cc:630
bool BKE_brush_use_locked_size(const Scene *scene, const Brush *brush)
Definition brush.cc:1218
void BKE_brush_scale_unprojected_radius(float *unprojected_radius, int new_brush_size, int old_brush_size)
Definition brush.cc:1316
void BKE_brush_tag_unsaved_changes(Brush *brush)
Definition brush.cc:720
float BKE_brush_curve_strength_clamped(const Brush *br, float p, float len)
Definition brush.cc:1566
float BKE_brush_sample_masktex(const Scene *scene, Brush *br, const float point[2], int thread, ImagePool *pool)
Definition brush.cc:1000
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:1381
const MTex * BKE_brush_mask_texture_get(const Brush *brush, eObjectMode object_mode)
Definition brush.cc:861
void BKE_brush_system_exit()
Definition brush.cc:518
int BKE_brush_input_samples_get(const Scene *scene, const Brush *brush)
Definition brush.cc:1296
Brush * BKE_brush_first_search(Main *bmain, eObjectMode ob_mode)
Definition brush.cc:727
PaintMode
Definition BKE_paint.hh:93
unsigned int uint
eBrushCurvePreset
eCurveMappingPreset
eObjectMode
eDupli_ID_Flags
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
uint pos
float distance(VecOp< float, D >, VecOp< float, D >) RET
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
bool supports_sculpt_plane(const Brush &brush)
Definition brush.cc:1783
bool supports_secondary_cursor_color(const Brush &brush)
Definition brush.cc:1796
bool supports_auto_smooth(const Brush &brush)
Definition brush.cc:1715
bool supports_jitter(const Brush &brush)
Definition brush.cc:1736
bool supports_space_attenuation(const Brush &brush)
Definition brush.cc:1821
bool supports_persistence(const Brush &brush)
Definition brush.cc:1756
bool supports_tilt(const Brush &brush)
Definition brush.cc:1864
bool supports_inverted_direction(const Brush &brush)
Definition brush.cc:1834
bool supports_rake_factor(const Brush &brush)
Definition brush.cc:1752
bool supports_plane_depth(const Brush &brush)
Definition brush.cc:1732
bool supports_accumulate(const Brush &brush)
Definition brush.cc:1689
bool supports_gravity(const Brush &brush)
Definition brush.cc:1851
bool supports_smooth_stroke(const Brush &brush)
Definition brush.cc:1811
bool supports_plane_offset(const Brush &brush)
Definition brush.cc:1767
bool supports_pinch_factor(const Brush &brush)
Definition brush.cc:1760
bool supports_color(const Brush &brush)
Definition brush.cc:1792
bool supports_random_texture_angle(const Brush &brush)
Definition brush.cc:1775
bool supports_strength_pressure(const Brush &brush)
Definition brush.cc:1830
bool supports_dyntopo(const Brush &brush)
Definition brush.cc:1665
bool supports_height(const Brush &brush)
Definition brush.cc:1724
bool supports_topology_rake(const Brush &brush)
Definition brush.cc:1704
bool supports_plane_height(const Brush &brush)
Definition brush.cc:1728
bool supports_normal_weight(const Brush &brush)
Definition brush.cc:1745
CurveMapping * curve_sat_jitter
Definition BKE_brush.hh:178
CurveMapping * curve_val_jitter
Definition BKE_brush.hh:179
CurveMapping * curve_hue_jitter
Definition BKE_brush.hh:177
uint len