Blender  V3.3
Macros | Typedefs | Enumerations | Functions | Variables
BKE_gpencil.h File Reference

Go to the source code of this file.

Macros

#define GPENCIL_SIMPLIFY(scene)    ((scene->r.mode & R_SIMPLIFY) && (scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_ENABLE))
 
#define GPENCIL_SIMPLIFY_ONPLAY(playing)
 
#define GPENCIL_SIMPLIFY_FILL(scene, playing)
 
#define GPENCIL_SIMPLIFY_MODIF(scene)    ((GPENCIL_SIMPLIFY(scene) && (scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_MODIFIER)))
 
#define GPENCIL_SIMPLIFY_FX(scene, playing)
 
#define GPENCIL_SIMPLIFY_TINT(scene)    (GPENCIL_SIMPLIFY(scene) && (scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_TINT))
 
#define GPENCIL_SIMPLIFY_AA(scene)    (GPENCIL_SIMPLIFY(scene) && (scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_AA))
 
#define GPENCIL_USE_VERTEX_COLOR(toolsettings)    (((toolsettings)->gp_paint->mode == GPPAINT_FLAG_USE_VERTEXCOLOR))
 
#define GPENCIL_USE_VERTEX_COLOR_STROKE(toolsettings, brush)
 
#define GPENCIL_USE_VERTEX_COLOR_FILL(toolsettings, brush)
 
#define GPENCIL_TINT_VERTEX_COLOR_STROKE(brush)
 
#define GPENCIL_TINT_VERTEX_COLOR_FILL(brush)
 
#define GPENCIL_ALPHA_OPACITY_THRESH   0.001f
 
#define GPENCIL_STRENGTH_MIN   0.003f
 

Typedefs

typedef enum eGP_GetFrame_Mode eGP_GetFrame_Mode
 
typedef void(* gpIterCb) (struct bGPDlayer *layer, struct bGPDframe *frame, struct bGPDstroke *stroke, void *thunk)
 

Enumerations

enum  eGP_GetFrame_Mode { GP_GETFRAME_USE_PREV = 0 , GP_GETFRAME_ADD_NEW = 1 , GP_GETFRAME_ADD_COPY = 2 }
 

Functions

void BKE_gpencil_free_point_weights (struct MDeformVert *dvert)
 
void BKE_gpencil_free_stroke_weights (struct bGPDstroke *gps)
 
void BKE_gpencil_free_stroke_editcurve (struct bGPDstroke *gps)
 
void BKE_gpencil_free_stroke (struct bGPDstroke *gps)
 
bool BKE_gpencil_free_strokes (struct bGPDframe *gpf)
 
void BKE_gpencil_free_frames (struct bGPDlayer *gpl)
 
void BKE_gpencil_free_layers (struct ListBase *list)
 
void BKE_gpencil_free_data (struct bGPdata *gpd, bool free_all)
 
void BKE_gpencil_eval_delete (struct bGPdata *gpd_eval)
 
void BKE_gpencil_free_layer_masks (struct bGPDlayer *gpl)
 
void BKE_gpencil_tag (struct bGPdata *gpd)
 
void BKE_gpencil_batch_cache_dirty_tag (struct bGPdata *gpd)
 
void BKE_gpencil_batch_cache_free (struct bGPdata *gpd)
 
void BKE_gpencil_stroke_sync_selection (struct bGPdata *gpd, struct bGPDstroke *gps)
 
void BKE_gpencil_curve_sync_selection (struct bGPdata *gpd, struct bGPDstroke *gps)
 
void BKE_gpencil_stroke_select_index_set (struct bGPdata *gpd, struct bGPDstroke *gps)
 
void BKE_gpencil_stroke_select_index_reset (struct bGPDstroke *gps)
 
struct bGPDframeBKE_gpencil_frame_addnew (struct bGPDlayer *gpl, int cframe)
 
struct bGPDframeBKE_gpencil_frame_addcopy (struct bGPDlayer *gpl, int cframe)
 
struct bGPDlayerBKE_gpencil_layer_addnew (struct bGPdata *gpd, const char *name, bool setactive, bool add_to_header)
 
struct bGPdataBKE_gpencil_data_addnew (struct Main *bmain, const char name[])
 
struct bGPDframeBKE_gpencil_frame_duplicate (const struct bGPDframe *gpf_src, bool dup_strokes)
 
struct bGPDlayerBKE_gpencil_layer_duplicate (const struct bGPDlayer *gpl_src, bool dup_frames, bool dup_strokes)
 
void BKE_gpencil_data_copy_settings (const struct bGPdata *gpd_src, struct bGPdata *gpd_dst)
 
void BKE_gpencil_layer_copy_settings (const struct bGPDlayer *gpl_src, struct bGPDlayer *gpl_dst)
 
void BKE_gpencil_frame_copy_settings (const struct bGPDframe *gpf_src, struct bGPDframe *gpf_dst)
 
void BKE_gpencil_stroke_copy_settings (const struct bGPDstroke *gps_src, struct bGPDstroke *gps_dst)
 
void BKE_gpencil_frame_copy_strokes (struct bGPDframe *gpf_src, struct bGPDframe *gpf_dst)
 
void BKE_gpencil_frame_selected_hash (struct bGPdata *gpd, struct GHash *r_list)
 
struct bGPDcurveBKE_gpencil_stroke_curve_duplicate (struct bGPDcurve *gpc_src)
 
struct bGPDstrokeBKE_gpencil_stroke_duplicate (struct bGPDstroke *gps_src, bool dup_points, bool dup_curve)
 
struct bGPdataBKE_gpencil_data_duplicate (struct Main *bmain, const struct bGPdata *gpd, bool internal_copy)
 
void BKE_gpencil_frame_delete_laststroke (struct bGPDlayer *gpl, struct bGPDframe *gpf)
 
void BKE_gpencil_material_index_reassign (struct bGPdata *gpd, int totcol, int index)
 
bool BKE_gpencil_material_index_used (struct bGPdata *gpd, int index)
 
void BKE_gpencil_material_remap (struct bGPdata *gpd, const unsigned int *remap, unsigned int remap_len)
 
bool BKE_gpencil_merge_materials_table_get (struct Object *ob, float hue_threshold, float sat_threshold, float val_threshold, struct GHash *r_mat_table)
 
bool BKE_gpencil_merge_materials (struct Object *ob, float hue_threshold, float sat_threshold, float val_threshold, int *r_removed)
 
void BKE_gpencil_stats_update (struct bGPdata *gpd)
 
struct bGPDstrokeBKE_gpencil_stroke_new (int mat_idx, int totpoints, short thickness)
 
struct bGPDstrokeBKE_gpencil_stroke_add (struct bGPDframe *gpf, int mat_idx, int totpoints, short thickness, bool insert_at_head)
 
struct bGPDstrokeBKE_gpencil_stroke_add_existing_style (struct bGPDframe *gpf, struct bGPDstroke *existing, int mat_idx, int totpoints, short thickness)
 
struct bGPDcurveBKE_gpencil_stroke_editcurve_new (int tot_curve_points)
 
bool BKE_gpencil_layer_is_editable (const struct bGPDlayer *gpl)
 
struct bGPDframeBKE_gpencil_layer_frame_get (struct bGPDlayer *gpl, int cframe, eGP_GetFrame_Mode addnew)
 
struct bGPDframeBKE_gpencil_layer_frame_find (struct bGPDlayer *gpl, int cframe)
 
bool BKE_gpencil_layer_frame_delete (struct bGPDlayer *gpl, struct bGPDframe *gpf)
 
struct bGPDlayerBKE_gpencil_layer_named_get (struct bGPdata *gpd, const char *name)
 
struct bGPDlayerBKE_gpencil_layer_active_get (struct bGPdata *gpd)
 
void BKE_gpencil_layer_active_set (struct bGPdata *gpd, struct bGPDlayer *active)
 
void BKE_gpencil_layer_delete (struct bGPdata *gpd, struct bGPDlayer *gpl)
 
void BKE_gpencil_layer_autolock_set (struct bGPdata *gpd, bool unlock)
 
