Blender  V3.3
Classes | Macros | Typedefs | Enumerations | Functions
BKE_gpencil_modifier.h File Reference
#include "BLI_compiler_attrs.h"
#include "DNA_gpencil_modifier_types.h"

Go to the source code of this file.

Classes

struct  GpencilModifierTypeInfo
 
struct  GpencilVirtualModifierData
 
struct  GpencilLineartLimitInfo
 

Macros

#define GPENCIL_MODIFIER_ACTIVE(_md, _is_render)
 
#define GPENCIL_MODIFIER_EDIT(_md, _is_edit)    ((((_md)->mode & eGpencilModifierMode_Editmode) == 0) && (_is_edit))
 
#define GPENCIL_MODIFIER_TYPE_PANEL_PREFIX   "MOD_PT_gpencil_"
 

Typedefs

typedef void(* GreasePencilIDWalkFunc) (void *userData, struct Object *ob, struct ID **idpoin, int cb_flag)
 
typedef void(* GreasePencilTexWalkFunc) (void *userData, struct Object *ob, struct GpencilModifierData *md, const char *propname)
 
typedef struct GpencilModifierTypeInfo GpencilModifierTypeInfo
 
typedef struct GpencilVirtualModifierData GpencilVirtualModifierData
 
typedef struct GpencilLineartLimitInfo GpencilLineartLimitInfo
 

Enumerations

enum  GpencilModifierTypeType { eGpencilModifierTypeType_None , eGpencilModifierTypeType_Gpencil }
 
enum  GpencilModifierTypeFlag {
  eGpencilModifierTypeFlag_SupportsEditmode = (1 << 1) , eGpencilModifierTypeFlag_EnableInEditmode = (1 << 2) , eGpencilModifierTypeFlag_Single = (1 << 4) , eGpencilModifierTypeFlag_NoUserAdd = (1 << 5) ,
  eGpencilModifierTypeFlag_NoApply = (1 << 6)
}
 

Functions

void BKE_gpencil_modifier_init (void)
 
void BKE_gpencil_modifierType_panel_id (GpencilModifierType type, char *r_idname)
 
void BKE_gpencil_modifier_panel_expand (struct GpencilModifierData *md)
 
const GpencilModifierTypeInfoBKE_gpencil_modifier_get_info (GpencilModifierType type)
 
struct GpencilModifierDataBKE_gpencil_modifier_new (int type)
 
void BKE_gpencil_modifier_free_ex (struct GpencilModifierData *md, int flag)
 
void BKE_gpencil_modifier_free (struct GpencilModifierData *md)
 
bool BKE_gpencil_modifier_unique_name (struct ListBase *modifiers, struct GpencilModifierData *gmd)
 
bool BKE_gpencil_modifier_depends_ontime (struct GpencilModifierData *md)
 
struct GpencilModifierDataBKE_gpencil_modifiers_findby_type (struct Object *ob, GpencilModifierType type)
 
struct GpencilModifierDataBKE_gpencil_modifiers_findby_name (struct Object *ob, const char *name)
 
void BKE_gpencil_modifier_copydata_generic (const struct GpencilModifierData *md_src, struct GpencilModifierData *md_dst)
 
void BKE_gpencil_modifier_copydata (struct GpencilModifierData *md, struct GpencilModifierData *target)
 
void BKE_gpencil_modifier_copydata_ex (struct GpencilModifierData *md, struct GpencilModifierData *target, int flag)
 
