Blender  V2.93
BKE_gpencil_modifier.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  */
16 #pragma once
17 
22 #include "BLI_compiler_attrs.h"
23 #include "DNA_gpencil_modifier_types.h" /* needed for all enum typdefs */
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 struct ARegionType;
30 struct BlendDataReader;
31 struct BlendLibReader;
32 struct BlendWriter;
33 struct Depsgraph;
34 struct GpencilModifierData;
35 struct ID;
36 struct ListBase;
37 struct Main;
39 struct Object;
40 struct Scene;
41 /* NOTE: bakeModifier() called from UI:
42  * needs to create new data-blocks, hence the need for this. */
43 struct bGPDframe;
44 struct bGPDlayer;
45 struct bGPDstroke;
46 
47 #define GPENCIL_MODIFIER_ACTIVE(_md, _is_render) \
48  ((((_md)->mode & eGpencilModifierMode_Realtime) && (_is_render == false)) || \
49  (((_md)->mode & eGpencilModifierMode_Render) && (_is_render == true)))
50 #define GPENCIL_MODIFIER_EDIT(_md, _is_edit) \
51  ((((_md)->mode & eGpencilModifierMode_Editmode) == 0) && (_is_edit))
52 
53 typedef enum {
56 
60 
61 typedef enum {
62  /* eGpencilModifierTypeFlag_SupportsMapping = (1 << 0), */ /* UNUSED */
64 
72 
77  /* eGpencilModifierTypeFlag_RequiresOriginalData = (1 << 3), */ /* UNUSED */
78 
81 
87 
88 typedef void (*GreasePencilIDWalkFunc)(void *userData,
89  struct Object *ob,
90  struct ID **idpoin,
91  int cb_flag);
92 typedef void (*GreasePencilTexWalkFunc)(void *userData,
93  struct Object *ob,
94  struct GpencilModifierData *md,
95  const char *propname);
96 
97 typedef struct GpencilModifierTypeInfo {
99  char name[32];
100 
105  char struct_name[32];
106 
109 
112 
113  /********************* Non-optional functions *********************/
114 
119  void (*copyData)(const struct GpencilModifierData *md, struct GpencilModifierData *target);
120 
133  void (*deformStroke)(struct GpencilModifierData *md,
134  struct Depsgraph *depsgraph,
135  struct Object *ob,
136  struct bGPDlayer *gpl,
137  struct bGPDframe *gpf,
138  struct bGPDstroke *gps);
139 
145  struct Depsgraph *depsgraph,
146  struct Object *ob);
147 
155  void (*bakeModifier)(struct Main *bmain,
156  struct Depsgraph *depsgraph,
157  struct GpencilModifierData *md,
158  struct Object *ob);
159 
160  /********************* Optional functions *********************/
161 
169  int (*remapTime)(struct GpencilModifierData *md,
170  struct Depsgraph *depsgraph,
171  struct Scene *scene,
172  struct Object *ob,
173  struct bGPDlayer *gpl,
174  int cfra);
175 
182  void (*initData)(struct GpencilModifierData *md);
183 
190  void (*freeData)(struct GpencilModifierData *md);
191 
201  bool (*isDisabled)(struct GpencilModifierData *md, int userRenderParams);
202 
209  const struct ModifierUpdateDepsgraphContext *ctx,
210  const int mode);
211 
218  bool (*dependsOnTime)(struct GpencilModifierData *md);
219 
228  void (*foreachIDLink)(struct GpencilModifierData *md,
229  struct Object *ob,
231  void *userData);
232 
242  struct Object *ob,
244  void *userData);
245 
246  /* Register the panel types for the modifier's UI. */
247  void (*panelRegister)(struct ARegionType *region_type);
249 
250 #define GPENCIL_MODIFIER_TYPE_PANEL_PREFIX "MOD_PT_gpencil_"
251 
252 /* Initialize modifier's global data (type info and some common global storage). */
253 void BKE_gpencil_modifier_init(void);
254 
259 void BKE_gpencil_modifier_free_ex(struct GpencilModifierData *md, const int flag);
261 bool BKE_gpencil_modifier_unique_name(struct ListBase *modifiers, struct GpencilModifierData *gmd);
265 struct GpencilModifierData *BKE_gpencil_modifiers_findby_name(struct Object *ob, const char *name);
267  struct GpencilModifierData *md_dst);
269  struct GpencilModifierData *target);
271  struct GpencilModifierData *target,
272  const int flag);
274  ATTR_PRINTF_FORMAT(2, 3);
277  void *userData);
280  void *userData);
281 
283  const struct GpencilModifierData *gmd);
284 
289 
291  const struct Object *ob, struct GpencilVirtualModifierData *data);
292 
294 bool BKE_gpencil_has_time_modifiers(struct Object *ob);
296 
297 void BKE_gpencil_lattice_init(struct Object *ob);
298 void BKE_gpencil_lattice_clear(struct Object *ob);
299 
301  struct Scene *scene,
302  struct Object *ob);
303 
305  struct Scene *scene,
306  struct Object *ob);
307 
309  struct Scene *scene,
310  struct Object *ob,
311  struct bGPDlayer *gpl);
312 
313 void BKE_gpencil_modifier_blend_write(struct BlendWriter *writer, struct ListBase *modbase);
314 void BKE_gpencil_modifier_blend_read_data(struct BlendDataReader *reader, struct ListBase *lb);
315 void BKE_gpencil_modifier_blend_read_lib(struct BlendLibReader *reader, struct Object *ob);
316 
317 #ifdef __cplusplus
318 }
319 #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_lattice_clear(struct Object *ob)
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_modifier_copydata_ex(struct GpencilModifierData *md, struct GpencilModifierData *target, const int flag)
struct GpencilModifierData * BKE_gpencil_modifiers_findby_name(struct Object *ob, const char *name)
GpencilModifierTypeType
@ eGpencilModifierTypeType_Gpencil
@ eGpencilModifierTypeType_None
void BKE_gpencil_prepare_eval_data(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
bool BKE_gpencil_modifier_depends_ontime(struct GpencilModifierData *md)
struct GpencilVirtualModifierData GpencilVirtualModifierData
bool BKE_gpencil_modifier_is_nonlocal_in_liboverride(const struct Object *ob, const struct GpencilModifierData *gmd)
void BKE_gpencil_lattice_init(struct Object *ob)
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)
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)
const GpencilModifierTypeInfo * BKE_gpencil_modifier_get_info(GpencilModifierType type)
void BKE_gpencil_modifiers_calc(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
void BKE_gpencil_modifier_free_ex(struct GpencilModifierData *md, const int flag)
struct GpencilModifierData * BKE_gpencil_modifier_new(int type)
size_t ATTR_PRINTF_FORMAT(3, 4)
struct Depsgraph Depsgraph
Definition: DEG_depsgraph.h:51
_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
format
Definition: logImageCore.h:47
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(* 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)
void(* updateDepsgraph)(struct GpencilModifierData *md, const struct ModifierUpdateDepsgraphContext *ctx, const int mode)
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:273
Definition: BKE_main.h:116