struct bGPDlayer_MaskBKE_gpencil_layer_mask_add (struct bGPDlayer *gpl, const char *name)
 
void BKE_gpencil_layer_mask_remove (struct bGPDlayer *gpl, struct bGPDlayer_Mask *mask)
 
void BKE_gpencil_layer_mask_remove_ref (struct bGPdata *gpd, const char *name)
 
struct bGPDlayer_MaskBKE_gpencil_layer_mask_named_get (struct bGPDlayer *gpl, const char *name)
 
void BKE_gpencil_layer_mask_sort (struct bGPdata *gpd, struct bGPDlayer *gpl)
 
void BKE_gpencil_layer_mask_sort_all (struct bGPdata *gpd)
 
void BKE_gpencil_layer_mask_copy (const struct bGPDlayer *gpl_src, struct bGPDlayer *gpl_dst)
 
void BKE_gpencil_layer_mask_cleanup (struct bGPdata *gpd, struct bGPDlayer *gpl)
 
void BKE_gpencil_layer_mask_cleanup_all_layers (struct bGPdata *gpd)
 
void BKE_gpencil_layer_frames_sort (struct bGPDlayer *gpl, bool *r_has_duplicate_frames)
 
struct bGPDlayerBKE_gpencil_layer_get_by_name (struct bGPdata *gpd, char *name, int first_if_not_found)
 
struct MaterialBKE_gpencil_brush_material_get (struct Brush *brush)
 
void BKE_gpencil_brush_material_set (struct Brush *brush, struct Material *material)
 
struct MaterialBKE_gpencil_object_material_ensure_active (struct Object *ob)
 
struct MaterialBKE_gpencil_object_material_ensure_from_brush (struct Main *bmain, struct Object *ob, struct Brush *brush)
 
int BKE_gpencil_object_material_ensure (struct Main *bmain, struct Object *ob, struct Material *material)
 
struct MaterialBKE_gpencil_object_material_ensure_by_name (struct Main *bmain, struct Object *ob, const char *name, int *r_index)
 
struct MaterialBKE_gpencil_object_material_new (struct Main *bmain, struct Object *ob, const char *name, int *r_index)
 
int BKE_gpencil_object_material_index_get (struct Object *ob, struct Material *ma)
 
int BKE_gpencil_object_material_index_get_by_name (struct Object *ob, const char *name)
 
struct MaterialBKE_gpencil_object_material_from_brush_get (struct Object *ob, struct Brush *brush)
 
int BKE_gpencil_object_material_get_index_from_brush (struct Object *ob, struct Brush *brush)
 
struct MaterialBKE_gpencil_object_material_ensure_from_active_input_toolsettings (struct Main *bmain, struct Object *ob, struct ToolSettings *ts)
 
struct MaterialBKE_gpencil_object_material_ensure_from_active_input_brush (struct Main *bmain, struct Object *ob, struct Brush *brush)
 
struct MaterialBKE_gpencil_object_material_ensure_from_active_input_material (struct Object *ob)
 
bool BKE_gpencil_stroke_select_check (const struct bGPDstroke *gps)
 
void BKE_gpencil_dvert_ensure (struct bGPDstroke *gps)
 
void BKE_gpencil_vgroup_remove (struct Object *ob, struct bDeformGroup *defgroup)
 
void BKE_gpencil_stroke_weights_duplicate (struct bGPDstroke *gps_src, struct bGPDstroke *gps_dst)
 
void BKE_gpencil_frame_active_set (struct Depsgraph *depsgraph, struct bGPdata *gpd)
 
void BKE_gpencil_frame_range_selected (struct bGPDlayer *gpl, int *r_initframe, int *r_endframe)
 
float BKE_gpencil_multiframe_falloff_calc (struct bGPDframe *gpf, int actnum, int f_init, int f_end, struct CurveMapping *cur_falloff)
 
void BKE_gpencil_palette_ensure (struct Main *bmain, struct Scene *scene)
 
bool BKE_gpencil_from_image (struct SpaceImage *sima, struct bGPdata *gpd, struct bGPDframe *gpf, float size, bool mask)
 
void BKE_gpencil_visible_stroke_iter (struct bGPdata *gpd, gpIterCb layer_cb, gpIterCb stroke_cb, void *thunk)
 
void BKE_gpencil_visible_stroke_advanced_iter (struct ViewLayer *view_layer, struct Object *ob, gpIterCb layer_cb, gpIterCb stroke_cb, void *thunk, bool do_onion, int cfra)
 
void BKE_gpencil_frame_original_pointers_update (const struct bGPDframe *gpf_orig, const struct bGPDframe *gpf_eval)
 
void BKE_gpencil_layer_original_pointers_update (const struct bGPDlayer *gpl_orig, const struct bGPDlayer *gpl_eval)
 
void BKE_gpencil_update_orig_pointers (const struct Object *ob_orig, const struct Object *ob_eval)
 
void BKE_gpencil_data_update_orig_pointers (const struct bGPdata *gpd_orig, const struct bGPdata *gpd_eval)
 
void BKE_gpencil_layer_transform_matrix_get (const struct Depsgraph *depsgraph, struct Object *obact, struct bGPDlayer *gpl, float diff_mat[4][4])
 
void BKE_gpencil_update_layer_transforms (const struct Depsgraph *depsgraph, struct Object *ob)
 
int BKE_gpencil_material_find_index_by_name_prefix (struct Object *ob, const char *name_prefix)
 
void BKE_gpencil_blend_read_data (struct BlendDataReader *reader, struct bGPdata *gpd)
 
bool BKE_gpencil_can_avoid_full_copy_on_write (const struct Depsgraph *depsgraph, struct bGPdata *gpd)
 
void BKE_gpencil_update_on_write (struct bGPdata *gpd_orig, struct bGPdata *gpd_eval)
 

Variables

void(* BKE_gpencil_batch_cache_dirty_tag_cb )(struct bGPdata *gpd)
 
void(* BKE_gpencil_batch_cache_free_cb )(struct bGPdata *gpd)
 

Macro Definition Documentation

◆ GPENCIL_ALPHA_OPACITY_THRESH

#define GPENCIL_ALPHA_OPACITY_THRESH   0.001f

Definition at line 323 of file BKE_gpencil.h.

◆ GPENCIL_SIMPLIFY

#define GPENCIL_SIMPLIFY (   scene)     ((scene->r.mode & R_SIMPLIFY) && (scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_ENABLE))

Definition at line 37 of file BKE_gpencil.h.

◆ GPENCIL_SIMPLIFY_AA

#define GPENCIL_SIMPLIFY_AA (   scene)     (GPENCIL_SIMPLIFY(scene) && (scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_AA))

Definition at line 52 of file BKE_gpencil.h.

◆ GPENCIL_SIMPLIFY_FILL

#define GPENCIL_SIMPLIFY_FILL (   scene,
  playing 
)
Value:
#define GPENCIL_SIMPLIFY(scene)
Definition: BKE_gpencil.h:37
#define GPENCIL_SIMPLIFY_ONPLAY(playing)
Definition: BKE_gpencil.h:39
@ SIMPLIFY_GPENCIL_FILL
Scene scene
short simplify_gpencil
struct RenderData r

Definition at line 42 of file BKE_gpencil.h.

◆ GPENCIL_SIMPLIFY_FX

#define GPENCIL_SIMPLIFY_FX (   scene,
  playing 
)
Value:

Definition at line 47 of file BKE_gpencil.h.

◆ GPENCIL_SIMPLIFY_MODIF

#define GPENCIL_SIMPLIFY_MODIF (   scene)     ((GPENCIL_SIMPLIFY(scene) && (scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_MODIFIER)))

Definition at line 45 of file BKE_gpencil.h.

◆ GPENCIL_SIMPLIFY_ONPLAY

