Blender  V2.93
Classes | Typedefs | Functions
gpencil_sculpt_paint.c File Reference
#include <math.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_ghash.h"
#include "BLI_math.h"
#include "BLI_rand.h"
#include "BLI_utildefines.h"
#include "PIL_time.h"
#include "BLT_translation.h"
#include "DNA_gpencil_types.h"
#include "DNA_material_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"
#include "DNA_view3d_types.h"
#include "BKE_brush.h"
#include "BKE_colortools.h"
#include "BKE_context.h"
#include "BKE_deform.h"
#include "BKE_gpencil.h"
#include "BKE_gpencil_geom.h"
#include "BKE_gpencil_modifier.h"
#include "BKE_main.h"
#include "BKE_material.h"
#include "BKE_object_deform.h"
#include "BKE_report.h"
#include "UI_interface.h"
#include "WM_api.h"
#include "WM_types.h"
#include "RNA_access.h"
#include "RNA_define.h"
#include "RNA_enum_types.h"
#include "UI_view2d.h"
#include "ED_gpencil.h"
#include "ED_keyframing.h"
#include "ED_screen.h"
#include "ED_view3d.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_query.h"
#include "gpencil_intern.h"

Go to the source code of this file.

Classes

struct  tGP_BrushEditData
 
struct  tGPSB_Grab_StrokeData
 
struct  tGPSB_CloneBrushData
 

Typedefs

typedef struct tGP_BrushEditData tGP_BrushEditData
 
typedef bool(* GP_BrushApplyCb) (tGP_BrushEditData *gso, bGPDstroke *gps, float rotation, int pt_index, const int radius, const int co[2])
 
typedef struct tGPSB_Grab_StrokeData tGPSB_Grab_StrokeData
 
typedef struct tGPSB_CloneBrushData tGPSB_CloneBrushData
 

Functions

static void gpencil_sculpt_compute_lock_axis (tGP_BrushEditData *gso, bGPDspoint *pt, const float save_pt[3])
 
static GP_Sculpt_Settingsgpencil_sculpt_get_settings (Scene *scene)
 
static bool gpencil_brush_invert_check (tGP_BrushEditData *gso)
 
static float gpencil_brush_influence_calc (tGP_BrushEditData *gso, const int radius, const int co[2])
 
static void gpencil_recalc_geometry_tag (bGPDstroke *gps)
 
static void gpencil_update_geometry (bGPdata *gpd)
 
static bool gpencil_brush_smooth_apply (tGP_BrushEditData *gso, bGPDstroke *gps, float UNUSED(rot_eval), int pt_index, const int radius, const int co[2])
 
static bool gpencil_brush_thickness_apply (tGP_BrushEditData *gso, bGPDstroke *gps, float UNUSED(rot_eval), int pt_index, const int radius, const int co[2])
 
static bool gpencil_brush_strength_apply (tGP_BrushEditData *gso, bGPDstroke *gps, float UNUSED(rot_eval), int pt_index, const int radius, const int co[2])
 
static void gpencil_brush_grab_stroke_init (tGP_BrushEditData *gso, bGPDstroke *gps)
 
static bool gpencil_brush_grab_store_points (tGP_BrushEditData *gso, bGPDstroke *gps, float rot_eval, int pt_index, const int radius, const int co[2])
 
static void gpencil_brush_grab_calc_dvec (tGP_BrushEditData *gso)
 
static void gpencil_brush_grab_apply_cached (tGP_BrushEditData *gso, bGPDstroke *gps, const float diff_mat[4][4])
 
static void gpencil_brush_grab_stroke_free (void *ptr)
 
static bool gpencil_brush_push_apply (tGP_BrushEditData *gso, bGPDstroke *gps, float UNUSED(rot_eval), int pt_index, const int radius, const int co[2])
 
static void gpencil_brush_calc_midpoint (tGP_BrushEditData *gso)
 
static bool gpencil_brush_pinch_apply (tGP_BrushEditData *gso, bGPDstroke *gps, float UNUSED(rot_eval), int pt_index, const int radius, const int co[2])
 
static bool gpencil_brush_twist_apply (tGP_BrushEditData *gso, bGPDstroke *gps, float UNUSED(rot_eval), int pt_index, const int radius, const int co[2])
 
static bool gpencil_brush_randomize_apply (tGP_BrushEditData *gso, bGPDstroke *gps, float UNUSED(rot_eval), int pt_index, const int radius, const int co[2])
 
