Blender V5.0
BKE_gpencil_legacy.h File Reference

Go to the source code of this file.

Macros

#define GPENCIL_SIMPLIFY(scene)
#define GPENCIL_SIMPLIFY_ONPLAY(playing)
#define GPENCIL_SIMPLIFY_FILL(scene, playing)
#define GPENCIL_SIMPLIFY_FX(scene, playing)
#define GPENCIL_SIMPLIFY_TINT(scene)
#define GPENCIL_SIMPLIFY_AA(scene)
#define GPENCIL_USE_VERTEX_COLOR(toolsettings)
#define GPENCIL_ALPHA_OPACITY_THRESH   0.001f
#define GPENCIL_STRENGTH_MIN   0.003f

Typedefs

typedef enum eGP_GetFrame_Mode eGP_GetFrame_Mode

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_legacy_palette_data (struct ListBase *list)
void BKE_gpencil_free_data (struct bGPdata *gpd, bool free_all)
void BKE_gpencil_free_layer_masks (struct bGPDlayer *gpl)
void BKE_gpencil_tag (struct bGPdata *gpd)
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)
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)
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_frames_sort (struct bGPDlayer *gpl, bool *r_has_duplicate_frames)
void BKE_gpencil_brush_material_set (struct Brush *brush, struct Material *material)
void BKE_gpencil_stroke_weights_duplicate (struct bGPDstroke *gps_src, struct bGPDstroke *gps_dst)
void BKE_gpencil_palette_ensure (struct Main *bmain, struct Scene *scene)
void BKE_gpencil_blend_read_data (struct BlendDataReader *reader, struct bGPdata *gpd)

Macro Definition Documentation

◆ GPENCIL_ALPHA_OPACITY_THRESH

#define GPENCIL_ALPHA_OPACITY_THRESH   0.001f

Definition at line 148 of file BKE_gpencil_legacy.h.

◆ GPENCIL_SIMPLIFY

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

Definition at line 32 of file BKE_gpencil_legacy.h.

◆ GPENCIL_SIMPLIFY_AA

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

Definition at line 45 of file BKE_gpencil_legacy.h.

Referenced by blender::draw::gpencil::Instance::begin_sync().

◆ GPENCIL_SIMPLIFY_FILL

#define GPENCIL_SIMPLIFY_FILL ( scene,
playing )
Value:
((GPENCIL_SIMPLIFY_ONPLAY(playing) && GPENCIL_SIMPLIFY(scene) && \
(scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_FILL)))
#define GPENCIL_SIMPLIFY_ONPLAY(playing)
@ SIMPLIFY_GPENCIL_FILL

Definition at line 37 of file BKE_gpencil_legacy.h.

Referenced by blender::draw::gpencil::Instance::begin_sync().

◆ GPENCIL_SIMPLIFY_FX

#define GPENCIL_SIMPLIFY_FX ( scene,
playing )
Value:
((GPENCIL_SIMPLIFY_ONPLAY(playing) && GPENCIL_SIMPLIFY(scene) && \
(scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_FX)))
@ SIMPLIFY_GPENCIL_FX

Definition at line 40 of file BKE_gpencil_legacy.h.

Referenced by blender::draw::gpencil::Instance::begin_sync().

◆ GPENCIL_SIMPLIFY_ONPLAY

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

Definition at line 34 of file BKE_gpencil_legacy.h.

◆ GPENCIL_SIMPLIFY_TINT

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

Definition at line 43 of file BKE_gpencil_legacy.h.

◆ GPENCIL_STRENGTH_MIN

#define GPENCIL_STRENGTH_MIN   0.003f

Definition at line 149 of file BKE_gpencil_legacy.h.

Referenced by annotation_stroke_newfrombuffer().

◆ GPENCIL_USE_VERTEX_COLOR

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

Definition at line 49 of file BKE_gpencil_legacy.h.

Typedef Documentation

◆ eGP_GetFrame_Mode

Enumeration Type Documentation

◆ eGP_GetFrame_Mode

Enumerator
GP_GETFRAME_USE_PREV 
GP_GETFRAME_ADD_NEW 
GP_GETFRAME_ADD_COPY 

Definition at line 161 of file BKE_gpencil_legacy.h.

Function Documentation

◆ BKE_gpencil_blend_read_data()

◆ 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 1146 of file gpencil_legacy.cc.

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

◆ BKE_gpencil_data_addnew()

◆ 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?

◆ BKE_gpencil_frame_addcopy()

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

Add a copy of the active gp-frame to the given layer.

Parameters
gplGrease pencil layer
cframeFrame number
Returns
Pointer to new frame

Definition at line 510 of file gpencil_legacy.cc.

References bGPDlayer::actframe, BKE_gpencil_frame_addnew(), BKE_gpencil_frame_duplicate(), BKE_gpencil_free_strokes(), BLI_addtail(), BLI_insertlinkbefore(), bGPDframe::framenum, bGPDlayer::frames, LISTBASE_FOREACH, and MEM_freeN().

Referenced by BKE_gpencil_layer_frame_get().

◆ BKE_gpencil_frame_addnew()

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

Add a new gp-frame to the given layer.

Parameters
gplGrease pencil layer
cframeFrame number
Returns
Pointer to new frame

Definition at line 457 of file gpencil_legacy.cc.

References BLI_addtail(), BLI_assert, BLI_insertlinkbefore(), CLOG_ERROR, ListBase::first, bGPDframe::framenum, bGPDlayer::frames, LOG, MEM_callocN(), MEM_freeN(), bGPDframe::next, and state.