#define GPENCIL_SIMPLIFY_ONPLAY (   playing)
Value:
(((playing == true) && (scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_ON_PLAY)) || \
@ SIMPLIFY_GPENCIL_ON_PLAY

Definition at line 39 of file BKE_gpencil.h.

◆ GPENCIL_SIMPLIFY_TINT

#define GPENCIL_SIMPLIFY_TINT (   scene)     (GPENCIL_SIMPLIFY(scene) && (scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_TINT))

Definition at line 50 of file BKE_gpencil.h.

◆ GPENCIL_STRENGTH_MIN

#define GPENCIL_STRENGTH_MIN   0.003f

Definition at line 324 of file BKE_gpencil.h.

◆ GPENCIL_TINT_VERTEX_COLOR_FILL

#define GPENCIL_TINT_VERTEX_COLOR_FILL (   brush)
Value:
(((brush)->gpencil_settings->vertex_mode == GPPAINT_MODE_FILL) || \
((brush)->gpencil_settings->vertex_mode == GPPAINT_MODE_BOTH))
@ GPPAINT_MODE_FILL
@ GPPAINT_MODE_BOTH

Definition at line 69 of file BKE_gpencil.h.

◆ GPENCIL_TINT_VERTEX_COLOR_STROKE

#define GPENCIL_TINT_VERTEX_COLOR_STROKE (   brush)
Value:
(((brush)->gpencil_settings->vertex_mode == GPPAINT_MODE_STROKE) || \
((brush)->gpencil_settings->vertex_mode == GPPAINT_MODE_BOTH))
@ GPPAINT_MODE_STROKE

Definition at line 66 of file BKE_gpencil.h.

◆ GPENCIL_USE_VERTEX_COLOR

#define GPENCIL_USE_VERTEX_COLOR (   toolsettings)     (((toolsettings)->gp_paint->mode == GPPAINT_FLAG_USE_VERTEXCOLOR))

Definition at line 56 of file BKE_gpencil.h.

◆ GPENCIL_USE_VERTEX_COLOR_FILL

#define GPENCIL_USE_VERTEX_COLOR_FILL (   toolsettings,
  brush 
)
Value:
((GPENCIL_USE_VERTEX_COLOR(toolsettings) && \
(((brush)->gpencil_settings->vertex_mode == GPPAINT_MODE_FILL) || \
((brush)->gpencil_settings->vertex_mode == GPPAINT_MODE_BOTH))))
#define GPENCIL_USE_VERTEX_COLOR(toolsettings)
Definition: BKE_gpencil.h:56

Definition at line 62 of file BKE_gpencil.h.

◆ GPENCIL_USE_VERTEX_COLOR_STROKE

#define GPENCIL_USE_VERTEX_COLOR_STROKE (   toolsettings,
  brush 
)
Value:
((GPENCIL_USE_VERTEX_COLOR(toolsettings) && \
(((brush)->gpencil_settings->vertex_mode == GPPAINT_MODE_STROKE) || \
((brush)->gpencil_settings->vertex_mode == GPPAINT_MODE_BOTH))))

Definition at line 58 of file BKE_gpencil.h.

Typedef Documentation

◆ eGP_GetFrame_Mode

◆ gpIterCb

typedef void(* gpIterCb) (struct bGPDlayer *layer, struct bGPDframe *frame, struct bGPDstroke *stroke, void *thunk)

Frame & stroke are NULL if it is a layer callback.

Definition at line 654 of file BKE_gpencil.h.

Enumeration Type Documentation

◆ eGP_GetFrame_Mode

Enumerator
GP_GETFRAME_USE_PREV 
GP_GETFRAME_ADD_NEW 
GP_GETFRAME_ADD_COPY 

Definition at line 336 of file BKE_gpencil.h.

Function Documentation

◆ BKE_gpencil_batch_cache_dirty_tag()

void BKE_gpencil_batch_cache_dirty_tag ( struct bGPdata gpd)

◆ BKE_gpencil_batch_cache_free()

void BKE_gpencil_batch_cache_free ( struct bGPdata gpd)

Definition at line 343 of file gpencil.c.

References BKE_gpencil_batch_cache_free_cb.

Referenced by BKE_gpencil_free_data().

◆ BKE_gpencil_blend_read_data()

void BKE_gpencil_blend_read_data ( struct BlendDataReader reader,
struct bGPdata gpd 
)

◆ BKE_gpencil_brush_material_get()

struct Material* BKE_gpencil_brush_material_get ( struct Brush brush)

Get grease pencil material from brush.

Parameters
brushBrush
Returns
Pointer to material

Definition at line 1675 of file gpencil.c.

References Brush::gpencil_settings, BrushGpencilSettings::material, and NULL.

Referenced by BKE_gpencil_object_material_ensure_from_brush(), and BKE_gpencil_object_material_from_brush_get().

◆ BKE_gpencil_brush_material_set()

void BKE_gpencil_brush_material_set ( struct Brush brush,
struct Material material 
)

Set grease pencil brush material.

Parameters
brushBrush
materialMaterial

Definition at line 1687 of file gpencil.c.

References BLI_assert, Brush::gpencil_settings, Material::id, id_us_min(), id_us_plus(), and BrushGpencilSettings::material.

Referenced by BKE_gpencil_brush_preset_set().

◆ BKE_gpencil_can_avoid_full_copy_on_write()

bool BKE_gpencil_can_avoid_full_copy_on_write ( const struct Depsgraph depsgraph,
struct bGPdata gpd 
)

◆ BKE_gpencil_curve_sync_selection()

void BKE_gpencil_curve_sync_selection ( struct bGPdata gpd,
struct bGPDstroke gps 
)

◆ BKE_gpencil_data_addnew()

struct bGPdata* BKE_gpencil_data_addnew ( struct Main bmain,
const char  name[] 
)

◆ BKE_gpencil_data_copy_settings()

void BKE_gpencil_data_copy_settings ( const struct bGPdata gpd_src,
struct bGPdata gpd_dst 
)

Make a copy of a given gpencil data settings.

◆ BKE_gpencil_data_duplicate()

struct bGPdata* BKE_gpencil_data_duplicate ( struct Main bmain,
const struct bGPdata gpd,
bool  internal_copy 
)

Make a copy of a given gpencil data-block.

XXX: Should this be deprecated?

Referenced by gpencil_undo_push().

◆ BKE_gpencil_data_update_orig_pointers()

void BKE_gpencil_data_update_orig_pointers ( const struct bGPdata gpd_orig,
const struct bGPdata gpd_eval 
)

Update pointers of eval data to original data to keep references.

Parameters
gpd_origOriginal grease pencil data
gpd_evalEvaluated grease pencil data

Referenced by blender::deg::GPencilBackup::restore_to_gpencil().

◆ BKE_gpencil_dvert_ensure()

void BKE_gpencil_dvert_ensure ( struct bGPDstroke gps)

◆ BKE_gpencil_eval_delete()

void BKE_gpencil_eval_delete ( struct bGPdata gpd_eval)

Delete grease pencil evaluated data

Parameters
gpd_evalGrease pencil data-block

Definition at line 498 of file gpencil.c.

References BKE_gpencil_free_data(), BKE_libblock_free_data(), BLI_assert, bGPdata::id, MEM_freeN, and ID::py_instance.

Referenced by BKE_gpencil_prepare_eval_data(), and BKE_object_free_derived_caches().

◆ BKE_gpencil_frame_active_set()

void BKE_gpencil_frame_active_set ( struct Depsgraph depsgraph,
struct bGPdata gpd 
)

Set current grease pencil active frame.

Parameters
depsgraphCurrent depsgraph
gpdGrease pencil data-block.

Definition at line 306 of file gpencil_modifier.c.

References BKE_gpencil_layer_frame_get(), DEG_debug_print_eval(), DEG_get_ctime(), DEG_get_original_id(), DEG_is_active(), depsgraph, GP_GETFRAME_USE_PREV, bGPdata::id, bGPdata::layers, LISTBASE_FOREACH, and ID::name.

Referenced by blender::deg::DepsgraphNodeBuilder::build_object_data_geometry_datablock(), and generateStrokes().

◆ BKE_gpencil_frame_addcopy()

struct bGPDframe* BKE_gpencil_frame_addcopy ( struct bGPDlayer gpl,
int  cframe 
)

