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
8
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};
219
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);
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
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
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
Definition IK_Math.h:125
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a color
#define C
Definition RandGen.cpp:29
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
input_tx image(0, GPU_RGBA16F, Qualifier::WRITE, ImageType::FLOAT_2D, "preview_img") .compute_source("compositor_compute_preview.glsl") .do_static_compilation(true)
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)
VecBase< float, 3 > float3
float distance(float a, float b)
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)
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)
@ WPAINT_GRADIENT_TYPE_RADIAL
@ WPAINT_GRADIENT_TYPE_LINEAR
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