Blender V5.0
BKE_gpencil_legacy.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2008 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
10
11struct BlendDataReader;
12struct Brush;
13struct CurveMapping;
14struct Depsgraph;
15struct ListBase;
16struct MDeformVert;
17struct Main;
18struct Material;
19struct Object;
20struct Scene;
21struct SpaceImage;
22struct ToolSettings;
23struct ViewLayer;
24struct bDeformGroup;
25struct bGPDcurve;
26struct bGPDframe;
27struct bGPDlayer;
28struct bGPDlayer_Mask;
29struct bGPDstroke;
30struct bGPdata;
31
32#define GPENCIL_SIMPLIFY(scene) \
33 ((scene->r.mode & R_SIMPLIFY) && (scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_ENABLE))
34#define GPENCIL_SIMPLIFY_ONPLAY(playing) \
35 (((playing == true) && (scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_ON_PLAY)) || \
36 ((scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_ON_PLAY) == 0))
37#define GPENCIL_SIMPLIFY_FILL(scene, playing) \
38 ((GPENCIL_SIMPLIFY_ONPLAY(playing) && GPENCIL_SIMPLIFY(scene) && \
39 (scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_FILL)))
40#define GPENCIL_SIMPLIFY_FX(scene, playing) \
41 ((GPENCIL_SIMPLIFY_ONPLAY(playing) && GPENCIL_SIMPLIFY(scene) && \
42 (scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_FX)))
43#define GPENCIL_SIMPLIFY_TINT(scene) \
44 (GPENCIL_SIMPLIFY(scene) && (scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_TINT))
45#define GPENCIL_SIMPLIFY_AA(scene) \
46 (GPENCIL_SIMPLIFY(scene) && (scene->r.simplify_gpencil & SIMPLIFY_GPENCIL_AA))
47
48/* Vertex Color macros. */
49#define GPENCIL_USE_VERTEX_COLOR(toolsettings) \
50 (((toolsettings)->gp_paint->mode == GPPAINT_FLAG_USE_VERTEXCOLOR))
51
52/* ------------ Grease-Pencil API ------------------ */
53
54/* clean vertex groups weights */
59void BKE_gpencil_free_stroke(struct bGPDstroke *gps);
61bool BKE_gpencil_free_strokes(struct bGPDframe *gpf);
63void BKE_gpencil_free_frames(struct bGPDlayer *gpl);
65void BKE_gpencil_free_layers(struct ListBase *list);
69void BKE_gpencil_free_data(struct bGPdata *gpd, bool free_all);
76void BKE_gpencil_tag(struct bGPdata *gpd);
77
84struct bGPDframe *BKE_gpencil_frame_addnew(struct bGPDlayer *gpl, int cframe);
91struct bGPDframe *BKE_gpencil_frame_addcopy(struct bGPDlayer *gpl, int cframe);
100struct bGPDlayer *BKE_gpencil_layer_addnew(struct bGPdata *gpd,
101 const char *name,
102 bool setactive,
103 bool add_to_header);
110struct bGPdata *BKE_gpencil_data_addnew(struct Main *bmain, const char name[]);
111
117struct bGPDframe *BKE_gpencil_frame_duplicate(const struct bGPDframe *gpf_src, bool dup_strokes);
123struct bGPDlayer *BKE_gpencil_layer_duplicate(const struct bGPDlayer *gpl_src,
124 bool dup_frames,
125 bool dup_strokes);
126
135 bool dup_points,
136 bool dup_curve);
137
144 const struct bGPdata *gpd,
145 bool internal_copy);
146
147/* Stroke and Fill - Alpha Visibility Threshold */
148#define GPENCIL_ALPHA_OPACITY_THRESH 0.001f
149#define GPENCIL_STRENGTH_MIN 0.003f
150
157
158/* How gpencil_layer_getframe() should behave when there
159 * is no existing GP-Frame on the frame requested.
160 */
161typedef enum eGP_GetFrame_Mode {
162 /* Use the preceding gp-frame (i.e. don't add anything) */
164
165 /* Add a new empty/blank frame */
167 /* Make a copy of the active frame */
170
182 int cframe,
183 eGP_GetFrame_Mode addnew);
190struct bGPDframe *BKE_gpencil_layer_frame_find(struct bGPDlayer *gpl, int cframe);
197bool BKE_gpencil_layer_frame_delete(struct bGPDlayer *gpl, struct bGPDframe *gpf);
198
205struct bGPDlayer *BKE_gpencil_layer_named_get(struct bGPdata *gpd, const char *name);
217void BKE_gpencil_layer_active_set(struct bGPdata *gpd, struct bGPDlayer *active);
223void BKE_gpencil_layer_delete(struct bGPdata *gpd, struct bGPDlayer *gpl);
229void BKE_gpencil_layer_frames_sort(struct bGPDlayer *gpl, bool *r_has_duplicate_frames);
230
231/* Brush */
237void BKE_gpencil_brush_material_set(struct Brush *brush, struct Material *material);
238
239/* vertex groups */
245void BKE_gpencil_stroke_weights_duplicate(struct bGPDstroke *gps_src, struct bGPDstroke *gps_dst);
246
252void BKE_gpencil_palette_ensure(struct Main *bmain, struct Scene *scene);
253
254void BKE_gpencil_blend_read_data(struct BlendDataReader *reader, struct bGPdata *gpd);
bool BKE_gpencil_free_strokes(struct bGPDframe *gpf)
void BKE_gpencil_layer_active_set(struct bGPdata *gpd, struct bGPDlayer *active)
void BKE_gpencil_free_data(struct bGPdata *gpd, bool free_all)
void BKE_gpencil_free_stroke_weights(struct bGPDstroke *gps)
struct bGPDlayer * BKE_gpencil_layer_addnew(struct bGPdata *gpd, const char *name, bool setactive, bool add_to_header)
struct bGPDlayer * BKE_gpencil_layer_named_get(struct bGPdata *gpd, const char *name)
void BKE_gpencil_free_point_weights(struct MDeformVert *dvert)
void BKE_gpencil_palette_ensure(struct Main *bmain, struct Scene *scene)
struct bGPDframe * BKE_gpencil_frame_addcopy(struct bGPDlayer *gpl, int cframe)
struct bGPdata * BKE_gpencil_data_duplicate(struct Main *bmain, const struct bGPdata *gpd, bool internal_copy)
void BKE_gpencil_free_frames(struct bGPDlayer *gpl)
void BKE_gpencil_layer_frames_sort(struct bGPDlayer *gpl, bool *r_has_duplicate_frames)
bool BKE_gpencil_layer_is_editable(const struct bGPDlayer *gpl)
void BKE_gpencil_free_legacy_palette_data(struct ListBase *list)
bool BKE_gpencil_layer_frame_delete(struct bGPDlayer *gpl, struct bGPDframe *gpf)
struct bGPDframe * BKE_gpencil_layer_frame_get(struct bGPDlayer *gpl, int cframe, eGP_GetFrame_Mode addnew)
struct bGPDlayer * BKE_gpencil_layer_active_get(struct bGPdata *gpd)
void BKE_gpencil_blend_read_data(struct BlendDataReader *reader, struct bGPdata *gpd)
void BKE_gpencil_free_layer_masks(struct bGPDlayer *gpl)
struct bGPDstroke * BKE_gpencil_stroke_duplicate(struct bGPDstroke *gps_src, bool dup_points, bool dup_curve)
void BKE_gpencil_free_stroke_editcurve(struct bGPDstroke *gps)
void BKE_gpencil_free_stroke(struct bGPDstroke *gps)
struct bGPDframe * BKE_gpencil_frame_addnew(struct bGPDlayer *gpl, int cframe)
struct bGPDlayer * BKE_gpencil_layer_duplicate(const struct bGPDlayer *gpl_src, bool dup_frames, bool dup_strokes)
struct bGPdata * BKE_gpencil_data_addnew(struct Main *bmain, const char name[])
void BKE_gpencil_layer_delete(struct bGPdata *gpd, struct bGPDlayer *gpl)
void BKE_gpencil_free_layers(struct ListBase *list)
struct bGPDframe * BKE_gpencil_frame_duplicate(const struct bGPDframe *gpf_src, bool dup_strokes)
void BKE_gpencil_stroke_weights_duplicate(struct bGPDstroke *gps_src, struct bGPDstroke *gps_dst)
void BKE_gpencil_tag(struct bGPdata *gpd)
void BKE_gpencil_brush_material_set(struct Brush *brush, struct Material *material)
eGP_GetFrame_Mode
@ GP_GETFRAME_ADD_NEW
@ GP_GETFRAME_ADD_COPY
@ GP_GETFRAME_USE_PREV
struct bGPDframe * BKE_gpencil_layer_frame_find(struct bGPDlayer *gpl, int cframe)
#define active
const char * name