◆ BKE_gpencil_frame_addnew()

struct bGPDframe* BKE_gpencil_frame_addnew ( struct bGPDlayer gpl,
int  cframe 
)

◆ BKE_gpencil_frame_copy_settings()

void BKE_gpencil_frame_copy_settings ( const struct bGPDframe gpf_src,
struct bGPDframe gpf_dst 
)

Make a copy of a given gpencil frame settings.

◆ BKE_gpencil_frame_copy_strokes()

void BKE_gpencil_frame_copy_strokes ( struct bGPDframe gpf_src,
struct bGPDframe gpf_dst 
)

Make a copy of strokes between gpencil frames.

Parameters
gpf_srcSource grease pencil frame
gpf_dstDestination grease pencil frame

Definition at line 920 of file gpencil.c.

References BKE_gpencil_stroke_duplicate(), BLI_addtail(), BLI_listbase_clear(), LISTBASE_FOREACH, NULL, and bGPDframe::strokes.

Referenced by copy_frame_to_eval_ex().

◆ BKE_gpencil_frame_delete_laststroke()

void BKE_gpencil_frame_delete_laststroke ( struct bGPDlayer gpl,
struct bGPDframe gpf 
)

◆ BKE_gpencil_frame_duplicate()

struct bGPDframe* BKE_gpencil_frame_duplicate ( const struct bGPDframe gpf_src,
bool  dup_strokes 
)

Make a copy of a given gpencil frame.

Parameters
gpf_srcSource grease pencil frame
Returns
Pointer to new frame

Referenced by do_versions_after_linking_290(), ED_gpencil_anim_copybuf_copy(), ED_gpencil_layer_frames_duplicate(), gpencil_bake_grease_pencil_animation_exec(), gpencil_interpolate_seq_exec(), and gpencil_interpolate_set_points().

◆ BKE_gpencil_frame_original_pointers_update()

void BKE_gpencil_frame_original_pointers_update ( const struct bGPDframe gpf_orig,
const struct bGPDframe gpf_eval 
)

◆ BKE_gpencil_frame_range_selected()

void BKE_gpencil_frame_range_selected ( struct bGPDlayer gpl,
int *  r_initframe,
int *  r_endframe 
)

Get range of selected frames in layer. Always the active frame is considered as selected, so if no more selected the range will be equal to the current active frame.

Parameters
gplLayer.
r_initframeNumber of first selected frame.
r_endframeNumber of last selected frame.

Definition at line 1900 of file gpencil.c.

References bGPDlayer::actframe, bGPDframe::framenum, bGPDlayer::frames, GP_FRAME_SELECT, and LISTBASE_FOREACH.

Referenced by createTransGPencil_curves(), createTransGPencil_strokes(), gpencil_sculpt_brush_apply_standard(), gpencil_vertexpaint_brush_apply_to_layers(), and gpencil_weightpaint_brush_apply_to_layers().

◆ BKE_gpencil_frame_selected_hash()

void BKE_gpencil_frame_selected_hash ( struct bGPdata gpd,
struct GHash r_list 
)

◆ BKE_gpencil_free_data()

void BKE_gpencil_free_data ( struct bGPdata gpd,
bool  free_all 
)

◆ BKE_gpencil_free_frames()

void BKE_gpencil_free_frames ( struct bGPDlayer gpl)

◆ BKE_gpencil_free_layer_masks()

void BKE_gpencil_free_layer_masks ( struct bGPDlayer gpl)

◆ BKE_gpencil_free_layers()

void BKE_gpencil_free_layers ( struct ListBase list)

Free all of the gp-layers for a viewport (list should be &gpd->layers or so).

Definition at line 456 of file gpencil.c.

References BKE_gpencil_free_frames(), BKE_gpencil_free_layer_masks(), BLI_freelinkN(), ListBase::first, bGPDlayer::next, and NULL.

Referenced by BKE_gpencil_free_data(), ED_gpencil_anim_copybuf_free(), and ED_undo_gpencil_step().

◆ BKE_gpencil_free_point_weights()

void BKE_gpencil_free_point_weights ( struct MDeformVert dvert)

◆ BKE_gpencil_free_stroke()

void BKE_gpencil_free_stroke ( struct bGPDstroke gps)

◆ BKE_gpencil_free_stroke_editcurve()

void BKE_gpencil_free_stroke_editcurve ( struct bGPDstroke gps)

◆ BKE_gpencil_free_stroke_weights()

void BKE_gpencil_free_stroke_weights ( struct bGPDstroke gps)

◆ BKE_gpencil_free_strokes()

bool BKE_gpencil_free_strokes ( struct bGPDframe gpf)

◆ BKE_gpencil_from_image()

bool BKE_gpencil_from_image ( struct SpaceImage sima,
struct bGPdata gpd,
struct bGPDframe gpf,
float  size,
bool  mask 
)

◆ BKE_gpencil_layer_active_get()

struct bGPDlayer* BKE_gpencil_layer_active_get ( struct bGPdata gpd)

Get the active grease pencil layer for editing.

Parameters
gpdGrease pencil data-block
Returns
Pointer to layer

Definition at line 1558 of file gpencil.c.

References ELEM, ListBase::first, GP_LAYER_ACTIVE, bGPdata::layers, LISTBASE_FOREACH, and NULL.

Referenced by annotation_actframe_delete_poll(), annotation_paint_initstroke(), BKE_gpencil_convert_curve(), BKE_gpencil_frame_selected_hash(), BKE_gpencil_layer_addnew(), BKE_gpencil_layer_autolock_set(), ED_gpencil_drawing_reference_get(), ED_gpencil_has_keyframe_v3d(), ED_gpencil_set_active_channel(), get_automasking_strokes_list(), gpencil_actframe_delete_exec(), gpencil_actframe_delete_poll(), gpencil_active_layer_annotation_poll(), gpencil_active_layer_poll(), gpencil_blank_frame_add_exec(), GPENCIL_cache_init(), gpencil_convert_layer_exec(), gpencil_convert_poll(), gpencil_create_extensions(), gpencil_curve_edit_mode_poll(), gpencil_draw_datablock(), gpencil_fill_init(), gpencil_frame_duplicate_exec(), gpencil_hide_exec(), gpencil_interpolate_reverse_poll(), gpencil_isolate_layer_exec(), gpencil_layer_copy_exec(), gpencil_layer_duplicate_object_exec(), gpencil_layer_duplicate_object_poll(), gpencil_layer_mask_add_exec(), gpencil_layer_mask_move_exec(), gpencil_layer_mask_remove_exec(), gpencil_layer_move_exec(), gpencil_layer_remove_exec(), gpencil_merge_by_distance_poll(), gpencil_merge_layer_exec(), gpencil_paint_initstroke(), gpencil_primitive_add_poll(), gpencil_primitive_invoke(), gpencil_session_init_fill(), gpencil_stroke_apply_thickness_exec(), gpencil_stroke_arrange_exec(), gpencil_stroke_join_exec(), gpencil_stroke_normalize_poll(), gpencil_stroke_not_in_curve_edit_mode(), gpencil_stroke_separate_exec(), gpencil_strokes_paste_exec(), gpencil_transform_fill_poll(), gpencil_zoom_level_set(), OVERLAY_gpencil_cache_init(), screen_ctx_active_annotation_layer(), screen_ctx_active_gpencil_frame(), screen_ctx_active_gpencil_layer(), and trace_initialize_job_data().

◆ BKE_gpencil_layer_active_set()

void BKE_gpencil_layer_active_set ( struct bGPdata gpd,
struct bGPDlayer active 
)

◆ BKE_gpencil_layer_addnew()

struct bGPDlayer* BKE_gpencil_layer_addnew ( struct bGPdata gpd,
const char *  name,
bool  setactive,
bool  add_to_header 
)

Add a new gp-layer and make it the active layer.

Parameters
gpdGrease pencil data-block
nameName of the layer
setactiveSet as active
add_to_headerUsed to force the layer added at header
Returns
Pointer to new layer