static void gpencil_brush_clone_init (bContext *C, tGP_BrushEditData *gso)
 
static void gpencil_brush_clone_free (tGP_BrushEditData *gso)
 
static void gpencil_brush_clone_add (bContext *C, tGP_BrushEditData *gso)
 
static void gpencil_brush_clone_adjust (tGP_BrushEditData *gso)
 
static bool gpencil_sculpt_brush_apply_clone (bContext *C, tGP_BrushEditData *gso)
 
static void gpencil_sculpt_brush_header_set (bContext *C, tGP_BrushEditData *gso)
 
static bool gpencil_sculpt_brush_init (bContext *C, wmOperator *op)
 
static void gpencil_sculpt_brush_exit (bContext *C, wmOperator *op)
 
static bool gpencil_sculpt_brush_poll (bContext *C)
 
static void gpencil_sculpt_brush_init_stroke (bContext *C, tGP_BrushEditData *gso)
 
static float gpencil_sculpt_rotation_eval_get (tGP_BrushEditData *gso, bGPDstroke *gps_eval, bGPDspoint *pt_eval, int idx_eval)
 
static bool gpencil_sculpt_brush_do_stroke (tGP_BrushEditData *gso, bGPDstroke *gps, const float diff_mat[4][4], GP_BrushApplyCb apply)
 
static bool gpencil_sculpt_brush_do_frame (bContext *C, tGP_BrushEditData *gso, bGPDlayer *gpl, bGPDframe *gpf, const float diff_mat[4][4])
 
static bool gpencil_sculpt_brush_apply_standard (bContext *C, tGP_BrushEditData *gso)
 
static void gpencil_sculpt_brush_apply (bContext *C, wmOperator *op, PointerRNA *itemptr)
 
static Brushgpencil_sculpt_get_smooth_brush (tGP_BrushEditData *gso)
 
static void gpencil_sculpt_brush_apply_event (bContext *C, wmOperator *op, const wmEvent *event)
 
static int gpencil_sculpt_brush_exec (bContext *C, wmOperator *op)
 
static int gpencil_sculpt_brush_invoke (bContext *C, wmOperator *op, const wmEvent *event)
 
static int gpencil_sculpt_brush_modal (bContext *C, wmOperator *op, const wmEvent *event)
 
void GPENCIL_OT_sculpt_paint (wmOperatorType *ot)
 

Typedef Documentation

◆ GP_BrushApplyCb

typedef bool(* GP_BrushApplyCb) (tGP_BrushEditData *gso, bGPDstroke *gps, float rotation, int pt_index, const int radius, const int co[2])

Definition at line 166 of file gpencil_sculpt_paint.c.

◆ tGP_BrushEditData

◆ tGPSB_CloneBrushData

◆ tGPSB_Grab_StrokeData

Function Documentation

◆ gpencil_brush_calc_midpoint()

static void gpencil_brush_calc_midpoint ( tGP_BrushEditData gso)
static

◆ gpencil_brush_clone_add()

static void gpencil_brush_clone_add ( bContext C,
tGP_BrushEditData gso 
)
static

◆ gpencil_brush_clone_adjust()

static void gpencil_brush_clone_adjust ( tGP_BrushEditData gso)
static

◆ gpencil_brush_clone_free()

static void gpencil_brush_clone_free ( tGP_BrushEditData gso)
static

◆ gpencil_brush_clone_init()

static void gpencil_brush_clone_init ( bContext C,
tGP_BrushEditData gso 
)
static

◆ gpencil_brush_grab_apply_cached()

static void gpencil_brush_grab_apply_cached ( tGP_BrushEditData gso,
bGPDstroke gps,
const float  diff_mat[4][4] 
)
static

◆ gpencil_brush_grab_calc_dvec()

static void gpencil_brush_grab_calc_dvec ( tGP_BrushEditData gso)
static

◆ gpencil_brush_grab_store_points()

static bool gpencil_brush_grab_store_points ( tGP_BrushEditData gso,
bGPDstroke gps,
float  rot_eval,
int  pt_index,
const int  radius,
const int  co[2] 
)
static

◆ gpencil_brush_grab_stroke_free()

static void gpencil_brush_grab_stroke_free ( void *  ptr)
static

Definition at line 582 of file gpencil_sculpt_paint.c.

References data, MEM_freeN, MEM_SAFE_FREE, and ptr.