void BKE_gpencil_modifier_set_error (struct GpencilModifierData *md, const char *format,...) ATTR_PRINTF_FORMAT(2
 
void void BKE_gpencil_modifiers_foreach_ID_link (struct Object *ob, GreasePencilIDWalkFunc walk, void *userData)
 
void BKE_gpencil_modifiers_foreach_tex_link (struct Object *ob, GreasePencilTexWalkFunc walk, void *userData)
 
bool BKE_gpencil_modifier_is_nonlocal_in_liboverride (const struct Object *ob, const struct GpencilModifierData *gmd)
 
struct GpencilModifierDataBKE_gpencil_modifiers_get_virtual_modifierlist (const struct Object *ob, struct GpencilVirtualModifierData *data)
 
bool BKE_gpencil_has_geometry_modifiers (struct Object *ob)
 
bool BKE_gpencil_has_time_modifiers (struct Object *ob)
 
bool BKE_gpencil_has_transform_modifiers (struct Object *ob)
 
GpencilLineartLimitInfo BKE_gpencil_get_lineart_modifier_limits (const struct Object *ob)
 
void BKE_gpencil_set_lineart_modifier_limits (struct GpencilModifierData *md, const struct GpencilLineartLimitInfo *info, bool is_first_lineart)
 
bool BKE_gpencil_is_first_lineart_in_stack (const struct Object *ob, const struct GpencilModifierData *md)
 
void BKE_gpencil_cache_data_init (struct Depsgraph *depsgraph, struct Object *ob)
 
void BKE_gpencil_cache_data_clear (struct Object *ob)
 
void BKE_gpencil_modifiers_calc (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
 
void BKE_gpencil_prepare_eval_data (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
 
struct bGPDframeBKE_gpencil_frame_retime_get (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct bGPDlayer *gpl)
 
int BKE_gpencil_time_modifier_cfra (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct bGPDlayer *gpl, int cfra, bool is_render)
 
void BKE_gpencil_modifier_blend_write (struct BlendWriter *writer, struct ListBase *modbase)
 
void BKE_gpencil_modifier_blend_read_data (struct BlendDataReader *reader, struct ListBase *lb)
 
void BKE_gpencil_modifier_blend_read_lib (struct BlendLibReader *reader, struct Object *ob)
 

Macro Definition Documentation

◆ GPENCIL_MODIFIER_ACTIVE

#define GPENCIL_MODIFIER_ACTIVE (   _md,
  _is_render 
)
Value:
((((_md)->mode & eGpencilModifierMode_Realtime) && (_is_render == false)) || \
(((_md)->mode & eGpencilModifierMode_Render) && (_is_render == true)))
@ eGpencilModifierMode_Render
@ eGpencilModifierMode_Realtime

Definition at line 33 of file BKE_gpencil_modifier.h.

◆ GPENCIL_MODIFIER_EDIT

#define GPENCIL_MODIFIER_EDIT (   _md,
  _is_edit 
)     ((((_md)->mode & eGpencilModifierMode_Editmode) == 0) && (_is_edit))

Definition at line 36 of file BKE_gpencil_modifier.h.

◆ GPENCIL_MODIFIER_TYPE_PANEL_PREFIX

#define GPENCIL_MODIFIER_TYPE_PANEL_PREFIX   "MOD_PT_gpencil_"

Definition at line 236 of file BKE_gpencil_modifier.h.

Typedef Documentation

◆ GpencilLineartLimitInfo

◆ GpencilModifierTypeInfo

◆ GpencilVirtualModifierData

◆ GreasePencilIDWalkFunc

typedef void(* GreasePencilIDWalkFunc) (void *userData, struct Object *ob, struct ID **idpoin, int cb_flag)

Definition at line 74 of file BKE_gpencil_modifier.h.

◆ GreasePencilTexWalkFunc

typedef void(* GreasePencilTexWalkFunc) (void *userData, struct Object *ob, struct GpencilModifierData *md, const char *propname)

Definition at line 78 of file BKE_gpencil_modifier.h.

Enumeration Type Documentation

◆ GpencilModifierTypeFlag

Enumerator
eGpencilModifierTypeFlag_SupportsEditmode 
eGpencilModifierTypeFlag_EnableInEditmode 

For modifiers that support edit-mode this determines if the modifier should be enabled by default in edit-mode. This should only be used by modifiers that are relatively speedy and also generally used in edit-mode, otherwise let the user enable it by hand.

eGpencilModifierTypeFlag_Single 

For modifiers that require original data and so cannot be placed after any non-deform modifier. Max one per type.

eGpencilModifierTypeFlag_NoUserAdd 

Can't be added manually by user.

eGpencilModifierTypeFlag_NoApply 

Can't be applied.

Definition at line 47 of file BKE_gpencil_modifier.h.

◆ GpencilModifierTypeType

Enumerator
eGpencilModifierTypeType_None 

Should not be used, only for None modifier type.

eGpencilModifierTypeType_Gpencil 

Grease pencil modifiers.

Definition at line 39 of file BKE_gpencil_modifier.h.

Function Documentation

◆ BKE_gpencil_cache_data_clear()

void BKE_gpencil_cache_data_clear ( struct Object ob)

◆ BKE_gpencil_cache_data_init()

void BKE_gpencil_cache_data_init ( struct Depsgraph depsgraph,
struct Object ob 
)

◆ BKE_gpencil_frame_retime_get()

struct bGPDframe* BKE_gpencil_frame_retime_get ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object ob,
struct bGPDlayer gpl 
)

Get the current frame re-timed with time modifiers.

Parameters
depsgraphCurrent depsgraph.
sceneCurrent scene.
obGrease pencil object.
gplGrease pencil layer.
Returns
New frame number.

Definition at line 607 of file gpencil_modifier.c.

References BKE_gpencil_layer_frame_get(), depsgraph, GP_GETFRAME_USE_PREV, gpencil_remap_time_get(), and scene.

Referenced by BKE_gpencil_modifiers_calc(), generateStrokes(), and GPENCIL_cache_populate().

◆ BKE_gpencil_get_lineart_modifier_limits()