Definition at line 621 of file gpencil.c.

References ARRAY_SET_ITEMS, BKE_gpencil_layer_active_get(), BKE_gpencil_layer_active_set(), BLI_addhead(), BLI_addtail(), BLI_insertlinkafter(), BLI_strncpy(), BLI_uniquename(), bGPDlayer::color, copy_v3_fl(), copy_v4_v4(), DATA_, bGPDlayer::flag, bGPdata::flag, bGPDlayer::gcolor_next, bGPDlayer::gcolor_prev, GP_DATA_ANNOTATIONS, GP_LAYER_ONIONSKIN, GP_LAYER_USE_LIGHTS, bGPDlayer::info, invert_m4_m4(), bGPDlayer::layer_invmat, bGPDlayer::layer_mat, bGPdata::layers, loc_eul_size_to_mat4(), bGPDlayer::location, MEM_callocN, NULL, bGPDlayer::onion_flag, bGPDlayer::opacity, bGPDlayer::rotation, bGPDlayer::scale, bGPDlayer::thickness, bGPDlayer::vertex_paint_opacity, and zero_v3().

Referenced by annotation_paint_initstroke(), BKE_gpencil_convert_curve(), BKE_gpencil_convert_mesh(), ED_gpencil_create_blank(), ED_gpencil_create_lineart(), ED_gpencil_create_monkey(), ED_gpencil_create_stroke(), gpencil_bake_grease_pencil_animation_exec(), gpencil_data_add_exec(), gpencil_layer_add_exec(), gpencil_layer_change_exec(), gpencil_layer_duplicate_object_exec(), gpencil_paint_initstroke(), gpencil_primitive_set_initdata(), gpencil_session_init_fill(), gpencil_stroke_separate_exec(), gpencil_strokes_paste_exec(), image_to_gpencil_exec(), blender::io::gpencil::GpencilImporterSVG::read(), trace_initialize_job_data(), and view3d_ruler_to_gpencil().

◆ BKE_gpencil_layer_autolock_set()

void BKE_gpencil_layer_autolock_set ( struct bGPdata gpd,
bool  unlock 
)

Set locked layers for autolock mode.

Parameters
gpdGrease pencil data-block
unlockUnlock flag

Definition at line 1623 of file gpencil.c.

References BKE_gpencil_layer_active_get(), BLI_assert, bGPdata::flag, GP_DATA_AUTOLOCK_LAYERS, GP_LAYER_LOCKED, bGPdata::layers, LISTBASE_FOREACH, and NULL.

Referenced by click_select_channel_gplayer(), and ED_gpencil_set_active_channel().

◆ BKE_gpencil_layer_copy_settings()

void BKE_gpencil_layer_copy_settings ( const struct bGPDlayer gpl_src,
struct bGPDlayer gpl_dst 
)

Make a copy of a given gpencil layer settings.

Referenced by gpencil_stroke_separate_exec().

◆ BKE_gpencil_layer_delete()

void BKE_gpencil_layer_delete ( struct bGPdata gpd,
struct bGPDlayer gpl 
)

◆ BKE_gpencil_layer_duplicate()

struct bGPDlayer* BKE_gpencil_layer_duplicate ( const struct bGPDlayer gpl_src,
bool  dup_frames,
bool  dup_strokes 
)

Make a copy of a given gpencil layer.

Parameters
gpl_srcSource grease pencil layer
Returns
Pointer to new layer

Referenced by ED_gpencil_join_objects_exec(), ED_undo_gpencil_step(), gpencil_copy_structure_for_eval(), and gpencil_layer_copy_exec().

◆ BKE_gpencil_layer_frame_delete()

bool BKE_gpencil_layer_frame_delete ( struct bGPDlayer gpl,
struct bGPDframe gpf 
)

◆ BKE_gpencil_layer_frame_find()

struct bGPDframe* BKE_gpencil_layer_frame_find ( struct bGPDlayer gpl,
int  cframe 
)

Look up the gp-frame on the requested frame number, but don't add a new one.

Parameters
gplGrease pencil layer
cframeFrame number
Returns
Pointer to frame

Definition at line 1216 of file gpencil.c.

References bGPDframe::framenum, bGPDlayer::frames, ListBase::last, NULL, and bGPDframe::prev.

Referenced by bake_strokes(), BKE_gpencil_stroke_copy_to_keyframes(), clear_strokes(), ED_gpencil_select_frame(), and gpencil_blank_frame_add_exec().

◆ BKE_gpencil_layer_frame_get()

struct bGPDframe* BKE_gpencil_layer_frame_get ( struct bGPDlayer gpl,
int  cframe,
eGP_GetFrame_Mode  addnew 
)

Get the appropriate gp-frame from a given layer

  • this sets the layer's actframe var (if allowed to)
  • extension beyond range (if first gp-frame is after all frame in interest and cannot add)
Parameters
gplGrease pencil layer
cframeFrame number
addnewAdd option
Returns
Pointer to new frame

Definition at line 1232 of file gpencil.c.

References blender::math::abs(), bGPDlayer::actframe, BKE_gpencil_frame_addcopy(), BKE_gpencil_frame_addnew(), CLOG_STR_ERROR, ListBase::first, bGPDframe::flag, bGPDlayer::flag, bGPDframe::framenum, bGPDlayer::frames, GP_FRAME_PAINT, GP_GETFRAME_ADD_COPY, GP_LAYER_FRAMELOCK, ListBase::last, LOG, bGPDframe::next, NULL, and bGPDframe::prev.

Referenced by annotation_draw_data_layers(), annotation_paint_initstroke(), bake_strokes(), BKE_gpencil_convert_curve(), BKE_gpencil_convert_mesh(), BKE_gpencil_frame_active_set(), BKE_gpencil_frame_delete_laststroke(), BKE_gpencil_frame_retime_get(), ED_gpencil_anim_copybuf_paste(), ED_gpencil_layer_merge(), gpencil_actframe_delete_all_exec(), gpencil_actframe_delete_exec(), gpencil_bake_grease_pencil_animation_exec(), gpencil_blank_frame_add_exec(), gpencil_brush_clone_add(), GPENCIL_cache_populate(), gpencil_convert_check_has_valid_timing(), gpencil_convert_poll(), gpencil_copy_visible_frames_to_eval(), gpencil_create_extensions(), gpencil_delete_temp_stroke_extension(), gpencil_draw_datablock(), gpencil_fill_modal(), gpencil_interpolate_modal(), gpencil_interpolate_seq_exec(), gpencil_layer_add_exec(), gpencil_layer_to_curve(), gpencil_paint_initstroke(), gpencil_prepare_stroke(), gpencil_primitive_interaction_end(), gpencil_select_same_layer(), gpencil_stroke_from_buffer(), gpencil_stroke_separate_exec(), gpencil_strokes_paste_exec(), gpencil_zoom_level_set(), insert_gpencil_key(), blender::io::gpencil::GpencilImporterSVG::read(), trace_start_job(), view3d_ruler_from_gpencil(), and view3d_ruler_to_gpencil().

◆ BKE_gpencil_layer_frames_sort()

void BKE_gpencil_layer_frames_sort ( struct bGPDlayer gpl,
bool r_has_duplicate_frames 
)

Sort grease pencil frames.

Parameters
gplGrease pencil layer
r_has_duplicate_framesDuplicated frames flag

Definition at line 1553 of file gpencil.c.

References BLI_listbase_sort_r(), bGPDlayer::frames, and gpencil_cb_cmp_frame().

Referenced by ANIM_animdata_update(), and posttrans_gpd_clean().

◆ BKE_gpencil_layer_get_by_name()

struct bGPDlayer* BKE_gpencil_layer_get_by_name ( struct bGPdata gpd,
char *  name,
int  first_if_not_found 
)

◆ BKE_gpencil_layer_is_editable()

bool BKE_gpencil_layer_is_editable ( const struct bGPDlayer gpl)

◆ BKE_gpencil_layer_mask_add()

struct bGPDlayer_Mask* BKE_gpencil_layer_mask_add ( struct bGPDlayer gpl,
const char *  name 
)

