Blender V4.5
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"
24
25#include <optional>
26
27enum class PaintMode : int8_t;
28
29struct ARegion;
30struct bContext;
31struct Brush;
32struct Depsgraph;
33struct Image;
34struct ImagePool;
35struct ImageUser;
36struct ImBuf;
37struct Main;
38struct MTex;
39struct Object;
40struct Paint;
41struct PointerRNA;
42struct RegionView3D;
43struct ReportList;
44struct Scene;
45struct SculptSession;
46struct SpaceImage;
47struct ToolSettings;
48struct VertProjHandle;
49struct ViewContext;
50struct VPaint;
51struct wmEvent;
52struct wmKeyConfig;
53struct wmKeyMap;
54struct wmOperator;
55struct wmOperatorType;
56namespace blender {
57
58namespace bke::pbvh {
59class Node;
60}
61
62namespace ed::sculpt_paint {
63struct PaintStroke;
64struct StrokeCache;
65} // namespace ed::sculpt_paint
66
67namespace ocio {
68class Display;
69}
70} // namespace blender
72
73/* paint_stroke.cc */
74
76
82using StrokeGetLocation = bool (*)(bContext *C,
83 float location[3],
84 const float mouse[2],
85 bool force_original);
91using StrokeTestStart = bool (*)(bContext *C, wmOperator *op, const float mouse[2]);
92
96using StrokeUpdateStep = void (*)(bContext *C,
97 wmOperator *op,
98 PaintStroke *stroke,
99 PointerRNA *itemptr);
100
104using StrokeRedraw = void (*)(const bContext *C, PaintStroke *stroke, bool final);
105
109using StrokeDone = void (*)(const bContext *C, PaintStroke *stroke);
110
112 wmOperator *op,
113 StrokeGetLocation get_location,
114 StrokeTestStart test_start,
115 StrokeUpdateStep update_step,
116 StrokeRedraw redraw,
117 StrokeDone done,
118 int event_type);
120
124bool paint_space_stroke_enabled(const Brush &br, PaintMode mode);
128bool paint_supports_dynamic_size(const Brush &br, PaintMode mode);
133bool paint_supports_smooth_stroke(PaintStroke *stroke, const Brush &br, PaintMode mode);
135
155 wmOperator *op,
156 const wmEvent *event,
157 PaintStroke **stroke_p);
165
167 public:
168 virtual ~PaintModeData() = default;
169};
170void paint_stroke_set_mode_data(PaintStroke *stroke, std::unique_ptr<PaintModeData> mode_data);
171
174 const PaintStroke &stroke,
175 const PaintMode mode,
176 const Brush &brush,
177 const float pressure,
178 const float mval[2],
179 float r_mouse_out[2]);
180
187 const Brush &brush,
188 PaintMode mode,
189 PaintStroke *stroke,
190 const float mouse_init[2],
191 float mouse[2],
192 float pressure,
193 float r_location[3],
194 bool *r_location_is_set);
195
203
204} // namespace blender::ed::sculpt_paint
205
210
211/* `paint_vertex.cc` */
212
223
224using VPaintTransform_Callback = void (*)(const float col[3],
225 const void *user_data,
226 float r_col[3]);
227
231
232enum {
235};
237
240
244unsigned int ED_vpaint_blend_tool(int tool, uint col, uint paintcol, int alpha_i);
245
246/* `paint_vertex_weight_utils.cc` */
247
256float ED_wpaint_blend_tool(int tool, float weight, float paintval, float alpha);
257/* Utility for tools to ensure vertex groups exist before they begin. */
260};
264};
265
270 enum eWPaintFlag flag,
271 WPaintVGroupIndex *vgroup_index);
273int ED_wpaint_mirror_vgroup_ensure(Object *ob, int vgroup_active);
274
275/* `paint_vertex_color_ops.cc` */
276
284
285/* `paint_vertex_weight_ops.cc` */
286
290
291/* `paint_vertex_proj.cc` */
292
294 Scene &scene,
295 Object &ob,
296 blender::Span<blender::float3> &r_vert_positions,
297 blender::Span<blender::float3> &r_vert_normals);
299 VertProjHandle *vp_handle,
300 /* runtime vars */
301 ARegion *region,
302 const float mval_fl[2]);
304
305/* `paint_image.cc` */
306
310
313 SpaceImage *sima, Image *image, ImBuf *ibuf, ImageUser *iuser, short texpaint);
317 ImBuf *ibuf, int x, int y, int w, int h, int *tx, int *ty, int *tw, int *th);
318bool get_imapaint_zoom(bContext *C, float *zoomx, float *zoomy);
319void *paint_2d_new_stroke(bContext *, wmOperator *, int mode);
320void paint_2d_redraw(const bContext *C, void *ps, bool final);
321void paint_2d_stroke_done(void *ps);
322void paint_2d_stroke(void *ps,
323 const float prev_mval[2],
324 const float mval[2],
325 bool eraser,
326 float pressure,
327 float distance,
328 float base_size);
333 const float color[3],
334 Brush *br,
335 const float mouse_init[2],
336 const float mouse_final[2],
337 void *ps);
339 const bContext *C, Brush *br, const float mouse_init[2], const float mouse_final[2], void *ps);
340void *paint_proj_new_stroke(bContext *C, Object *ob, const float mouse[2], int mode);
341void paint_proj_stroke(const bContext *C,
342 void *ps_handle_p,
343 const float prev_pos[2],
344 const float pos[2],
345 bool eraser,
346 float pressure,
347 float distance,
348 float size);
349void paint_proj_redraw(const bContext *C, void *ps_handle_p, bool final);
350void paint_proj_stroke_done(void *ps_handle_p);
351
352void paint_brush_color_get(Scene *scene,
353 const Paint *paint,
354 Brush *br,
355 std::optional<blender::float3> &initial_hsv_jitter,
356 bool color_correction,
357 bool invert,
358 float distance,
359 float pressure,
360 const ColorManagedDisplay *display,
361 float r_color[3]);
362bool paint_use_opacity_masking(const Scene *scene, const Paint *paint, const Brush *brush);
363void paint_brush_init_tex(Brush *brush);
364void paint_brush_exit_tex(Brush *brush);
365
375
376/* paint_image_2d_curve_mask.cc */
377
408
410void paint_curve_mask_cache_update(CurveMaskCache *curve_mask_cache,
411 const Brush *brush,
412 int diameter,
413 float radius,
414 const float cursor_position[2]);
415
416/* `sculpt_uv.cc` */
417
421
422/* paint_utils.cc */
423
430 const float bb_min[3],
431 const float bb_max[3],
432 const ARegion &region,
433 const RegionView3D &rv3d,
434 const Object &ob);
435
441void paint_calc_redraw_planes(float planes[4][4],
442 const ARegion &region,
443 const Object &ob,
444 const rcti &screen_rect);
445
447 const blender::float3 &center,
448 float pixel_radius);
449
453bool paint_get_tex_pixel(const MTex *mtex,
454 float u,
455 float v,
456 ImagePool *pool,
457 int thread,
458 float *r_intensity,
459 float r_rgba[4]);
460
465 bContext *C, ARegion *region, int x, int y, bool texpaint_proj, bool palette);
466
468
471
479
481
489
493
495
497
506inline bool is_symmetry_iteration_valid(const char i, const char symm)
507{
508 return i == 0 || (symm & i && (symm != 5 || i != 3) && (symm != 6 || !ELEM(i, 3, 5)));
509}
510
511inline float3 symmetry_flip(const float3 &src, const ePaintSymmetryFlags symm)
512{
513 float3 dst;
514 if (symm & PAINT_SYMM_X) {
515 dst.x = -src.x;
516 }
517 else {
518 dst.x = src.x;
519 }
520 if (symm & PAINT_SYMM_Y) {
521 dst.y = -src.y;
522 }
523 else {
524 dst.y = src.y;
525 }
526 if (symm & PAINT_SYMM_Z) {
527 dst.z = -src.z;
528 }
529 else {
530 dst.z = src.z;
531 }
532 return dst;
533}
534
535} // namespace blender::ed::sculpt_paint
536
537/* stroke operator */
544
545/* `paint_curve.cc` */
546
554
555/* image painting blur kernel */
557 float *wdata; /* actual kernel */
558 int side; /* kernel side */
559 int side_squared; /* data side */
560 int pixel_len; /* pixels around center that kernel is wide */
561};
562
567BlurKernel *paint_new_blur_kernel(Brush *br, bool proj);
569
571void paint_init_pivot(Object *ob, Scene *scene);
572
573/* paint curve defines */
574#define PAINT_CURVE_NUM_SEGMENTS 40
575
579 /* what angle to mask at */
580 float angle;
581 /* cos(angle), faster to compare */
585 /* difference between angle and angle_inner, for easy access */
587};
588
589void view_angle_limits_init(NormalAnglePrecalc *a, float angle, bool do_mask_normal);
590float view_angle_limits_apply_falloff(const NormalAnglePrecalc *a, float angle_cos, float *mask_p);
591bool test_brush_angle_falloff(const Brush &brush,
592 const NormalAnglePrecalc &normal_angle_precalc,
593 const float angle_cos,
594 float *brush_strength);
595bool use_normal(const VPaint &vp);
596
597bool brush_use_accumulate_ex(const Brush &brush, eObjectMode ob_mode);
598bool brush_use_accumulate(const VPaint &vp);
599
600void get_brush_alpha_data(const Scene &scene,
601 const SculptSession &ss,
602 const Brush &brush,
603 float *r_brush_size_pressure,
604 float *r_brush_alpha_value,
605 float *r_brush_alpha_pressure);
606
607void init_stroke(Depsgraph &depsgraph, Object &ob);
608void init_session_data(const ToolSettings &ts, Object &ob);
610void init_session(
611 Main &bmain, Depsgraph &depsgraph, Scene &scene, Object &ob, eObjectMode object_mode);
612
614 const Object &ob,
615 const VPaint &wp,
616 const Brush &brush,
617 IndexMaskMemory &memory);
618
620 Main &bmain, Depsgraph &depsgraph, Scene &scene, Object &ob, eObjectMode mode_flag);
621void mode_exit_generic(Object &ob, eObjectMode mode_flag);
623
626
631 bContext *C, VPaint &vp, SculptSession &ss, wmOperator *op, const float mval[2]);
632void last_stroke_update(Scene &scene, const float location[3]);
633} // namespace blender::ed::sculpt_paint::vwpaint
PaintMode
Definition BKE_paint.hh:93
blender::ocio::Display ColorManagedDisplay
Definition BLF_api.hh:35
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
ReportList * reports
Definition WM_types.hh:1025
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)
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])
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)
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 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_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 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 paint_use_opacity_masking(const Scene *scene, const Paint *paint, const Brush *brush)
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 *)
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_brush_color_get(Scene *scene, const Paint *paint, Brush *br, std::optional< blender::float3 > &initial_hsv_jitter, bool color_correction, bool invert, float distance, float pressure, const ColorManagedDisplay *display, float r_color[3])
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_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: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()
@ WPAINT_GRADIENT_TYPE_RADIAL
@ WPAINT_GRADIENT_TYPE_LINEAR
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:2157
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:4227
wmOperatorType * ot
Definition wm_files.cc:4226
uint8_t flag
Definition wm_window.cc:139