Blender V5.0
paint_intern.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2008 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "BLI_index_mask_fwd.hh"
13#include "BLI_span.hh"
14
15#include "DNA_object_enums.h"
16#include "DNA_scene_enums.h"
17#include "DNA_vec_types.h"
19
20#include <optional>
21
22enum class PaintMode : int8_t;
23
24struct ARegion;
25struct bContext;
26struct Brush;
27struct Depsgraph;
28struct Image;
29struct ImagePool;
30struct ImageUser;
31struct ImBuf;
32struct Main;
33struct MTex;
34struct Object;
35struct Paint;
36struct PointerRNA;
37struct RegionView3D;
38struct ReportList;
39struct Scene;
40struct SculptSession;
41struct SpaceImage;
42struct ToolSettings;
43struct VertProjHandle;
44struct ViewContext;
45struct VPaint;
46struct wmEvent;
47struct wmKeyConfig;
48struct wmKeyMap;
49struct wmOperator;
50struct wmOperatorType;
51namespace blender {
52
53namespace bke::pbvh {
54class Node;
55}
56
57namespace ed::sculpt_paint {
58struct PaintStroke;
59struct StrokeCache;
60} // namespace ed::sculpt_paint
61
62namespace ocio {
63class Display;
64}
65} // namespace blender
67
68/* paint_stroke.cc */
69
71
77using StrokeGetLocation = bool (*)(bContext *C,
78 float location[3],
79 const float mouse[2],
80 bool force_original);
86using StrokeTestStart = bool (*)(bContext *C, wmOperator *op, const float mouse[2]);
87
91using StrokeUpdateStep = void (*)(bContext *C,
92 wmOperator *op,
93 PaintStroke *stroke,
94 PointerRNA *itemptr);
95
99using StrokeRedraw = void (*)(const bContext *C, PaintStroke *stroke, bool final);
100
104using StrokeDone = void (*)(const bContext *C, PaintStroke *stroke);
105
107 wmOperator *op,
108 StrokeGetLocation get_location,
109 StrokeTestStart test_start,
110 StrokeUpdateStep update_step,
111 StrokeRedraw redraw,
112 StrokeDone done,
113 int event_type);
115
119bool paint_space_stroke_enabled(const Brush &br, PaintMode mode);
123bool paint_supports_dynamic_size(const Brush &br, PaintMode mode);
128bool paint_supports_smooth_stroke(PaintStroke *stroke, const Brush &br, PaintMode mode);
130
150 wmOperator *op,
151 const wmEvent *event,
152 PaintStroke **stroke_p);
160
162 public:
163 virtual ~PaintModeData() = default;
164};
165void paint_stroke_set_mode_data(PaintStroke *stroke, std::unique_ptr<PaintModeData> mode_data);
166
168void paint_stroke_jitter_pos(const PaintStroke &stroke,
169 PaintMode mode,
170 const Brush &brush,
171 float pressure,
172 const float mval[2],
173 float r_mouse_out[2]);
174
181 const Brush &brush,
182 PaintMode mode,
183 PaintStroke *stroke,
184 const float mouse_init[2],
185 float mouse[2],
186 float pressure,
187 float r_location[3],
188 bool *r_location_is_set);
189
197
198} // namespace blender::ed::sculpt_paint
199
204
205/* `paint_vertex.cc` */
206
217
218using VPaintTransform_Callback = void (*)(const float col[3],
219 const void *user_data,
220 float r_col[3]);
221
225
226enum {
229};
231
234
238unsigned int ED_vpaint_blend_tool(int tool, uint col, uint paintcol, int alpha_i);
239
240/* `paint_vertex_weight_utils.cc` */
241
250float ED_wpaint_blend_tool(int tool, float weight, float paintval, float alpha);
251/* Utility for tools to ensure vertex groups exist before they begin. */
254};
258};
259
263 ReportList *reports,
265 WPaintVGroupIndex *vgroup_index);
267int ED_wpaint_mirror_vgroup_ensure(Object *ob, int vgroup_active);
268
269/* `paint_vertex_color_ops.cc` */
270
278
279/* `paint_vertex_weight_ops.cc` */
280
284
285/* `paint_vertex_proj.cc` */
286
288 Scene &scene,
289 Object &ob,
290 blender::Span<blender::float3> &r_vert_positions,
291 blender::Span<blender::float3> &r_vert_normals);
293 VertProjHandle *vp_handle,
294 /* runtime vars */
295 ARegion *region,
296 const float mval_fl[2]);
298
299/* `paint_image.cc` */
300
304
308 SpaceImage *sima, Image *image, ImBuf *ibuf, ImageUser *iuser, short texpaint);
312 ImBuf *ibuf, int x, int y, int w, int h, int *tx, int *ty, int *tw, int *th);
313bool get_imapaint_zoom(bContext *C, float *zoomx, float *zoomy);
314void *paint_2d_new_stroke(bContext *, wmOperator *, int mode);
315void paint_2d_redraw(const bContext *C, void *ps, bool final);
316void paint_2d_stroke_done(void *ps);
317void paint_2d_stroke(void *ps,
318 const float prev_mval[2],
319 const float mval[2],
320 bool eraser,
321 float pressure,
322 float distance,
323 float base_size);
328 const float color[3],
329 Brush *br,
330 const float mouse_init[2],
331 const float mouse_final[2],
332 void *ps);
334 const bContext *C, Brush *br, const float mouse_init[2], const float mouse_final[2], void *ps);
335void *paint_proj_new_stroke(bContext *C, Object *ob, const float mouse[2], int mode);
336void paint_proj_stroke(const bContext *C,
337 void *ps_handle_p,
338 const float prev_pos[2],
339 const float pos[2],
340 bool eraser,
341 float pressure,
342 float distance,
343 float size);
344void paint_proj_redraw(const bContext *C, void *ps_handle_p, bool final);
345void paint_proj_stroke_done(void *ps_handle_p);
346
347void paint_brush_color_get(const Paint *paint,
348 Brush *br,
349 std::optional<blender::float3> &initial_hsv_jitter,
350 bool invert,
351 float distance,
352 float pressure,
353 float r_color[3]);
354bool paint_use_opacity_masking(const Paint *paint, const Brush *brush);
355void paint_brush_init_tex(Brush *brush);
356void paint_brush_exit_tex(Brush *brush);
357
367
368/* paint_image_2d_curve_mask.cc */
369
400
402void paint_curve_mask_cache_update(CurveMaskCache *curve_mask_cache,
403 const Brush *brush,
404 int diameter,
405 float radius,
406 const float cursor_position[2]);
407
408/* `sculpt_uv.cc` */
409
413
414/* paint_utils.cc */
415
422 const float bb_min[3],
423 const float bb_max[3],
424 const ARegion &region,
425 const RegionView3D &rv3d,
426 const Object &ob);
427
429 const blender::float3 &center,
430 float pixel_radius);
431
435bool paint_get_tex_pixel(const MTex *mtex,
436 float u,
437 float v,
438 ImagePool *pool,
439 int thread,
440 float *r_intensity,
441 float r_rgba[4]);
442
444
447
455
457
465
469
471
473
482inline bool is_symmetry_iteration_valid(const char i, const char symm)
483{
484 return i == 0 || (symm & i && (symm != 5 || i != 3) && (symm != 6 || !ELEM(i, 3, 5)));
485}
486
487inline float3 symmetry_flip(const float3 &src, const ePaintSymmetryFlags symm)
488{
489 float3 dst;
490 if (symm & PAINT_SYMM_X) {
491 dst.x = -src.x;
492 }
493 else {
494 dst.x = src.x;
495 }
496 if (symm & PAINT_SYMM_Y) {
497 dst.y = -src.y;
498 }
499 else {
500 dst.y = src.y;
501 }
502 if (symm & PAINT_SYMM_Z) {
503 dst.z = -src.z;
504 }
505 else {
506 dst.z = src.z;
507 }
508 return dst;
509}
510
511} // namespace blender::ed::sculpt_paint
512
513/* stroke operator */
520
521/* `paint_curve.cc` */
522
530
531/* image painting blur kernel */
533 float *wdata; /* actual kernel */
534 int side; /* kernel side */
535 int side_squared; /* data side */
536 int pixel_len; /* pixels around center that kernel is wide */
537};
538
543BlurKernel *paint_new_blur_kernel(Brush *br, bool proj);
545
547void paint_init_pivot(Object *ob, Scene *scene, Paint *paint);
548
549/* paint curve defines */
550#define PAINT_CURVE_NUM_SEGMENTS 40
551
555 /* what angle to mask at */
556 float angle;
557 /* cos(angle), faster to compare */
561 /* difference between angle and angle_inner, for easy access */
563};
564
565void view_angle_limits_init(NormalAnglePrecalc *a, float angle, bool do_mask_normal);
566float view_angle_limits_apply_falloff(const NormalAnglePrecalc *a, float angle_cos, float *mask_p);
567bool test_brush_angle_falloff(const Brush &brush,
568 const NormalAnglePrecalc &normal_angle_precalc,
569 float angle_cos,
570 float *brush_strength);
571bool use_normal(const VPaint &vp);
572
573bool brush_use_accumulate_ex(const Brush &brush, eObjectMode ob_mode);
574bool brush_use_accumulate(const VPaint &vp);
575
577 const Paint &paint,
578 const Brush &brush,
579 float *r_brush_size_pressure,
580 float *r_brush_alpha_value,
581 float *r_brush_alpha_pressure);
582
583void init_stroke(Depsgraph &depsgraph, Object &ob);
584void init_session_data(const ToolSettings &ts, Object &ob);
586void init_session(Main &bmain,
587 Depsgraph &depsgraph,
588 Scene &scene,
589 Paint &paint,
590 Object &ob,
591 eObjectMode object_mode);
592
594 const Object &ob,
595 const VPaint &wp,
596 const Brush &brush,
597 IndexMaskMemory &memory);
598
600 Main &bmain, Depsgraph &depsgraph, Scene &scene, Object &ob, eObjectMode mode_flag);
601void mode_exit_generic(Object &ob, eObjectMode mode_flag);
603
606
611 bContext *C, VPaint &vp, SculptSession &ss, wmOperator *op, const float mval[2]);
612void last_stroke_update(const float location[3], Paint &paint);
613} // namespace blender::ed::sculpt_paint::vwpaint
PaintMode
unsigned int uint
unsigned short ushort
#define ELEM(...)
eObjectMode
ePaintSymmetryFlags
@ PAINT_SYMM_Y
@ PAINT_SYMM_X
@ PAINT_SYMM_Z
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
Definition IK_Math.h:117
#define C
Definition RandGen.cpp:29
blender::ocio::Display ColorManagedDisplay
ATTR_WARN_UNUSED_RESULT const BMVert * v
BPy_StructRNA * depsgraph
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
Definition btQuadWord.h:119
uint pos
uint col
float distance(VecOp< float, D >, VecOp< float, D >) RET
CCL_NAMESPACE_BEGIN ccl_device float invert(const float color, const float factor)
Definition invert.h:11
float view_angle_limits_apply_falloff(const NormalAnglePrecalc *a, float angle_cos, float *mask_p)
bool brush_use_accumulate_ex(const Brush &brush, eObjectMode ob_mode)
void view_angle_limits_init(NormalAnglePrecalc *a, float angle, bool do_mask_normal)
bool use_normal(const VPaint &vp)
void smooth_brush_toggle_on(const bContext *C, Paint *paint, StrokeCache *cache)
void mode_exit_generic(Object &ob, eObjectMode mode_flag)
bool test_brush_angle_falloff(const Brush &brush, const NormalAnglePrecalc &normal_angle_precalc, float angle_cos, float *brush_strength)
void init_session_data(const ToolSettings &ts, Object &ob)
void mode_enter_generic(Main &bmain, Depsgraph &depsgraph, Scene &scene, Object &ob, eObjectMode mode_flag)
void update_cache_invariants(bContext *C, VPaint &vp, SculptSession &ss, wmOperator *op, const float mval[2])
void get_brush_alpha_data(const SculptSession &ss, const Paint &paint, const Brush &brush, float *r_brush_size_pressure, float *r_brush_alpha_value, float *r_brush_alpha_pressure)
void init_session(Main &bmain, Depsgraph &depsgraph, Scene &scene, Paint &paint, Object &ob, eObjectMode object_mode)
bool brush_use_accumulate(const VPaint &vp)
void init_stroke(Depsgraph &depsgraph, Object &ob)
void update_cache_variants(bContext *C, VPaint &vp, Object &ob, PointerRNA *ptr)
void last_stroke_update(const float location[3], Paint &paint)
IndexMask pbvh_gather_generic(const Depsgraph &depsgraph, const Object &ob, const VPaint &wp, const Brush &brush, IndexMaskMemory &memory)
void smooth_brush_toggle_off(Paint *paint, StrokeCache *cache)
void paint_stroke_jitter_pos(const PaintStroke &stroke, PaintMode mode, const Brush &brush, float pressure, const float mval[2], float r_mouse_out[2])
void BRUSH_OT_asset_save(wmOperatorType *ot)
bool paint_supports_texture(PaintMode mode)
void(*)(const bContext *C, PaintStroke *stroke, bool final) StrokeRedraw
wmOperatorStatus paint_stroke_exec(bContext *C, wmOperator *op, PaintStroke *stroke)
bool paint_stroke_started(PaintStroke *stroke)
void BRUSH_OT_asset_delete(wmOperatorType *ot)
void BRUSH_OT_asset_edit_metadata(wmOperatorType *ot)
float3 symmetry_flip(const float3 &src, const ePaintSymmetryFlags symm)
void paint_stroke_cancel(bContext *C, wmOperator *op, PaintStroke *stroke)
bool paint_supports_dynamic_tex_coords(const Brush &br, PaintMode mode)
bool paint_supports_dynamic_size(const Brush &br, PaintMode mode)
void BRUSH_OT_asset_load_preview(wmOperatorType *ot)
bool paint_stroke_flipped(PaintStroke *stroke)
wmOperatorStatus paint_stroke_modal(bContext *C, wmOperator *op, const wmEvent *event, PaintStroke **stroke_p)
bool(*)(bContext *C, float location[3], const float mouse[2], bool force_original) StrokeGetLocation
ViewContext * paint_stroke_view_context(PaintStroke *stroke)
bool paint_brush_cursor_poll(bContext *C)
void BRUSH_OT_asset_revert(wmOperatorType *ot)
wmKeyMap * paint_stroke_modal_keymap(wmKeyConfig *keyconf)
bool(*)(bContext *C, wmOperator *op, const float mouse[2]) StrokeTestStart
bool paint_brush_update(bContext *C, const Brush &brush, PaintMode mode, PaintStroke *stroke, const float mouse_init[2], float mouse[2], float pressure, float r_location[3], bool *r_location_is_set)
void * paint_stroke_mode_data(PaintStroke *stroke)
void(*)(bContext *C, wmOperator *op, PaintStroke *stroke, PointerRNA *itemptr) StrokeUpdateStep
float paint_stroke_distance_get(PaintStroke *stroke)
bool paint_space_stroke_enabled(const Brush &br, PaintMode mode)
void BRUSH_OT_asset_save_as(wmOperatorType *ot)
void paint_stroke_free(bContext *C, wmOperator *op, PaintStroke *stroke)
PaintStroke * paint_stroke_new(bContext *C, wmOperator *op, StrokeGetLocation get_location, StrokeTestStart test_start, StrokeUpdateStep update_step, StrokeRedraw redraw, StrokeDone done, int event_type)
void BRUSH_OT_asset_activate(wmOperatorType *ot)
void(*)(const bContext *C, PaintStroke *stroke) StrokeDone
bool paint_stroke_inverted(PaintStroke *stroke)
bool paint_brush_tool_poll(bContext *C)
void paint_stroke_set_mode_data(PaintStroke *stroke, std::unique_ptr< PaintModeData > mode_data)
bool paint_supports_smooth_stroke(PaintStroke *stroke, const Brush &br, PaintMode mode)
bool is_symmetry_iteration_valid(const char i, const char symm)
VecBase< float, 3 > float3
float ED_wpaint_blend_tool(int tool, float weight, float paintval, float alpha)
void(*)(const float col[3], const void *user_data, float r_col[3]) VPaintTransform_Callback
void paint_cursor_delete_textures()
void SCULPT_OT_uv_sculpt_relax(wmOperatorType *ot)
Definition sculpt_uv.cc:995
void PAINT_OT_weight_set(wmOperatorType *ot)
void PAINT_OT_vertex_color_set(wmOperatorType *ot)
void PAINT_OT_face_select_more(wmOperatorType *ot)
void PAINT_OT_vert_select_less(wmOperatorType *ot)
bool paint_curve_poll(bContext *C)
void PAINT_OT_vertex_color_smooth(wmOperatorType *ot)
int ED_wpaint_mirror_vgroup_ensure(Object *ob, int vgroup_active)
bool paint_convert_bb_to_rect(rcti *rect, const float bb_min[3], const float bb_max[3], const ARegion &region, const RegionView3D &rv3d, const Object &ob)
void PAINT_OT_weight_paint(wmOperatorType *ot)
void PAINT_OT_face_select_hide(wmOperatorType *ot)
void PAINT_OT_face_select_loop(wmOperatorType *ot)
void PAINT_OT_vertex_color_hsv(wmOperatorType *ot)
void PAINT_OT_vert_select_linked(wmOperatorType *ot)
unsigned int ED_vpaint_blend_tool(int tool, uint col, uint paintcol, int alpha_i)
bool vert_paint_poll(bContext *C)
void PAINT_OT_add_texture_paint_slot(wmOperatorType *ot)
void PAINT_OT_vertex_paint(wmOperatorType *ot)
void PAINT_OT_face_select_linked_pick(wmOperatorType *ot)
void imapaint_image_update(SpaceImage *sima, Image *image, ImBuf *ibuf, ImageUser *iuser, short texpaint)
void paint_brush_init_tex(Brush *brush)
VertProjHandle * ED_vpaint_proj_handle_create(Depsgraph &depsgraph, Scene &scene, Object &ob, blender::Span< blender::float3 > &r_vert_positions, blender::Span< blender::float3 > &r_vert_normals)
bool weight_paint_mode_poll(bContext *C)
void PAINTCURVE_OT_new(wmOperatorType *ot)
void paint_curve_mask_cache_update(CurveMaskCache *curve_mask_cache, const Brush *brush, int diameter, float radius, const float cursor_position[2])
void PAINT_OT_vert_select_linked_pick(wmOperatorType *ot)
bool ED_wpaint_ensure_data(bContext *C, ReportList *reports, eWPaintFlag flag, WPaintVGroupIndex *vgroup_index)
bool weight_paint_poll(bContext *C)
void PAINT_OT_vert_select_ungrouped(wmOperatorType *ot)
void * paint_proj_new_stroke(bContext *C, Object *ob, const float mouse[2], int mode)
void * paint_2d_new_stroke(bContext *, wmOperator *, int mode)
bool weight_paint_mode_region_view3d_poll(bContext *C)
bool facemask_paint_poll(bContext *C)
BrushStrokeMode
@ BRUSH_STROKE_SMOOTH
@ BRUSH_STROKE_NORMAL
@ BRUSH_STROKE_INVERT
@ BRUSH_STROKE_ERASE
bool image_texture_paint_poll(bContext *C)
void BRUSH_OT_sculpt_curves_falloff_preset(wmOperatorType *ot)
void paint_2d_bucket_fill(const bContext *C, const float color[3], Brush *br, const float mouse_init[2], const float mouse_final[2], void *ps)
void PAINTCURVE_OT_add_point(wmOperatorType *ot)
void PAINT_OT_sample_color(wmOperatorType *ot)
void BRUSH_OT_curve_preset(wmOperatorType *ot)
@ WPAINT_GRADIENT_TYPE_RADIAL
@ WPAINT_GRADIENT_TYPE_LINEAR
void paint_brush_color_get(const Paint *paint, Brush *br, std::optional< blender::float3 > &initial_hsv_jitter, bool invert, float distance, float pressure, float r_color[3])
void PAINTCURVE_OT_delete_point(wmOperatorType *ot)
void paint_2d_gradient_fill(const bContext *C, Brush *br, const float mouse_init[2], const float mouse_final[2], void *ps)
bool image_paint_poll_ignore_tool(bContext *C)
void PAINT_OT_texture_paint_toggle(wmOperatorType *ot)
bool mask_paint_poll(bContext *C)
float paint_calc_object_space_radius(const ViewContext &vc, const blender::float3 &center, float pixel_radius)
void paint_2d_stroke_done(void *ps)
bool vertex_paint_poll_ignore_tool(bContext *C)
void paint_curve_mask_cache_free_data(CurveMaskCache *curve_mask_cache)
BlurKernel * paint_new_blur_kernel(Brush *br, bool proj)
void paint_proj_stroke(const bContext *C, void *ps_handle_p, const float prev_pos[2], const float pos[2], bool eraser, float pressure, float distance, float size)
void PAINT_OT_add_simple_uvs(wmOperatorType *ot)
eWPaintFlag
@ WPAINT_ENSURE_MIRROR
void PAINT_OT_face_select_less(wmOperatorType *ot)
void PAINT_OT_weight_sample(wmOperatorType *ot)
void PAINT_OT_vert_select_all(wmOperatorType *ot)
void PAINT_OT_vertex_color_levels(wmOperatorType *ot)
void PAINTCURVE_OT_draw(wmOperatorType *ot)
void paint_delete_blur_kernel(BlurKernel *)
void paint_proj_redraw(const bContext *C, void *ps_handle_p, bool final)
void PAINT_OT_face_select_all(wmOperatorType *ot)
void PAINT_OT_vertex_color_from_weight(wmOperatorType *ot)
void PAINT_OT_face_select_linked(wmOperatorType *ot)
void PAINT_OT_brush_colors_flip(wmOperatorType *ot)
bool vertex_paint_mode_poll(bContext *C)
void ED_vpaint_proj_handle_update(Depsgraph *depsgraph, VertProjHandle *vp_handle, ARegion *region, const float mval_fl[2])
bool weight_paint_poll_ignore_tool(bContext *C)
void ED_vpaint_proj_handle_free(VertProjHandle *vp_handle)
void PAINT_OT_weight_from_bones(wmOperatorType *ot)
void PAINT_OT_vertex_color_brightness_contrast(wmOperatorType *ot)
bool get_imapaint_zoom(bContext *C, float *zoomx, float *zoomy)
void PAINT_OT_weight_paint_toggle(wmOperatorType *ot)
void PAINT_OT_weight_gradient(wmOperatorType *ot)
void PAINT_OT_project_image(wmOperatorType *ot)
void paint_2d_stroke(void *ps, const float prev_mval[2], const float mval[2], bool eraser, float pressure, float distance, float base_size)
void SCULPT_OT_uv_sculpt_pinch(wmOperatorType *ot)
void PAINT_OT_grab_clone(wmOperatorType *ot)
void paint_proj_stroke_done(void *ps_handle_p)
void paint_brush_exit_tex(Brush *brush)
bool paint_use_opacity_masking(const Paint *paint, const Brush *brush)
void PAINT_OT_vertex_paint_toggle(wmOperatorType *ot)
void PAINTCURVE_OT_cursor(wmOperatorType *ot)
void PAINT_OT_vertex_color_invert(wmOperatorType *ot)
void imapaint_region_tiles(ImBuf *ibuf, int x, int y, int w, int h, int *tx, int *ty, int *tw, int *th)
void PAINT_OT_vert_select_hide(wmOperatorType *ot)
void PAINTCURVE_OT_slide(wmOperatorType *ot)
void paint_init_pivot(Object *ob, Scene *scene, Paint *paint)
void PAINT_OT_weight_sample_group(wmOperatorType *ot)
void PAINT_OT_vert_select_more(wmOperatorType *ot)
void paint_2d_redraw(const bContext *C, void *ps, bool final)
bool paint_get_tex_pixel(const MTex *mtex, float u, float v, ImagePool *pool, int thread, float *r_intensity, float r_rgba[4])
void SCULPT_OT_uv_sculpt_grab(wmOperatorType *ot)
Definition sculpt_uv.cc:980
void PAINT_OT_image_paint(wmOperatorType *ot)
void PAINT_OT_face_vert_reveal(wmOperatorType *ot)
void paint_stroke_operator_properties(wmOperatorType *ot)
void set_imapaintpartial(ImagePaintPartialRedraw *ippr)
void PAINTCURVE_OT_select(wmOperatorType *ot)
bool vertex_paint_poll(bContext *C)
void PAINT_OT_image_from_view(wmOperatorType *ot)
ImagePaintPartialRedraw * get_imapaintpartial()
static float brush_strength(const Sculpt &sd, const blender::ed::sculpt_paint::StrokeCache &cache, const float feather, const PaintModeSettings &)
Definition sculpt.cc:2175
float * wdata
Caching structure for curve mask.
ushort * curve_mask
Curve mask that can be passed as curve_mask parameter when.
float * sampled_curve
sampled version of the brush curve-mapping.
int last_curve_timestamp
Last CurveMapping.changed_timestamp being read.
size_t curve_mask_size
Size in bytes of the curve_mask field.
i
Definition text_draw.cc:230
PointerRNA * ptr
Definition wm_files.cc:4238
wmOperatorType * ot
Definition wm_files.cc:4237
uint8_t flag
Definition wm_window.cc:145