Add grease pencil mask layer.

Parameters
gplGrease pencil layer
nameName of the mask
Returns
Pointer to new mask layer

Definition at line 1435 of file gpencil.c.

References bGPDlayer::act_mask, BLI_addtail(), BLI_strncpy(), mask(), bGPDlayer::mask_layers, and MEM_callocN.

Referenced by gpencil_layer_mask_add_exec().

◆ BKE_gpencil_layer_mask_cleanup()

void BKE_gpencil_layer_mask_cleanup ( struct bGPdata gpd,
struct bGPDlayer gpl 
)

◆ BKE_gpencil_layer_mask_cleanup_all_layers()

void BKE_gpencil_layer_mask_cleanup_all_layers ( struct bGPdata gpd)

Clean any invalid mask layer for all layers.

Definition at line 1525 of file gpencil.c.

References BKE_gpencil_layer_mask_cleanup(), bGPdata::layers, and LISTBASE_FOREACH.

Referenced by gpencil_stroke_separate_exec().

◆ BKE_gpencil_layer_mask_copy()

void BKE_gpencil_layer_mask_copy ( const struct bGPDlayer gpl_src,
struct bGPDlayer gpl_dst 
)

Make a copy of a given gpencil mask layers.

Referenced by gpencil_stroke_separate_exec().

◆ BKE_gpencil_layer_mask_named_get()

struct bGPDlayer_Mask* BKE_gpencil_layer_mask_named_get ( struct bGPDlayer gpl,
const char *  name 
)

Get mask layer by name.

Parameters
gplGrease pencil layer
nameMask name
Returns
Pointer to mask layer

Definition at line 1427 of file gpencil.c.

References BLI_findstring(), bGPDlayer::mask_layers, and NULL.

Referenced by ED_gpencil_layer_merge(), and gpencil_layer_mask_add_exec().

◆ BKE_gpencil_layer_mask_remove()

void BKE_gpencil_layer_mask_remove ( struct bGPDlayer gpl,
struct bGPDlayer_Mask mask 
)

Remove grease pencil mask layer.

Parameters
gplGrease pencil layer
maskGrease pencil mask layer

Definition at line 1446 of file gpencil.c.

References bGPDlayer::act_mask, BLI_freelinkN(), CLAMP_MIN, mask(), and bGPDlayer::mask_layers.

Referenced by BKE_gpencil_layer_mask_cleanup(), BKE_gpencil_layer_mask_remove_ref(), and gpencil_layer_mask_remove_exec().

◆ BKE_gpencil_layer_mask_remove_ref()

void BKE_gpencil_layer_mask_remove_ref ( struct bGPdata gpd,
const char *  name 
)

Remove any reference to mask layer.

Parameters
gpdGrease pencil data-block
nameName of the mask layer

Definition at line 1453 of file gpencil.c.

References BKE_gpencil_layer_mask_remove(), bGPdata::layers, LISTBASE_FOREACH, mask(), and STREQ.

Referenced by BKE_gpencil_layer_delete().

◆ BKE_gpencil_layer_mask_sort()

void BKE_gpencil_layer_mask_sort ( struct bGPdata gpd,
struct bGPDlayer gpl 
)

◆ BKE_gpencil_layer_mask_sort_all()

void BKE_gpencil_layer_mask_sort_all ( struct bGPdata gpd)

Sort all grease pencil mask layer.

Parameters
gpdGrease pencil data-block

Definition at line 1499 of file gpencil.c.

References BKE_gpencil_layer_mask_sort(), bGPdata::layers, and LISTBASE_FOREACH.

Referenced by gpencil_layer_move_exec(), and gpencil_layer_remove_exec().

◆ BKE_gpencil_layer_named_get()

struct bGPDlayer* BKE_gpencil_layer_named_get ( struct bGPdata gpd,
const char *  name 
)

◆ BKE_gpencil_layer_original_pointers_update()

void BKE_gpencil_layer_original_pointers_update ( const struct bGPDlayer gpl_orig,
const struct bGPDlayer gpl_eval 
)

Update original pointers in evaluated layer.

Parameters
gpl_origOriginal grease-pencil layer.
gpl_evalEvaluated grease pencil layer.

Definition at line 2663 of file gpencil.c.

References BKE_gpencil_frame_original_pointers_update(), ListBase::first, bGPDlayer::frames, bGPDframe_Runtime::gpf_orig, LISTBASE_FOREACH, bGPDframe::next, NULL, and bGPDframe::runtime.

Referenced by BKE_gpencil_data_update_orig_pointers(), gpencil_copy_structure_for_eval(), and gpencil_update_on_write_layer_cb().

◆ BKE_gpencil_layer_transform_matrix_get()

void BKE_gpencil_layer_transform_matrix_get ( const struct Depsgraph depsgraph,
struct Object obact,
struct bGPDlayer gpl,
float  diff_mat[4][4] 
)

◆ BKE_gpencil_material_find_index_by_name_prefix()

int BKE_gpencil_material_find_index_by_name_prefix ( struct Object ob,
const char *  name_prefix 
)

Find material by name prefix.

Parameters
obObject pointer
name_prefixPrefix name of the material
Returns
Index

Definition at line 2855 of file gpencil.c.

References BKE_object_material_get(), Material::gp_style, Material::id, ID::name, NULL, STREQLEN, and Object::totcol.

Referenced by BKE_gpencil_convert_mesh(), blender::io::gpencil::GpencilImporter::create_material(), and ED_gpencil_trace_data_to_strokes().

◆ BKE_gpencil_material_index_reassign()

void BKE_gpencil_material_index_reassign ( struct bGPdata gpd,
int  totcol,
int  index 
)

Reassign strokes using a material.

Parameters
gpdGrease pencil data-block
totcolTotal materials
indexIndex of the material

Definition at line 1948 of file gpencil.c.

References CLAMP_MIN, bGPdata::layers, and LISTBASE_FOREACH.

Referenced by BKE_object_material_slot_remove().

◆ BKE_gpencil_material_index_used()

bool BKE_gpencil_material_index_used ( struct bGPdata gpd,
int  index 
)

Remove strokes using a material.

Parameters
gpdGrease pencil data-block
indexIndex of the material
Returns
True if removed

Definition at line 1963 of file gpencil.c.

References bGPdata::layers, and LISTBASE_FOREACH.

Referenced by BKE_object_material_slot_used().

◆ BKE_gpencil_material_remap()

void BKE_gpencil_material_remap ( struct bGPdata gpd,
const unsigned int *  remap,
unsigned int  remap_len 
)

Remap material

Parameters
gpdGrease pencil data-block
remapRemap index
remap_lenRemap length

Definition at line 1978 of file gpencil.c.

References bGPdata::layers, LISTBASE_FOREACH, and MAT_NR_REMAP.

Referenced by BKE_object_material_remap().

◆ BKE_gpencil_merge_materials()

bool BKE_gpencil_merge_materials ( struct Object ob,
float  hue_threshold,
float  sat_threshold,
float  val_threshold,
int *  r_removed 
)

Merge similar materials

Parameters
obGrease pencil object
hue_thresholdThreshold for Hue
sat_thresholdThreshold for Saturation
val_thresholdThreshold for Value
r_removedNumber of materials removed
Returns
True if done

Definition at line 2122 of file gpencil.c.

References BKE_gpencil_material_settings(), BKE_gpencil_merge_materials_table_get(), BKE_object_material_len_p(), BLI_ghash_free(), BLI_ghash_haskey(), BLI_ghash_int_new(), BLI_ghash_len(), BLI_ghash_lookup(), Object::data, MaterialGPencilStyle::flag, GP_LAYER_HIDE, GP_LAYER_UNLOCK_COLOR, GP_MATERIAL_HIDE, GP_MATERIAL_LOCKED, bGPdata::layers, LISTBASE_FOREACH, NULL, POINTER_AS_INT, and POINTER_FROM_INT.

Referenced by BKE_gpencil_convert_curve(), and gpencil_stroke_merge_material_exec().