GpencilLineartLimitInfo BKE_gpencil_get_lineart_modifier_limits ( const struct Object ob)

◆ BKE_gpencil_has_geometry_modifiers()

bool BKE_gpencil_has_geometry_modifiers ( struct Object ob)

Check if object has grease pencil Geometry modifiers.

Parameters
obGrease pencil object.
Returns
True if exist.

Definition at line 171 of file gpencil_modifier.c.

References BKE_gpencil_modifier_get_info(), GpencilModifierTypeInfo::generateStrokes, Object::greasepencil_modifiers, and LISTBASE_FOREACH.

◆ BKE_gpencil_has_time_modifiers()

bool BKE_gpencil_has_time_modifiers ( struct Object ob)

Check if object has grease pencil Time modifiers.

Parameters
obGrease pencil object.
Returns
True if exist.

Definition at line 183 of file gpencil_modifier.c.

References BKE_gpencil_modifier_get_info(), Object::greasepencil_modifiers, LISTBASE_FOREACH, and GpencilModifierTypeInfo::remapTime.

Referenced by BKE_gpencil_modifiers_calc(), GPENCIL_cache_populate(), and gpencil_remap_time_get().

◆ BKE_gpencil_has_transform_modifiers()

bool BKE_gpencil_has_transform_modifiers ( struct Object ob)

Check if object has grease pencil transform stroke modifiers.

Parameters
obGrease pencil object.
Returns
True if exist.

Definition at line 195 of file gpencil_modifier.c.

References eGpencilModifierType_Armature, eGpencilModifierType_Hook, eGpencilModifierType_Lattice, eGpencilModifierType_Offset, ELEM, GPENCIL_MODIFIER_ACTIVE, GPENCIL_MODIFIER_EDIT, Object::greasepencil_modifiers, and LISTBASE_FOREACH.

Referenced by gpencil_sculpt_brush_init().

◆ BKE_gpencil_is_first_lineart_in_stack()

bool BKE_gpencil_is_first_lineart_in_stack ( const struct Object ob,
const struct GpencilModifierData md 
)

◆ BKE_gpencil_modifier_blend_read_data()

void BKE_gpencil_modifier_blend_read_data ( struct BlendDataReader reader,
struct ListBase lb 
)

◆ BKE_gpencil_modifier_blend_read_lib()

void BKE_gpencil_modifier_blend_read_lib ( struct BlendLibReader reader,
struct Object ob 
)

◆ BKE_gpencil_modifier_blend_write()

void BKE_gpencil_modifier_blend_write ( struct BlendWriter writer,
struct ListBase modbase 
)

◆ BKE_gpencil_modifier_copydata()

void BKE_gpencil_modifier_copydata ( struct GpencilModifierData md,
struct GpencilModifierData target 
)

Copy grease pencil modifier data.

Parameters
mdSource modifier data.
targetTarget modifier data.

Definition at line 507 of file gpencil_modifier.c.

References BKE_gpencil_modifier_copydata_ex().

Referenced by ED_object_gpencil_modifier_copy().

◆ BKE_gpencil_modifier_copydata_ex()

void BKE_gpencil_modifier_copydata_ex ( struct GpencilModifierData md,
struct GpencilModifierData target,
int  flag 
)

◆ BKE_gpencil_modifier_copydata_generic()

void BKE_gpencil_modifier_copydata_generic ( const struct GpencilModifierData md_src,
struct GpencilModifierData md_dst 
)

Generic grease pencil modifier copy data.

Parameters
md_srcSource modifier data.
md_dstTarget modifier data.

Referenced by copyData().

◆ BKE_gpencil_modifier_depends_ontime()

bool BKE_gpencil_modifier_depends_ontime ( struct GpencilModifierData md)

Check if grease pencil modifier depends on time.

Parameters
mdModifier data.
Returns
True if depends on time.

Definition at line 426 of file gpencil_modifier.c.

References BKE_gpencil_modifier_get_info(), GpencilModifierTypeInfo::dependsOnTime, and GpencilModifierData::type.

Referenced by blender::deg::DepsgraphRelationBuilder::build_object_data_geometry().

◆ BKE_gpencil_modifier_free()

void BKE_gpencil_modifier_free ( struct GpencilModifierData md)

Free grease pencil modifier data

Parameters
mdModifier data.

Definition at line 407 of file gpencil_modifier.c.

References BKE_gpencil_modifier_free_ex().

Referenced by BKE_gpencil_modifier_init(), ED_object_gpencil_modifier_apply(), and gpencil_object_modifier_remove().

◆ BKE_gpencil_modifier_free_ex()

void BKE_gpencil_modifier_free_ex ( struct GpencilModifierData md,
int  flag 
)

◆ BKE_gpencil_modifier_get_info()