Referenced by BKE_gpencil_frame_addcopy(), and BKE_gpencil_layer_frame_get().

◆ 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(), and ED_gpencil_layer_frames_duplicate().

◆ 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 405 of file gpencil_legacy.cc.

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

Referenced by BKE_gpencil_free_data(), and ED_gpencil_anim_copybuf_free().

◆ BKE_gpencil_free_legacy_palette_data()

void BKE_gpencil_free_legacy_palette_data ( struct ListBase * list)

Free all of the palettes & colors (list should be &gpd->palettes or so).

Definition at line 428 of file gpencil_legacy.cc.

References BLI_freelistN(), BLI_listbase_clear(), LISTBASE_FOREACH_MUTABLE, and MEM_freeN().

Referenced by BKE_gpencil_free_data().

◆ BKE_gpencil_free_point_weights()

void BKE_gpencil_free_point_weights ( struct MDeformVert * dvert)

Definition at line 300 of file gpencil_legacy.cc.

References MDeformVert::dw, and MEM_SAFE_FREE.

Referenced by BKE_gpencil_free_stroke_weights().

◆ BKE_gpencil_free_stroke()

◆ BKE_gpencil_free_stroke_editcurve()

void BKE_gpencil_free_stroke_editcurve ( struct bGPDstroke * gps)

Definition at line 324 of file gpencil_legacy.cc.

References bGPDcurve::curve_points, bGPDstroke::editcurve, and MEM_freeN().

Referenced by BKE_gpencil_free_stroke().

◆ 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_layer_active_get()

struct bGPDlayer * BKE_gpencil_layer_active_get ( struct bGPdata * gpd)

◆ BKE_gpencil_layer_active_set()

void BKE_gpencil_layer_active_set ( struct bGPdata * gpd,
struct bGPDlayer * active )

◆ BKE_gpencil_layer_addnew()

◆ BKE_gpencil_layer_delete()

void BKE_gpencil_layer_delete ( struct bGPdata * gpd,
struct bGPDlayer * gpl )

Delete grease pencil layer.

Parameters
gpdGrease pencil data-block
gplGrease pencil layer

Definition at line 1127 of file gpencil_legacy.cc.

References BKE_gpencil_free_frames(), BKE_gpencil_free_layer_masks(), BKE_icon_delete(), BLI_freelinkN(), ELEM, bGPDlayer_Runtime::icon_id, bGPdata::layers, and bGPDlayer::runtime.

Referenced by animchannels_delete_exec(), and gpencil_layer_remove_exec().

◆ 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

◆ BKE_gpencil_layer_frame_delete()

bool BKE_gpencil_layer_frame_delete ( struct bGPDlayer * gpl,
struct bGPDframe * gpf )

Delete the given frame from a layer.

Parameters
gplGrease pencil layer
gpfGrease pencil frame
Returns
True if delete was done

Definition at line 1030 of file gpencil_legacy.cc.

References bGPDlayer::actframe, BKE_gpencil_free_strokes(), BLI_freelinkN(), ELEM, bGPDlayer::frames, and bGPDframe::prev.

Referenced by ED_gpencil_anim_copybuf_paste(), ED_gpencil_layer_frames_delete(), gpencil_actframe_delete_exec(), and blender::ed::transform::posttrans_gpd_clean().

◆ 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 853 of file gpencil_legacy.cc.

References bGPDlayer::frames, and LISTBASE_FOREACH_BACKWARD.

Referenced by ED_gpencil_select_frame().

◆ 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 867 of file gpencil_legacy.cc.

References 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, and bGPDframe::prev.

Referenced by annotation_draw_data_layers(), annotation_paint_initstroke(), ED_gpencil_anim_copybuf_paste(), gpencil_actframe_delete_exec(), insert_gpencil_key(), 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 1082 of file gpencil_legacy.cc.

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

Referenced by ANIM_animdata_update(), and blender::ed::transform::posttrans_gpd_clean().

◆ BKE_gpencil_layer_is_editable()

bool BKE_gpencil_layer_is_editable ( const struct bGPDlayer * gpl)

Check if the given layer is able to be edited or not.

Parameters
gplGrease pencil layer
Returns
True if layer is editable

Referenced by annotation_paint_initstroke().

◆ BKE_gpencil_layer_named_get()

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

Get layer by name

Parameters
gpdGrease pencil data-block
nameLayer name
Returns
Pointer to layer

Definition at line 1053 of file gpencil_legacy.cc.

References BLI_findstring(), bGPdata::layers, name, and offsetof.

◆ BKE_gpencil_palette_ensure()

◆ BKE_gpencil_stroke_duplicate()

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

Make a copy of a given grease-pencil stroke.

Parameters
gps_srcSource grease pencil strokes.
dup_pointsDuplicate points data.
dup_curveDuplicate curve data.
Returns
Pointer to new stroke.

Definition at line 710 of file gpencil_legacy.cc.

References BKE_gpencil_stroke_weights_duplicate(), bGPDstroke::dvert, bGPDstroke::editcurve, MEM_dupallocN(), bGPDstroke::next, bGPDstroke::points, bGPDstroke::prev, and bGPDstroke::triangles.

Referenced by annotation_stroke_newfrombuffer(), BKE_gpencil_frame_duplicate(), BKE_gpencil_stroke_delete_tagged_points(), ED_gpencil_anim_copybuf_paste(), and gpencil_stroke_join_islands().

◆ 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 700 of file gpencil_legacy.cc.

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

Referenced by BKE_gpencil_stroke_duplicate().

◆ 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 449 of file gpencil_legacy.cc.

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

Referenced by insert_gpencil_key().