◆ BKE_gpencil_merge_materials_table_get()

bool BKE_gpencil_merge_materials_table_get ( struct Object ob,
float  hue_threshold,
float  sat_threshold,
float  val_threshold,
struct GHash r_mat_table 
)

Load a table with material conversion index for merged materials.

Parameters
obGrease pencil object.
hue_thresholdThreshold for Hue.
sat_thresholdThreshold for Saturation.
val_thresholdThreshold for Value.
r_mat_tablereturn material table.
Returns
True if done.

Definition at line 2003 of file gpencil.c.

References BKE_gpencil_material(), BKE_object_material_len_p(), BLI_ghash_free(), BLI_ghash_haskey(), BLI_ghash_insert(), BLI_ghash_int_new(), col, compare_ff(), copy_v3_v3(), MaterialGPencilStyle::fill_rgba, MaterialGPencilStyle::fill_style, MaterialGPencilStyle::flag, GP_MATERIAL_FILL_SHOW, GP_MATERIAL_LOCKED, GP_MATERIAL_STROKE_SHOW, Material::gp_style, MaterialGPencilStyle::mode, NULL, POINTER_FROM_INT, rgb_to_hsv_compat_v(), MaterialGPencilStyle::stroke_rgba, MaterialGPencilStyle::stroke_style, and zero_v3().

Referenced by BKE_gpencil_merge_materials().

◆ BKE_gpencil_multiframe_falloff_calc()

float BKE_gpencil_multiframe_falloff_calc ( struct bGPDframe gpf,
int  actnum,
int  f_init,
int  f_end,
struct CurveMapping cur_falloff 
)

Get Falloff factor base on frame range

Parameters
gpfFrame.
actnumNumber of active frame in layer.
f_initNumber of first selected frame.
f_endNumber of last selected frame.
cur_falloffCurve with falloff factors.

Definition at line 1917 of file gpencil.c.

References BKE_curvemapping_evaluateF(), float(), bGPDframe::framenum, and NULL.

Referenced by createTransGPencil_curves(), createTransGPencil_strokes(), gpencil_sculpt_brush_apply_standard(), gpencil_vertexpaint_brush_apply_to_layers(), and gpencil_weightpaint_brush_apply_to_layers().

◆ BKE_gpencil_object_material_ensure()

int BKE_gpencil_object_material_ensure ( struct Main bmain,
struct Object ob,
struct Material material 
)

Assigns the material to object (if not already present) and returns its index (mat_nr).

Parameters
bmainMain pointer
obGrease pencil object
materialMaterial
Returns
Index of the material

Definition at line 1720 of file gpencil.c.

References BKE_gpencil_object_material_index_get(), BKE_MAT_ASSIGN_USERPREF, BKE_object_material_assign(), BKE_object_material_slot_add(), material, and Object::totcol.

Referenced by ED_gpencil_join_objects_exec(), gpencil_copybuf_validate_colormap(), gpencil_layer_duplicate_object_exec(), gpencil_materials_copy_to_object_exec(), and gpencil_stroke_separate_exec().

◆ BKE_gpencil_object_material_ensure_active()

struct Material* BKE_gpencil_object_material_ensure_active ( struct Object ob)

Get active color, and add all default settings if we don't find anything.

Parameters
obGrease pencil object
Returns
Material pointer

Definition at line 1807 of file gpencil.c.

References BKE_gpencil_material_attr_init(), BKE_gpencil_object_material_ensure_from_active_input_material(), Material::gp_style, and NULL.

◆ BKE_gpencil_object_material_ensure_by_name()

struct Material* BKE_gpencil_object_material_ensure_by_name ( struct Main bmain,
struct Object ob,
const char *  name,
int *  r_index 
)

◆ BKE_gpencil_object_material_ensure_from_active_input_brush()

struct Material* BKE_gpencil_object_material_ensure_from_active_input_brush ( struct Main bmain,
struct Object ob,
struct Brush brush 
)

Guaranteed to return a material assigned to object. Returns never NULL.

Parameters
bmainMain pointer
obGrease pencil object.
brushBrush
Returns
Material pointer

Definition at line 1780 of file gpencil.c.

References BKE_gpencil_object_material_ensure_from_active_input_material(), BKE_gpencil_object_material_ensure_from_brush(), BrushGpencilSettings::flag, GP_BRUSH_MATERIAL_PINNED, and Brush::gpencil_settings.

Referenced by BKE_gpencil_object_material_ensure_from_active_input_toolsettings(), gpencil_init_colors(), and gpencil_session_init_fill().

◆ BKE_gpencil_object_material_ensure_from_active_input_material()

struct Material* BKE_gpencil_object_material_ensure_from_active_input_material ( struct Object ob)

Guaranteed to return a material assigned to object. Returns never NULL. Only use this for materials unrelated to user input.

Parameters
obGrease pencil object
Returns
Material pointer

Definition at line 1797 of file gpencil.c.

References Object::actcol, BKE_material_default_gpencil(), and BKE_object_material_get().

Referenced by BKE_gpencil_object_material_ensure_active(), and BKE_gpencil_object_material_ensure_from_active_input_brush().

◆ BKE_gpencil_object_material_ensure_from_active_input_toolsettings()

struct Material* BKE_gpencil_object_material_ensure_from_active_input_toolsettings ( struct Main bmain,
struct Object ob,
struct ToolSettings ts 
)

Guaranteed to return a material assigned to object. Returns never NULL.

Parameters
bmainMain pointer
obGrease pencil object
Returns
Material pointer.

Definition at line 1768 of file gpencil.c.

References BKE_gpencil_object_material_ensure_from_active_input_brush(), Paint::brush, ToolSettings::gp_paint, NULL, and GpPaint::paint.

Referenced by ED_gpencil_add_defaults(), and gpencil_primitive_init().

◆ BKE_gpencil_object_material_ensure_from_brush()

struct Material* BKE_gpencil_object_material_ensure_from_brush ( struct Main bmain,
struct Object ob,
struct Brush brush 
)

◆ BKE_gpencil_object_material_from_brush_get()

struct Material* BKE_gpencil_object_material_from_brush_get ( struct Object ob,
struct Brush brush 
)

Returns the material for a brush with respect to its pinned state.

Parameters
obGrease pencil object
brushBrush
Returns
Material pointer

Definition at line 1748 of file gpencil.c.

References Object::actcol, BKE_gpencil_brush_material_get(), BKE_object_material_get(), BrushGpencilSettings::flag, GP_BRUSH_MATERIAL_PINNED, and Brush::gpencil_settings.

Referenced by gpencil_brush_cursor_draw().

◆ BKE_gpencil_object_material_get_index_from_brush()

int BKE_gpencil_object_material_get_index_from_brush ( struct Object ob,
struct Brush brush 
)

Returns the material index for a brush with respect to its pinned state.

Parameters
obGrease pencil object
brushBrush
Returns
Material index.

Definition at line 1759 of file gpencil.c.

References Object::actcol, BKE_gpencil_object_material_index_get(), BrushGpencilSettings::flag, GP_BRUSH_MATERIAL_PINNED, Brush::gpencil_settings, and BrushGpencilSettings::material.

Referenced by gpencil_primitive_set_initdata(), gpencil_stroke_from_buffer(), and gpencil_stroke_newfrombuffer().

◆ BKE_gpencil_object_material_index_get()

int BKE_gpencil_object_material_index_get ( struct Object ob,
struct Material ma 
)

◆ BKE_gpencil_object_material_index_get_by_name()

int BKE_gpencil_object_material_index_get_by_name ( struct Object ob,
const char *  name 
)

◆ BKE_gpencil_object_material_new()

struct Material* BKE_gpencil_object_material_new ( struct Main bmain,
struct Object ob,
const char *  name,
int *  r_index 
)

Creates a new grease-pencil material and assigns it to object.

Parameters
bmainMain pointer
obGrease pencil object
nameMaterial name
r_indexvalue is set to zero based index of the new material if r_index is not NULL.
Returns
Material pointer.

Definition at line 1734 of file gpencil.c.