const GpencilModifierTypeInfo* BKE_gpencil_modifier_get_info ( GpencilModifierType  type)

◆ BKE_gpencil_modifier_init()

void BKE_gpencil_modifier_init ( void  )

◆ BKE_gpencil_modifier_is_nonlocal_in_liboverride()

bool BKE_gpencil_modifier_is_nonlocal_in_liboverride ( const struct Object ob,
const struct GpencilModifierData gmd 
)

Check whether given modifier is not local (i.e. from linked data) when the object is a library override.

Parameters
gmdMay be NULL, in which case we consider it as a non-local modifier case.

Referenced by gpencil_edit_modifier_poll_generic().

◆ BKE_gpencil_modifier_new()

struct GpencilModifierData* BKE_gpencil_modifier_new ( int  type)

◆ BKE_gpencil_modifier_panel_expand()

void BKE_gpencil_modifier_panel_expand ( struct GpencilModifierData md)

◆ BKE_gpencil_modifier_set_error()

void BKE_gpencil_modifier_set_error ( struct GpencilModifierData md,
const char *  format,
  ... 
)

Set grease pencil modifier error.

Parameters
mdModifier data.
formatFormat.

Referenced by panel_draw().

◆ BKE_gpencil_modifier_unique_name()

bool BKE_gpencil_modifier_unique_name ( struct ListBase modifiers,
struct GpencilModifierData gmd 
)

◆ BKE_gpencil_modifiers_calc()

void BKE_gpencil_modifiers_calc ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object ob 
)

◆ BKE_gpencil_modifiers_findby_name()

struct GpencilModifierData* BKE_gpencil_modifiers_findby_name ( struct Object ob,
const char *  name 
)

Find grease pencil modifier by name.

Parameters
obGrease pencil object.
nameName to find.
Returns
Pointer to modifier.

Definition at line 580 of file gpencil_modifier.c.

References BLI_findstring(), and Object::greasepencil_modifiers.

Referenced by gpencil_edit_modifier_property_get().

◆ BKE_gpencil_modifiers_findby_type()

struct GpencilModifierData* BKE_gpencil_modifiers_findby_type ( struct Object ob,
GpencilModifierType  type 
)

◆ BKE_gpencil_modifiers_foreach_ID_link()

void void BKE_gpencil_modifiers_foreach_ID_link ( struct Object ob,
GreasePencilIDWalkFunc  walk,
void userData 
)

◆ BKE_gpencil_modifiers_foreach_tex_link()

void BKE_gpencil_modifiers_foreach_tex_link ( struct Object ob,
GreasePencilTexWalkFunc  walk,
void userData 
)

Link grease pencil modifier related Texts.

Parameters
obGrease pencil object.
walkWalk option.
userDataUser data.

Definition at line 565 of file gpencil_modifier.c.

References BKE_gpencil_modifier_get_info(), ListBase::first, GpencilModifierTypeInfo::foreachTexLink, Object::greasepencil_modifiers, GpencilModifierData::next, and GpencilModifierData::type.

Referenced by buttons_texture_users_from_context().

◆ BKE_gpencil_modifiers_get_virtual_modifierlist()

struct GpencilModifierData* BKE_gpencil_modifiers_get_virtual_modifierlist ( const struct Object ob,
struct GpencilVirtualModifierData data 
)

This is to include things that are not modifiers in the evaluation of the modifier stack, for example parenting to an armature or lattice without having a real modifier.

Referenced by BKE_modifiers_is_deformed_by_armature(), ED_armature_pose_select_in_wpaint_mode(), ED_object_posemode_set_for_weight_paint(), and view3d_opengl_select_ex().

◆ BKE_gpencil_modifierType_panel_id()

void BKE_gpencil_modifierType_panel_id ( GpencilModifierType  type,
char *  r_idname 
)

Get the idname of the modifier type's panel, which was defined in the panelRegister callback.

Parameters
typeType of modifier.
r_idnameID name.

Definition at line 444 of file gpencil_modifier.c.

References BKE_gpencil_modifier_get_info(), GPENCIL_MODIFIER_TYPE_PANEL_PREFIX, GpencilModifierTypeInfo::name, and type.

Referenced by gpencil_modifier_panel_id(), and gpencil_modifier_panel_register().

◆ BKE_gpencil_prepare_eval_data()

void BKE_gpencil_prepare_eval_data ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object ob 
)

◆ BKE_gpencil_set_lineart_modifier_limits()

void BKE_gpencil_set_lineart_modifier_limits ( struct GpencilModifierData md,
const struct GpencilLineartLimitInfo info,
bool  is_first_lineart 
)

◆ BKE_gpencil_time_modifier_cfra()

int BKE_gpencil_time_modifier_cfra ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object ob,
struct bGPDlayer gpl,
int  cfra,
bool  is_render 
)