Blender  V3.3
BKE_gpencil_modifier.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 #pragma once
3 
8 #include "BLI_compiler_attrs.h"
9 #include "DNA_gpencil_modifier_types.h" /* needed for all enum typdefs */
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 struct ARegionType;
16 struct BlendDataReader;
17 struct BlendLibReader;
18 struct BlendWriter;
19 struct Depsgraph;
20 struct GpencilModifierData;
21 struct ID;
22 struct ListBase;
23 struct Main;
25 struct Object;
26 struct Scene;
27 /* NOTE: bakeModifier() called from UI:
28  * needs to create new data-blocks, hence the need for this. */
29 struct bGPDframe;
30 struct bGPDlayer;
31 struct bGPDstroke;
32 
33 #define GPENCIL_MODIFIER_ACTIVE(_md, _is_render) \
34  ((((_md)->mode & eGpencilModifierMode_Realtime) && (_is_render == false)) || \
35  (((_md)->mode & eGpencilModifierMode_Render) && (_is_render == true)))
36 #define GPENCIL_MODIFIER_EDIT(_md, _is_edit) \
37  ((((_md)->mode & eGpencilModifierMode_Editmode) == 0) && (_is_edit))
38 
39 typedef enum {
42 
46 
47 typedef enum {
48  /* eGpencilModifierTypeFlag_SupportsMapping = (1 << 0), */ /* UNUSED */
50 
58 
63  /* eGpencilModifierTypeFlag_RequiresOriginalData = (1 << 3), */ /* UNUSED */
64 
67 
73 
74 typedef void (*GreasePencilIDWalkFunc)(void *userData,
75  struct Object *ob,
76  struct ID **idpoin,
77  int cb_flag);
78 typedef void (*GreasePencilTexWalkFunc)(void *userData,
79  struct Object *ob,
80  struct GpencilModifierData *md,
81  const char *propname);
82 
83 typedef struct GpencilModifierTypeInfo {
85  char name[32];
86 
91  char struct_name[32];
92 
95 
98 
99  /********************* Non-optional functions *********************/
100 
105  void (*copyData)(const struct GpencilModifierData *md, struct GpencilModifierData *target);
106 
120  struct Depsgraph *depsgraph,
121  struct Object *ob,
122  struct bGPDlayer *gpl,
123  struct bGPDframe *gpf,
124  struct bGPDstroke *gps);
125 
131  struct Depsgraph *depsgraph,
132  struct Object *ob);
133 
141  void (*bakeModifier)(struct Main *bmain,
142  struct Depsgraph *depsgraph,
143  struct GpencilModifierData *md,
144  struct Object *ob);
145 
146  /********************* Optional functions *********************/
147 
155  int (*remapTime)(struct GpencilModifierData *md,
156  struct Depsgraph *depsgraph,
157  struct Scene *scene,
158  struct Object *ob,
159  struct bGPDlayer *gpl,
160  int cfra);
161 
169 
177 
187  bool (*isDisabled)(struct GpencilModifierData *md, int userRenderParams);
188 
195  const struct ModifierUpdateDepsgraphContext *ctx,
196  int mode);
197 
205 
215  struct Object *ob,
217  void *userData);
218 
228  struct Object *ob,
230  void *userData);
231 
232  /* Register the panel types for the modifier's UI. */
233  void (*panelRegister)(struct ARegionType *region_type);
235 
236 #define GPENCIL_MODIFIER_TYPE_PANEL_PREFIX "MOD_PT_gpencil_"
237 
241 void BKE_gpencil_modifier_init(void);
242 
274 /* check unique name */
275 bool BKE_gpencil_modifier_unique_name(struct ListBase *modifiers, struct GpencilModifierData *gmd);
290 struct GpencilModifierData *BKE_gpencil_modifiers_findby_name(struct Object *ob, const char *name);
297  struct GpencilModifierData *md_dst);
304  struct GpencilModifierData *target);
312  struct GpencilModifierData *target,
313  int flag);
320  ATTR_PRINTF_FORMAT(2, 3);
329  void *userData);
338  void *userData);
339 
347  const struct GpencilModifierData *gmd);
348 
353 
359  const struct Object *ob, struct GpencilVirtualModifierData *data);
360 
372 bool BKE_gpencil_has_time_modifiers(struct Object *ob);
379 
380 /* Stores the maximum calculation range in the whole modifier stack for line art so the cache can
381  * cover everything that will be visible. */
382 typedef struct GpencilLineartLimitInfo {
383  char min_level;
384  char max_level;
385  short edge_types;
389 
391 
393  const struct GpencilLineartLimitInfo *info,
394  bool is_first_lineart);
396  const struct GpencilModifierData *md);
397 
402 void BKE_gpencil_cache_data_init(struct Depsgraph *depsgraph, struct Object *ob);
407 void BKE_gpencil_cache_data_clear(struct Object *ob);
408 
416  struct Scene *scene,
417  struct Object *ob);
418 
426  struct Scene *scene,
427  struct Object *ob);
428 
438  struct Scene *scene,
439  struct Object *ob,
440  struct bGPDlayer *gpl);
445  struct Scene *scene,
446  struct Object *ob,
447  struct bGPDlayer *gpl,
448  int cfra,
449  bool is_render);
450 
451 void BKE_gpencil_modifier_blend_write(struct BlendWriter *writer, struct ListBase *modbase);
452 void BKE_gpencil_modifier_blend_read_data(struct BlendDataReader *reader, struct ListBase *lb);
453 void BKE_gpencil_modifier_blend_read_lib(struct BlendLibReader *reader, struct Object *ob);
454 
455 #ifdef __cplusplus
456 }
457 #endif
void BKE_gpencil_modifier_free(struct GpencilModifierData *md)
bool BKE_gpencil_has_transform_modifiers(struct Object *ob)
bool BKE_gpencil_has_time_modifiers(struct Object *ob)
struct GpencilModifierData * BKE_gpencil_modifiers_get_virtual_modifierlist(const struct Object *ob, struct GpencilVirtualModifierData *data)
void void BKE_gpencil_modifiers_foreach_ID_link(struct Object *ob, GreasePencilIDWalkFunc walk, void *userData)
void BKE_gpencil_modifier_copydata_generic(const struct GpencilModifierData *md_src, struct GpencilModifierData *md_dst)
bool BKE_gpencil_modifier_unique_name(struct ListBase *modifiers, struct GpencilModifierData *gmd)
void BKE_gpencil_modifierType_panel_id(GpencilModifierType type, char *r_idname)
void BKE_gpencil_modifiers_foreach_tex_link(struct Object *ob, GreasePencilTexWalkFunc walk, void *userData)
void(* GreasePencilTexWalkFunc)(void *userData, struct Object *ob, struct GpencilModifierData *md, const char *propname)
void BKE_gpencil_modifier_init(void)
void BKE_gpencil_modifier_set_error(struct GpencilModifierData *md, const char *format,...) ATTR_PRINTF_FORMAT(2
struct GpencilModifierTypeInfo GpencilModifierTypeInfo
GpencilModifierTypeFlag
@ eGpencilModifierTypeFlag_Single
@ eGpencilModifierTypeFlag_SupportsEditmode
@ eGpencilModifierTypeFlag_EnableInEditmode
@ eGpencilModifierTypeFlag_NoUserAdd
@ eGpencilModifierTypeFlag_NoApply
struct bGPDframe * BKE_gpencil_frame_retime_get(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct bGPDlayer *gpl)
void BKE_gpencil_cache_data_clear(struct Object *ob)
struct GpencilModifierData * BKE_gpencil_modifiers_findby_name(struct Object *ob, const char *name)
GpencilModifierTypeType
@ eGpencilModifierTypeType_Gpencil
@ eGpencilModifierTypeType_None
void BKE_gpencil_modifier_copydata_ex(struct GpencilModifierData *md, struct GpencilModifierData *target, int flag)
void BKE_gpencil_cache_data_init(struct Depsgraph *depsgraph, struct Object *ob)
void BKE_gpencil_prepare_eval_data(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
int BKE_gpencil_time_modifier_cfra(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct bGPDlayer *gpl, int cfra, bool is_render)
bool BKE_gpencil_modifier_depends_ontime(struct GpencilModifierData *md)
struct GpencilVirtualModifierData GpencilVirtualModifierData
GpencilLineartLimitInfo BKE_gpencil_get_lineart_modifier_limits(const struct Object *ob)
bool BKE_gpencil_modifier_is_nonlocal_in_liboverride(const struct Object *ob, const struct GpencilModifierData *gmd)
void BKE_gpencil_modifier_blend_read_lib(struct BlendLibReader *reader, struct Object *ob)
struct GpencilModifierData * BKE_gpencil_modifiers_findby_type(struct Object *ob, GpencilModifierType type)
void BKE_gpencil_modifier_copydata(struct GpencilModifierData *md, struct GpencilModifierData *target)
void BKE_gpencil_modifier_blend_read_data(struct BlendDataReader *reader, struct ListBase *lb)
bool BKE_gpencil_has_geometry_modifiers(struct Object *ob)
struct GpencilLineartLimitInfo GpencilLineartLimitInfo
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_modifier_blend_write(struct BlendWriter *writer, struct ListBase *modbase)
void(* GreasePencilIDWalkFunc)(void *userData, struct Object *ob, struct ID **idpoin, int cb_flag)
void BKE_gpencil_modifier_panel_expand(struct GpencilModifierData *md)
void BKE_gpencil_modifier_free_ex(struct GpencilModifierData *md, int flag)
const GpencilModifierTypeInfo * BKE_gpencil_modifier_get_info(GpencilModifierType type)
void BKE_gpencil_modifiers_calc(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
struct GpencilModifierData * BKE_gpencil_modifier_new(int type)
size_t ATTR_PRINTF_FORMAT(3, 4)
struct Depsgraph Depsgraph
Definition: DEG_depsgraph.h:35
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Scene scene
const Depsgraph * depsgraph
SyclQueue void void size_t num_bytes void
format
Definition: logImageCore.h:38
void(* bakeModifier)(struct Main *bmain, struct Depsgraph *depsgraph, struct GpencilModifierData *md, struct Object *ob)
void(* generateStrokes)(struct GpencilModifierData *md, struct Depsgraph *depsgraph, struct Object *ob)
GpencilModifierTypeType type
GpencilModifierTypeFlag flags
void(* initData)(struct GpencilModifierData *md)
void(* copyData)(const struct GpencilModifierData *md, struct GpencilModifierData *target)
void(* freeData)(struct GpencilModifierData *md)
bool(* dependsOnTime)(struct GpencilModifierData *md)
void(* foreachIDLink)(struct GpencilModifierData *md, struct Object *ob, GreasePencilIDWalkFunc walk, void *userData)
bool(* isDisabled)(struct GpencilModifierData *md, int userRenderParams)
void(* updateDepsgraph)(struct GpencilModifierData *md, const struct ModifierUpdateDepsgraphContext *ctx, int mode)
void(* deformStroke)(struct GpencilModifierData *md, struct Depsgraph *depsgraph, struct Object *ob, struct bGPDlayer *gpl, struct bGPDframe *gpf, struct bGPDstroke *gps)
void(* foreachTexLink)(struct GpencilModifierData *md, struct Object *ob, GreasePencilTexWalkFunc walk, void *userData)
int(* remapTime)(struct GpencilModifierData *md, struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct bGPDlayer *gpl, int cfra)
void(* panelRegister)(struct ARegionType *region_type)
ArmatureGpencilModifierData amd
LatticeGpencilModifierData lmd
Definition: DNA_ID.h:368
Definition: BKE_main.h:121