References Object::actcol, BKE_gpencil_material_add(), BKE_MAT_ASSIGN_USERPREF, BKE_object_material_assign(), BKE_object_material_slot_add(), Material::id, id_us_min(), bGPDlayer_Mask::name, and Object::totcol.

Referenced by BKE_gpencil_object_material_ensure_by_name(), blender::io::gpencil::GpencilImporter::create_material(), ED_gpencil_trace_data_to_strokes(), eyedropper_add_material(), gpencil_add_from_curve_material(), gpencil_add_material(), gpencil_convert_old_files_exec(), and image_to_gpencil_exec().

◆ BKE_gpencil_palette_ensure()

void BKE_gpencil_palette_ensure ( struct Main bmain,
struct Scene scene 
)

◆ BKE_gpencil_stats_update()

void BKE_gpencil_stats_update ( struct bGPdata gpd)

Calc grease pencil statistics functions.

Parameters
gpdGrease pencil data-block

Definition at line 2180 of file gpencil.c.

References bGPdata::layers, LISTBASE_FOREACH, bGPdata::totframe, bGPdata::totlayer, bGPdata::totpoint, and bGPdata::totstroke.

Referenced by stats_object().

◆ BKE_gpencil_stroke_add()

struct bGPDstroke* BKE_gpencil_stroke_add ( struct bGPDframe gpf,
int  mat_idx,
int  totpoints,
short  thickness,
bool  insert_at_head 
)

Create a new stroke and add to frame.

Parameters
gpfGrease pencil frame
mat_idxMaterial index
totpointsTotal points
thicknessStroke thickness
insert_at_headAdd to the head of the strokes list
Returns
Pointer to new stroke

Definition at line 792 of file gpencil.c.

References BKE_gpencil_stroke_new(), BLI_addhead(), BLI_addtail(), NULL, and bGPDframe::strokes.

Referenced by BKE_gpencil_convert_mesh(), BKE_gpencil_from_image(), BKE_gpencil_stroke_add_existing_style(), ED_gpencil_create_monkey(), ED_gpencil_create_stroke(), ED_gpencil_trace_data_to_strokes(), gpencil_generate_edgeloops(), and lineart_gpencil_generate().

◆ BKE_gpencil_stroke_add_existing_style()

struct bGPDstroke* BKE_gpencil_stroke_add_existing_style ( struct bGPDframe gpf,
struct bGPDstroke existing,
int  mat_idx,
int  totpoints,
short  thickness 
)

Add a stroke and copy the temporary drawing color value from one of the existing stroke.

Parameters
gpfGrease pencil frame
existingStroke with the style to copy
mat_idxMaterial index
totpointsTotal points
thicknessStroke thickness
Returns
Pointer to new stroke

Definition at line 810 of file gpencil.c.

References BKE_gpencil_stroke_add(), and bGPDstroke::runtime.

Referenced by BKE_gpencil_stroke_split().

◆ BKE_gpencil_stroke_copy_settings()

void BKE_gpencil_stroke_copy_settings ( const struct bGPDstroke gps_src,
struct bGPDstroke gps_dst 
)

Make a copy of a given gpencil stroke settings.

◆ BKE_gpencil_stroke_curve_duplicate()

struct bGPDcurve* BKE_gpencil_stroke_curve_duplicate ( struct bGPDcurve gpc_src)

Definition at line 844 of file gpencil.c.

References bGPDcurve::curve_points, MEM_dupallocN, and NULL.

Referenced by BKE_gpencil_stroke_duplicate().

◆ BKE_gpencil_stroke_duplicate()

struct bGPDstroke* BKE_gpencil_stroke_duplicate ( struct bGPDstroke gps_src,
bool  dup_points,
bool  dup_curve 
)

◆ BKE_gpencil_stroke_editcurve_new()

struct bGPDcurve* BKE_gpencil_stroke_editcurve_new ( int  tot_curve_points)

◆ BKE_gpencil_stroke_new()

struct bGPDstroke* BKE_gpencil_stroke_new ( int  mat_idx,
int  totpoints,
short  thickness 
)

◆ BKE_gpencil_stroke_select_check()

bool BKE_gpencil_stroke_select_check ( const struct bGPDstroke gps)

Check if stroke has any point selected

Parameters
gpsGrease pencil stroke
Returns
True if selected

Referenced by gpencil_generic_stroke_select().

◆ BKE_gpencil_stroke_select_index_reset()

void BKE_gpencil_stroke_select_index_reset ( struct bGPDstroke gps)

◆ BKE_gpencil_stroke_select_index_set()

void BKE_gpencil_stroke_select_index_set ( struct bGPdata gpd,
struct bGPDstroke gps 
)

◆ BKE_gpencil_stroke_sync_selection()

void BKE_gpencil_stroke_sync_selection ( struct bGPdata gpd,
struct bGPDstroke gps 
)

◆ BKE_gpencil_stroke_weights_duplicate()

void BKE_gpencil_stroke_weights_duplicate ( struct bGPDstroke gps_src,
struct bGPDstroke gps_dst 
)

Make a copy of a given gpencil weights.

Parameters
gps_srcSource grease pencil stroke
gps_dstDestination grease pencil stroke

Definition at line 834 of file gpencil.c.

References BKE_defvert_array_copy(), BLI_assert, bGPDstroke::dvert, NULL, and bGPDstroke::totpoints.

Referenced by BKE_gpencil_stroke_duplicate(), and gpencil_strokes_copy_exec().

◆ BKE_gpencil_tag()

void BKE_gpencil_tag ( struct bGPdata gpd)

Tag data-block for depsgraph update. Wrapper to avoid include Depsgraph tag functions in other modules.

Parameters
gpdGrease pencil data-block.

Definition at line 506 of file gpencil.c.

References DEG_id_tag_update(), bGPdata::id, ID_RECALC_GEOMETRY, and ID_RECALC_TRANSFORM.

Referenced by insert_gpencil_key().

◆ BKE_gpencil_update_layer_transforms()

void BKE_gpencil_update_layer_transforms ( const struct Depsgraph depsgraph,
struct Object ob 
)

Update parent matrix and local transforms.

Parameters
depsgraphDepsgraph
obGrease pencil object

Referenced by BKE_object_handle_data_update().

◆ BKE_gpencil_update_on_write()

void BKE_gpencil_update_on_write ( bGPdata gpd_orig,
bGPdata gpd_eval 
)

◆ BKE_gpencil_update_orig_pointers()

void BKE_gpencil_update_orig_pointers ( const struct Object ob_orig,
const struct Object ob_eval 
)

Update pointers of eval data to original data to keep references.

Parameters
ob_origOriginal grease pencil object
ob_evalEvaluated grease pencil object

◆ BKE_gpencil_vgroup_remove()

void BKE_gpencil_vgroup_remove ( struct Object ob,
struct bDeformGroup defgroup 
)

◆ BKE_gpencil_visible_stroke_advanced_iter()

void BKE_gpencil_visible_stroke_advanced_iter ( struct ViewLayer view_layer,
struct Object ob,
gpIterCb  layer_cb,
gpIterCb  stroke_cb,
void thunk,
bool  do_onion,
int  cfra 
)

◆ BKE_gpencil_visible_stroke_iter()

void BKE_gpencil_visible_stroke_iter ( struct bGPdata gpd,
gpIterCb  layer_cb,
gpIterCb  stroke_cb,
void thunk 
)

Variable Documentation

◆ BKE_gpencil_batch_cache_dirty_tag_cb

void(* BKE_gpencil_batch_cache_dirty_tag_cb) (struct bGPdata *gpd) ( struct bGPdata gpd)
extern

Definition at line 332 of file gpencil.c.

Referenced by BKE_gpencil_batch_cache_dirty_tag(), and DRW_engines_register().

◆ BKE_gpencil_batch_cache_free_cb

void(* BKE_gpencil_batch_cache_free_cb) (struct bGPdata *gpd) ( struct bGPdata gpd)
extern

Definition at line 333 of file gpencil.c.

Referenced by BKE_gpencil_batch_cache_free(), and DRW_engines_register().