Blender V4.3
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
9#pragma once
10
11#include "BLI_array.hh"
12#include "BLI_compiler_compat.h"
13#include "BLI_function_ref.hh"
14#include "BLI_index_mask_fwd.hh"
16#include "BLI_set.hh"
17#include "BLI_span.hh"
18#include "BLI_vector.hh"
19
20#include "DNA_object_enums.h"
21#include "DNA_scene_enums.h"
22#include "DNA_vec_types.h"
23
24enum class PaintMode : int8_t;
25
26struct ARegion;
27struct bContext;
28struct Brush;
30struct Depsgraph;
31struct Image;
32struct ImagePool;
33struct ImageUser;
34struct ImBuf;
35struct Main;
36struct MTex;
37struct Object;
38struct Paint;
39struct PointerRNA;
40struct RegionView3D;
41struct ReportList;
42struct Scene;
43struct SculptSession;
44struct SpaceImage;
45struct ToolSettings;
46struct VertProjHandle;
47struct ViewContext;
48struct VPaint;
49struct wmEvent;
50struct wmKeyConfig;
51struct wmKeyMap;
52struct wmOperator;
53struct wmOperatorType;
54namespace blender {
55namespace bke {
56namespace pbvh {
57class Node;
58}
59} // namespace bke
60namespace ed::sculpt_paint {
61struct PaintStroke;
62struct StrokeCache;
63} // namespace ed::sculpt_paint
64} // namespace blender
65
66/* paint_stroke.cc */
67
69
70using StrokeGetLocation = bool (*)(bContext *C,
71 float location[3],
72 const float mouse[2],
73 bool force_original);
74using StrokeTestStart = bool (*)(bContext *C, wmOperator *op, const float mouse[2]);
75using StrokeUpdateStep = void (*)(bContext *C,
76 wmOperator *op,
77 PaintStroke *stroke,
78 PointerRNA *itemptr);
79using StrokeRedraw = void (*)(const bContext *C, PaintStroke *stroke, bool final);
80using StrokeDone = void (*)(const bContext *C, PaintStroke *stroke);
81
83 wmOperator *op,
84 StrokeGetLocation get_location,
85 StrokeTestStart test_start,
86 StrokeUpdateStep update_step,
87 StrokeRedraw redraw,
88 StrokeDone done,
89 int event_type);
91
95bool paint_space_stroke_enabled(const Brush &br, PaintMode mode);
99bool paint_supports_dynamic_size(const Brush &br, PaintMode mode);
104bool paint_supports_smooth_stroke(PaintStroke *stroke, const Brush &br, PaintMode mode);
106
111int paint_stroke_modal(bContext *C, wmOperator *op, const wmEvent *event, PaintStroke **stroke_p);
119
121 public:
122 virtual ~PaintModeData() = default;
123};
124void paint_stroke_set_mode_data(PaintStroke *stroke, std::unique_ptr<PaintModeData> mode_data);
125
128 const PaintStroke &stroke,
129 const PaintMode mode,
130 const Brush &brush,
131 const float pressure,
132 const float mval[2],
133 float r_mouse_out[2]);
134
141 const Brush &brush,
142 PaintMode mode,
143 PaintStroke *stroke,
144 const float mouse_init[2],
145 float mouse[2],
146 float pressure,
147 float r_location[3],
148 bool *r_location_is_set);
149
157
158} // namespace blender::ed::sculpt_paint
159
164
165/* `paint_vertex.cc` */
166
177
178using VPaintTransform_Callback = void (*)(const float col[3],
179 const void *user_data,
180 float r_col[3]);
181
185
186enum {
189};
191
194
198unsigned int ED_vpaint_blend_tool(int tool, uint col, uint paintcol, int alpha_i);
199
200/* `paint_vertex_weight_utils.cc` */
201
210float ED_wpaint_blend_tool(int tool, float weight, float paintval, float alpha);
211/* Utility for tools to ensure vertex groups exist before they begin. */
214};
218};
223 ReportList *reports,
224 enum eWPaintFlag flag,
225 WPaintVGroupIndex *vgroup_index);
227int ED_wpaint_mirror_vgroup_ensure(Object *ob, int vgroup_active);
228
229/* `paint_vertex_color_ops.cc` */
230
238
239/* `paint_vertex_weight_ops.cc` */
240
244
245/* `paint_vertex_proj.cc` */
246
248 Scene &scene,
249 Object &ob,
250 blender::Span<blender::float3> &r_vert_positions,
251 blender::Span<blender::float3> &r_vert_normals);
253 VertProjHandle *vp_handle,
254 /* runtime vars */
255 ARegion *region,
256 const float mval_fl[2]);
258
259/* `paint_image.cc` */
260
264
267 SpaceImage *sima, Image *image, ImBuf *ibuf, ImageUser *iuser, short texpaint);
271 ImBuf *ibuf, int x, int y, int w, int h, int *tx, int *ty, int *tw, int *th);
272bool get_imapaint_zoom(bContext *C, float *zoomx, float *zoomy);
273void *paint_2d_new_stroke(bContext *, wmOperator *, int mode);
274void paint_2d_redraw(const bContext *C, void *ps, bool final);
275void paint_2d_stroke_done(void *ps);
276void paint_2d_stroke(void *ps,
277 const float prev_mval[2],
278 const float mval[2],
279 bool eraser,
280 float pressure,
281 float distance,
282 float base_size);
286void paint_2d_bucket_fill(const bContext *C,
287 const float color[3],
288 Brush *br,
289 const float mouse_init[2],
290 const float mouse_final[2],
291 void *ps);
293 const bContext *C, Brush *br, const float mouse_init[2], const float mouse_final[2], void *ps);
294void *paint_proj_new_stroke(bContext *C, Object *ob, const float mouse[2], int mode);
295void paint_proj_stroke(const bContext *C,
296 void *ps_handle_p,
297 const float prev_pos[2],
298 const float pos[2],
299 bool eraser,
300 float pressure,
301 float distance,
302 float size);
303void paint_proj_redraw(const bContext *C, void *ps_handle_p, bool final);
304void paint_proj_stroke_done(void *ps_handle_p);
305
306void paint_brush_color_get(Scene *scene,
307 const Paint *paint,
308 Brush *br,
309 bool color_correction,
310 bool invert,
311 float distance,
312 float pressure,
313 ColorManagedDisplay *display,
314 float r_color[3]);
316void paint_brush_init_tex(Brush *brush);
317void paint_brush_exit_tex(Brush *brush);
319
329
330/* paint_image_2d_curve_mask.cc */
331
362
364void paint_curve_mask_cache_update(CurveMaskCache *curve_mask_cache,
365 const Brush *brush,
366 int diameter,
367 float radius,
368 const float cursor_position[2]);
369
370/* `sculpt_uv.cc` */
371
375
376/* paint_utils.cc */
377
384 const float bb_min[3],
385 const float bb_max[3],
386 const ARegion &region,
387 const RegionView3D &rv3d,
388 const Object &ob);
389
395void paint_calc_redraw_planes(float planes[4][4],
396 const ARegion &region,
397 const Object &ob,
398 const rcti &screen_rect);
399
401 const blender::float3 &center,
402 float pixel_radius);
403
407bool paint_get_tex_pixel(const MTex *mtex,
408 float u,
409 float v,
410 ImagePool *pool,
411 int thread,
412 float *r_intensity,
413 float r_rgba[4]);
414
419 bContext *C, ARegion *region, int x, int y, bool texpaint_proj, bool palette);
420
422
425
433
435
443
447
449
451
452inline float3 symmetry_flip(const float3 &src, const ePaintSymmetryFlags symm)
453{
454 float3 dst;
455 if (symm & PAINT_SYMM_X) {
456 dst.x = -src.x;
457 }
458 else {
459 dst.x = src.x;
460 }
461 if (symm & PAINT_SYMM_Y) {
462 dst.y = -src.y;
463 }
464 else {
465 dst.y = src.y;
466 }
467 if (symm & PAINT_SYMM_Z) {
468 dst.z = -src.z;
469 }
470 else {
471 dst.z = src.z;
472 }
473 return dst;
474}
475
476} // namespace blender::ed::sculpt_paint
477
478/* stroke operator */
485
486/* `paint_curve.cc` */
487
495
496/* image painting blur kernel */
498 float *wdata; /* actual kernel */
499 int side; /* kernel side */
500 int side_squared; /* data side */
501 int pixel_len; /* pixels around center that kernel is wide */
502};
503
508BlurKernel *paint_new_blur_kernel(Brush *br, bool proj);
510
512void paint_init_pivot(Object *ob, Scene *scene);
513
514/* paint curve defines */
515#define PAINT_CURVE_NUM_SEGMENTS 40
516
520 /* what angle to mask at */
521 float angle;
522 /* cos(angle), faster to compare */
526 /* difference between angle and angle_inner, for easy access */
528};
529
530void view_angle_limits_init(NormalAnglePrecalc *a, float angle, bool do_mask_normal);
531float view_angle_limits_apply_falloff(const NormalAnglePrecalc *a, float angle_cos, float *mask_p);
532bool test_brush_angle_falloff(const Brush &brush,
533 const NormalAnglePrecalc &normal_angle_precalc,
534 const float angle_cos,
535 float *brush_strength);
536bool use_normal(const VPaint &vp);
537
538bool brush_use_accumulate_ex(const Brush &brush, eObjectMode ob_mode);
539bool brush_use_accumulate(const VPaint &vp);
540
541void get_brush_alpha_data(const Scene &scene,
542 const SculptSession &ss,
543 const Brush &brush,
544 float *r_brush_size_pressure,
545 float *r_brush_alpha_value,
546 float *r_brush_alpha_pressure);
547
548void init_stroke(Depsgraph &depsgraph, Object &ob);
549void init_session_data(const ToolSettings &ts, Object &ob);
551void init_session(
552 Main &bmain, Depsgraph &depsgraph, Scene &scene, Object &ob, eObjectMode object_mode);
553
555 const Object &ob,
556 const VPaint &wp,
557 const Brush &brush,
558 IndexMaskMemory &memory);
559
561 Main &bmain, Depsgraph &depsgraph, Scene &scene, Object &ob, eObjectMode mode_flag);
562void mode_exit_generic(Object &ob, eObjectMode mode_flag);
564
565void smooth_brush_toggle_off(const bContext *C, Paint *paint, StrokeCache *cache);
566void smooth_brush_toggle_on(const bContext *C, Paint *paint, StrokeCache *cache);
567
572 bContext *C, VPaint &vp, SculptSession &ss, wmOperator *op, const float mval[2]);
573void last_stroke_update(Scene &scene, const float location[3]);
574} // namespace blender::ed::sculpt_paint::vwpaint
PaintMode
Definition BKE_paint.hh:99
unsigned short ushort
unsigned int uint
eObjectMode
ePaintSymmetryFlags
@ PAINT_SYMM_Y
@ PAINT_SYMM_X
@ PAINT_SYMM_Z
#define C
Definition RandGen.cpp:29
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
Definition btQuadWord.h:119
const Depsgraph * depsgraph
uint col
CCL_NAMESPACE_BEGIN ccl_device float invert(float color, float factor)
Definition invert.h:9
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)
void get_brush_alpha_data(const Scene &scene, const SculptSession &ss, const Brush &brush, float *r_brush_size_pressure, float *r_brush_alpha_value, float *r_brush_alpha_pressure)
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)
void init_session_data(const ToolSettings &ts, Object &ob)
bool test_brush_angle_falloff(const Brush &brush, const NormalAnglePrecalc &normal_angle_precalc, const float angle_cos, float *brush_strength)
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 smooth_brush_toggle_off(const bContext *C, Paint *paint, StrokeCache *cache)
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)
IndexMask pbvh_gather_generic(const Depsgraph &depsgraph, const Object &ob, const VPaint &wp, const Brush &brush, IndexMaskMemory &memory)
void init_session(Main &bmain, Depsgraph &depsgraph, Scene &scene, Object &ob, eObjectMode object_mode)
void last_stroke_update(Scene &scene, const float location[3])
int paint_stroke_exec(bContext *C, wmOperator *op, PaintStroke *stroke)
void BRUSH_OT_asset_save(wmOperatorType *ot)
bool paint_supports_texture(PaintMode mode)
void(*)(const bContext *C, PaintStroke *stroke, bool final) StrokeRedraw
bool paint_stroke_started(PaintStroke *stroke)
void BRUSH_OT_asset_delete(wmOperatorType *ot)
void BRUSH_OT_asset_edit_metadata(wmOperatorType *ot)
void paint_stroke_jitter_pos(Scene &scene, const PaintStroke &stroke, const PaintMode mode, const Brush &brush, const float pressure, const float mval[2], float r_mouse_out[2])
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(*)(bContext *C, wmOperator *op, PaintStroke *stroke, PointerRNA *itemptr) StrokeUpdateStep
void BRUSH_OT_asset_load_preview(wmOperatorType *ot)
bool paint_stroke_flipped(PaintStroke *stroke)
ViewContext * paint_stroke_view_context(PaintStroke *stroke)
bool paint_brush_cursor_poll(bContext *C)
int 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
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)
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)
float ED_wpaint_blend_tool(int tool, float weight, float paintval, float alpha)
void paint_cursor_delete_textures()
void SCULPT_OT_uv_sculpt_relax(wmOperatorType *ot)
Definition sculpt_uv.cc:993
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)
@ WPAINT_GRADIENT_TYPE_RADIAL
@ WPAINT_GRADIENT_TYPE_LINEAR
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_init_pivot(Object *ob, Scene *scene)
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 weight_paint_poll(bContext *C)
void(*)(const float col[3], const void *user_data, float r_col[3]) VPaintTransform_Callback
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)
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)
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 *)
bool paint_use_opacity_masking(Brush *brush)
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)
bool image_paint_poll(bContext *C)
void paint_calc_redraw_planes(float planes[4][4], const ARegion &region, const Object &ob, const rcti &screen_rect)
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_color_get(Scene *scene, const Paint *paint, Brush *br, bool color_correction, bool invert, float distance, float pressure, ColorManagedDisplay *display, float r_color[3])
void paint_brush_exit_tex(Brush *brush)
void paint_sample_color(bContext *C, ARegion *region, int x, int y, bool texpaint_proj, bool palette)
void PAINT_OT_vertex_paint_toggle(wmOperatorType *ot)
void PAINTCURVE_OT_cursor(wmOperatorType *ot)
bool ED_wpaint_ensure_data(bContext *C, ReportList *reports, enum eWPaintFlag flag, WPaintVGroupIndex *vgroup_index)
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_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:978
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 UnifiedPaintSettings &ups, const PaintModeSettings &)
Definition sculpt.cc:2067
signed char int8_t
Definition stdint.h:75
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.
PointerRNA * ptr
Definition wm_files.cc:4126
wmOperatorType * ot
Definition wm_files.cc:4125
uint8_t flag
Definition wm_window.cc:138