Referenced by gpencil_sculpt_brush_exit().

◆ gpencil_brush_grab_stroke_init()

static void gpencil_brush_grab_stroke_init ( tGP_BrushEditData gso,
bGPDstroke gps 
)
static

◆ gpencil_brush_influence_calc()

static float gpencil_brush_influence_calc ( tGP_BrushEditData gso,
const int  radius,
const int  co[2] 
)
static

◆ gpencil_brush_invert_check()

static bool gpencil_brush_invert_check ( tGP_BrushEditData gso)
static

◆ gpencil_brush_pinch_apply()

static bool gpencil_brush_pinch_apply ( tGP_BrushEditData gso,
bGPDstroke gps,
float   UNUSEDrot_eval,
int  pt_index,
const int  radius,
const int  co[2] 
)
static

◆ gpencil_brush_push_apply()

static bool gpencil_brush_push_apply ( tGP_BrushEditData gso,
bGPDstroke gps,
float   UNUSEDrot_eval,
int  pt_index,
const int  radius,
const int  co[2] 
)
static

◆ gpencil_brush_randomize_apply()

static bool gpencil_brush_randomize_apply ( tGP_BrushEditData gso,
bGPDstroke gps,
float   UNUSEDrot_eval,
int  pt_index,
const int  radius,
const int  co[2] 
)
static

◆ gpencil_brush_smooth_apply()

static bool gpencil_brush_smooth_apply ( tGP_BrushEditData gso,
bGPDstroke gps,
float   UNUSEDrot_eval,
int  pt_index,
const int  radius,
const int  co[2] 
)
static

◆ gpencil_brush_strength_apply()

static bool gpencil_brush_strength_apply ( tGP_BrushEditData gso,
bGPDstroke gps,
float   UNUSEDrot_eval,
int  pt_index,
const int  radius,
const int  co[2] 
)
static

◆ gpencil_brush_thickness_apply()

static bool gpencil_brush_thickness_apply ( tGP_BrushEditData gso,
bGPDstroke gps,
float   UNUSEDrot_eval,
int  pt_index,
const int  radius,
const int  co[2] 
)
static

◆ gpencil_brush_twist_apply()

static bool gpencil_brush_twist_apply ( tGP_BrushEditData gso,
bGPDstroke gps,
float   UNUSEDrot_eval,
int  pt_index,
const int  radius,
const int  co[2] 
)
static

◆ GPENCIL_OT_sculpt_paint()

void GPENCIL_OT_sculpt_paint ( wmOperatorType ot)

◆ gpencil_recalc_geometry_tag()

static void gpencil_recalc_geometry_tag ( bGPDstroke gps)
static

◆ gpencil_sculpt_brush_apply()

static void gpencil_sculpt_brush_apply ( bContext C,
wmOperator op,
PointerRNA itemptr 
)
static

◆ gpencil_sculpt_brush_apply_clone()

static bool gpencil_sculpt_brush_apply_clone ( bContext C,
tGP_BrushEditData gso 
)
static

◆ gpencil_sculpt_brush_apply_event()

static void gpencil_sculpt_brush_apply_event ( bContext C,
wmOperator op,
const wmEvent event 
)
static

◆ gpencil_sculpt_brush_apply_standard()

static bool gpencil_sculpt_brush_apply_standard ( bContext C,
tGP_BrushEditData gso 
)
static

◆ gpencil_sculpt_brush_do_frame()

static bool gpencil_sculpt_brush_do_frame ( bContext C,
tGP_BrushEditData gso,
bGPDlayer gpl,
bGPDframe gpf,
const float  diff_mat[4][4] 
)
static

◆ gpencil_sculpt_brush_do_stroke()

static bool gpencil_sculpt_brush_do_stroke ( tGP_BrushEditData gso,
bGPDstroke gps,
const float  diff_mat[4][4],
GP_BrushApplyCb  apply 
)
static

◆ gpencil_sculpt_brush_exec()

static int gpencil_sculpt_brush_exec ( bContext C,
wmOperator op 
)
static

◆ gpencil_sculpt_brush_exit()

static void gpencil_sculpt_brush_exit ( bContext C,
wmOperator op 
)
static

◆ gpencil_sculpt_brush_header_set()

static void gpencil_sculpt_brush_header_set ( bContext C,
tGP_BrushEditData gso 
)
static

◆ gpencil_sculpt_brush_init()

static bool gpencil_sculpt_brush_init ( bContext C,
wmOperator op 
)
static

Definition at line 1147 of file gpencil_sculpt_paint.c.

References Object::actdef, tGP_BrushEditData::area, BKE_curvemapping_init(), BKE_gpencil_has_transform_modifiers(), BKE_report(), BLI_findlink(), BLI_ghash_ptr_new(), BLI_rng_new(), tGP_BrushEditData::bmain, tGP_BrushEditData::brush, Paint::brush, C, tGP_BrushEditData::cfra, CTX_data_active_object(), CTX_data_ensure_evaluated_depsgraph(), CTX_data_main(), CTX_data_scene(), CTX_wm_area(), CTX_wm_region(), GP_Sculpt_Settings::cur_falloff, Brush::curve, wmOperator::customdata, Object::defbase, tGP_BrushEditData::depsgraph, ED_gpencil_data_get_active(), ED_gpencil_stroke_can_use(), tGP_BrushEditData::first, ListBase::first, GP_Sculpt_Settings::flag, ToolSettings::gp_sculpt, GP_SCULPT_SETT_FLAG_FRAME_FALLOFF, ToolSettings::gp_sculptpaint, tGP_BrushEditData::gpd, gpencil_brush_clone_init(), GPENCIL_MULTIEDIT_SESSIONS_ON, gpencil_point_conversion_init(), gpencil_sculpt_brush_header_set(), gpencil_sculpt_get_settings(), Brush::gpencil_sculpt_tool, ToolSettings::gpencil_selectmode_sculpt, gpencil_strokes_copypastebuf, GPSCULPT_TOOL_CLONE, GPSCULPT_TOOL_GRAB, tGP_BrushEditData::gsc, tGP_BrushEditData::inv_mat, invert_m4_m4(), tGP_BrushEditData::is_multiframe, tGP_BrushEditData::is_painting, tGP_BrushEditData::is_transformed, tGP_BrushEditData::mask, MEM_callocN, MEM_freeN, bGPDstroke::next, NULL, tGP_BrushEditData::object, Object::obmat, GpSculptPaint::paint, PIL_check_seconds_timer_i(), POINTER_AS_UINT, tGP_BrushEditData::region, wmOperator::reports, tGP_BrushEditData::rng, RPT_ERROR, scene, tGP_BrushEditData::scene, tGP_BrushEditData::settings, tGP_BrushEditData::stroke_customdata, Scene::toolsettings, UINT_MAX, unit_m4(), tGP_BrushEditData::use_multiframe_falloff, and tGP_BrushEditData::vrgroup.

Referenced by gpencil_sculpt_brush_exec(), and gpencil_sculpt_brush_invoke().

◆ gpencil_sculpt_brush_init_stroke()

static void gpencil_sculpt_brush_init_stroke ( bContext C,
tGP_BrushEditData gso 
)
static

◆ gpencil_sculpt_brush_invoke()

static int gpencil_sculpt_brush_invoke ( bContext C,
wmOperator op,
const wmEvent event 
)
static

◆ gpencil_sculpt_brush_modal()

static int gpencil_sculpt_brush_modal ( bContext C,
wmOperator op,
const wmEvent event 
)
static

◆ gpencil_sculpt_brush_poll()

static bool gpencil_sculpt_brush_poll ( bContext C)
static

◆ gpencil_sculpt_compute_lock_axis()

static void gpencil_sculpt_compute_lock_axis ( tGP_BrushEditData gso,
bGPDspoint pt,
const float  save_pt[3] 
)
static

◆ gpencil_sculpt_get_settings()

static GP_Sculpt_Settings* gpencil_sculpt_get_settings ( Scene scene)
static

Definition at line 226 of file gpencil_sculpt_paint.c.

References ToolSettings::gp_sculpt, scene, and Scene::toolsettings.

Referenced by gpencil_sculpt_brush_init().

◆ gpencil_sculpt_get_smooth_brush()

static Brush* gpencil_sculpt_get_smooth_brush ( tGP_BrushEditData gso)
static

◆ gpencil_sculpt_rotation_eval_get()

static float gpencil_sculpt_rotation_eval_get ( tGP_BrushEditData gso,
bGPDstroke gps_eval,
bGPDspoint pt_eval,
int  idx_eval 
)
static

◆ gpencil_update_geometry()

static void gpencil_update_geometry ( bGPdata gpd)
static