Blender  V2.93
DNA_gpencil_types.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  * The Original Code is Copyright (C) 2008, Blender Foundation.
17  * This is a new part of Blender
18  */
19 
24 #pragma once
25 
26 #include "DNA_ID.h"
27 #include "DNA_brush_types.h"
28 #include "DNA_listBase.h"
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
34 struct AnimData;
35 struct Curve;
36 struct MDeformVert;
37 struct Curve;
38 
39 #define GP_DEFAULT_PIX_FACTOR 1.0f
40 #define GP_DEFAULT_GRID_LINES 4
41 #define GP_MAX_INPUT_SAMPLES 10
42 
43 #define GP_MATERIAL_BUFFER_LEN 256
44 
45 #define GP_DEFAULT_CURVE_RESOLUTION 32
46 #define GP_DEFAULT_CURVE_ERROR 0.1f
47 #define GP_DEFAULT_CURVE_EDIT_CORNER_ANGLE M_PI_2
48 
49 #define GPENCIL_MIN_FILL_FAC 0.05f
50 #define GPENCIL_MAX_FILL_FAC 5.0f
51 
52 /* ***************************************** */
53 /* GP Stroke Points */
54 
55 /* 'Control Point' data for primitives and curves */
56 typedef struct bGPDcontrolpoint {
58  float x, y, z;
60  float color[4];
62  int size;
64 
65 typedef struct bGPDspoint_Runtime {
69  int idx_orig;
70  char _pad0[4];
72 
73 /* Grease-Pencil Annotations - 'Stroke Point'
74  * -> Coordinates may either be 2d or 3d depending on settings at the time
75  * -> Coordinates of point on stroke, in proportions of window size
76  * This assumes that the bottom-left corner is (0,0)
77  */
78 typedef struct bGPDspoint {
80  float x, y, z;
82  float pressure;
84  float strength;
86  float time;
88  int flag;
89 
91  float uv_fac;
93  float uv_rot;
95  float uv_fill[2];
96 
98  float vert_color[4];
99 
101  char _pad2[4];
102 
105 
107 typedef enum eGPDspoint_Flag {
108  /* stroke point is selected (for editing) */
109  GP_SPOINT_SELECT = (1 << 0),
110 
111  /* stroke point is tagged (for some editing operation) */
112  GP_SPOINT_TAG = (1 << 1),
113  /* stroke point is temp tagged (for some editing operation) */
114  GP_SPOINT_TEMP_TAG = (1 << 2),
115  /* stroke point is temp tagged (for some editing operation) */
118 
119 /* ***************************************** */
120 /* GP Fill - Triangle Tessellation Data */
121 
122 /* Grease-Pencil Annotations - 'Triangle'
123  * -> A triangle contains the index of three vertices for filling the stroke
124  * This is only used if high quality fill is enabled
125  */
126 typedef struct bGPDtriangle {
127  /* indices for tessellated triangle used for GP Fill */
128  unsigned int verts[3];
130 
131 /* ***************************************** */
132 
133 /* ***************************************** */
134 /* GP Palettes (Deprecated - 2.78 - 2.79 only) */
135 
136 /* color of palettes */
137 typedef struct bGPDpalettecolor {
140  char info[64];
141  float color[4];
143  float fill[4];
145  short flag;
147  char _pad[6];
149 
151 typedef enum eGPDpalettecolor_Flag {
152  /* color is active */
153  /* PC_COLOR_ACTIVE = (1 << 0), */ /* UNUSED */
154  /* don't display color */
155  PC_COLOR_HIDE = (1 << 1),
156  /* protected from further editing */
157  PC_COLOR_LOCKED = (1 << 2),
158  /* do onion skinning */
159  PC_COLOR_ONIONSKIN = (1 << 3),
160  /* "volumetric" strokes */
163 
164 /* palette of colors */
165 typedef struct bGPDpalette {
166  struct bGPDpalette *next, *prev;
167 
171  char info[64];
172 
173  short flag;
174  char _pad[6];
176 
178 typedef enum eGPDpalette_Flag {
179  /* palette is active */
180  PL_PALETTE_ACTIVE = (1 << 0),
182 
183 /* ***************************************** */
184 /* GP Curve Point */
185 
186 typedef struct bGPDcurve_point {
190  float pressure;
192  float strength;
195 
197  int flag;
198 
200  float uv_fac;
202  float uv_rot;
204  float uv_fill[2];
205 
207  float vert_color[4];
208  char _pad[4];
210 
211 /* bGPDcurve_point->flag */
212 typedef enum eGPDcurve_point_Flag {
215 
216 /* ***************************************** */
217 /* GP Curve */
218 
219 /* Curve for Bezier Editing. */
220 typedef struct bGPDcurve {
226  short flag;
227  char _pad[2];
229 
230 /* bGPDcurve_Flag->flag */
231 typedef enum bGPDcurve_Flag {
232  /* Flag to indicated that the stroke data has been changed and the curve needs to be refitted */
234  /* Curve is selected */
235  GP_CURVE_SELECT = (1 << 1),
237 
238 /* ***************************************** */
239 /* GP Strokes */
240 
241 /* Runtime temp data for bGPDstroke */
242 typedef struct bGPDstroke_Runtime {
244  char tmp_layerinfo[128];
245 
248 
255 
258  void *_pad2;
260 
261 /* Grease-Pencil Annotations - 'Stroke'
262  * -> A stroke represents a (simplified version) of the curve
263  * drawn by the user in one 'mouse-down'->'mouse-up' operation
264  */
265 typedef struct bGPDstroke {
266  struct bGPDstroke *next, *prev;
267 
276 
278  short thickness;
280  short flag, _pad[2];
281 
283  double inittime;
284 
286  char colorname[128] DNA_DEPRECATED;
287 
289  int mat_nr;
291  short caps[2];
292 
294  float hardeness;
296  float aspect_ratio[2];
297 
300 
302  float boundbox_min[3];
304  float boundbox_max[3];
305 
307  float uv_rotation;
309  float uv_translation[2];
310  float uv_scale;
311 
314  char _pad4[4];
315 
318  void *_pad3;
319 
321  float vert_color_fill[4];
322 
325 
327  void *_pad5;
329 
331 typedef enum eGPDstroke_Flag {
332  /* stroke is in 3d-space */
333  GP_STROKE_3DSPACE = (1 << 0),
334  /* stroke is in 2d-space */
335  GP_STROKE_2DSPACE = (1 << 1),
336  /* stroke is in 2d-space (but with special 'image' scaling) */
337  GP_STROKE_2DIMAGE = (1 << 2),
338  /* stroke is selected */
339  GP_STROKE_SELECT = (1 << 3),
340  /* Flag used to indicate that stroke is closed and draw edge between last and first point */
341  GP_STROKE_CYCLIC = (1 << 7),
342  /* Flag used to indicate that stroke is used for fill close and must use
343  * fill color for stroke and no fill area */
344  GP_STROKE_NOFILL = (1 << 8),
345  /* Flag to indicated that the editcurve has been changed and the stroke needs to be updated with
346  * the curve data */
348  /* only for use with stroke-buffer (while drawing arrows) */
350  /* only for use with stroke-buffer (while drawing arrows) */
352  /* Tag for update geometry */
353  GP_STROKE_TAG = (1 << 14),
354  /* only for use with stroke-buffer (while drawing eraser) */
355  GP_STROKE_ERASER = (1 << 15),
357 
359 typedef enum eGPDstroke_Caps {
360  /* type of extreme */
363 
364  /* Keep last. */
367 
368 /* Arrows ----------------------- */
369 
371 typedef enum eGPDstroke_Arrowstyle {
378 
379 /* ***************************************** */
380 /* GP Frame */
381 
382 /* Runtime temp data for bGPDframe */
383 typedef struct bGPDframe_Runtime {
385  int frameid;
387  int onion_id;
388 
392 
393 /* Grease-Pencil Annotations - 'Frame'
394  * -> Acts as storage for the 'image' formed by strokes
395  */
396 typedef struct bGPDframe {
397  struct bGPDframe *next, *prev;
398 
401 
403  int framenum;
404 
406  short flag;
408  short key_type;
409 
412 
413 /* bGPDframe->flag */
414 typedef enum eGPDframe_Flag {
415  /* frame is being painted on */
416  GP_FRAME_PAINT = (1 << 0),
417  /* for editing in Action Editor */
418  GP_FRAME_SELECT = (1 << 1),
419  /* Line Art generation */
422 
423 /* ***************************************** */
424 /* GP Layer */
425 
426 /* List of masking layers. */
427 typedef struct bGPDlayer_Mask {
429  char name[128];
430  short flag;
432  short sort_index;
433  char _pad[4];
435 
436 /* bGPDlayer_Mask->flag */
437 typedef enum ebGPDlayer_Mask_Flag {
438  /* Mask is hidden. */
439  GP_MASK_HIDE = (1 << 0),
440  /* Mask is inverted. */
441  GP_MASK_INVERT = (1 << 1),
443 
444 /* Runtime temp data for bGPDlayer */
445 typedef struct bGPDlayer_Runtime {
447  int icon_id;
448  char _pad[4];
452 
453 /* Grease-Pencil Annotations - 'Layer' */
454 typedef struct bGPDlayer {
455  struct bGPDlayer *next, *prev;
456 
461 
463  short flag;
465  short onion_flag;
466 
469  float color[4];
471  float fill[4];
472 
475  char info[128];
476 
478  short thickness;
480  short pass_index;
481 
483  struct Object *parent;
485  float inverse[4][4];
487  char parsubstr[64];
488  short partype;
489 
491  short line_change;
493  float tintcolor[4];
495  float opacity;
497  char viewlayername[64];
498 
503 
504  /* annotation onion skin */
509  short gstep;
514  short gstep_next;
515 
517  float gcolor_prev[3];
519  float gcolor_next[3];
520  char _pad1[4];
521 
525  int act_mask;
526  char _pad2[4];
527 
529  float location[3], rotation[3], scale[3];
530  float layer_mat[4][4], layer_invmat[4][4];
531  char _pad3[4];
532 
535 
536 /* bGPDlayer->flag */
537 typedef enum eGPDlayer_Flag {
538  /* don't display layer */
539  GP_LAYER_HIDE = (1 << 0),
540  /* protected from further editing */
541  GP_LAYER_LOCKED = (1 << 1),
542  /* layer is 'active' layer being edited */
543  GP_LAYER_ACTIVE = (1 << 2),
544  /* draw points of stroke for debugging purposes */
545  GP_LAYER_DRAWDEBUG = (1 << 3),
546  /* Flag used to display in Paint mode only layers with keyframe */
547  GP_LAYER_SOLO_MODE = (1 << 4),
548  /* for editing in Action Editor */
549  GP_LAYER_SELECT = (1 << 5),
550  /* current frame for layer can't be changed */
551  GP_LAYER_FRAMELOCK = (1 << 6),
552  /* don't render xray (which is default) */
553  GP_LAYER_NO_XRAY = (1 << 7),
554  /* "volumetric" strokes */
555  GP_LAYER_VOLUMETRIC = (1 << 10),
556  /* Use Scene lights */
557  GP_LAYER_USE_LIGHTS = (1 << 11),
558  /* Unlock color */
560  /* Mask Layer */
561  GP_LAYER_USE_MASK = (1 << 13), /*TODO: DEPRECATED */
562  /* Ruler Layer */
563  GP_LAYER_IS_RULER = (1 << 14),
565 
567 typedef enum eGPDlayer_OnionFlag {
568  /* do onion skinning */
569  GP_LAYER_ONIONSKIN = (1 << 0),
571 
573 typedef enum eGPLayerBlendModes {
581 
582 /* ***************************************** */
583 /* GP Datablock */
584 
585 /* Runtime temp data for bGPdata */
586 typedef struct bGPdata_Runtime {
588  void *sbuffer;
594 
596  short playing;
597 
599  short matid;
600 
601  /* Stroke Buffer data (only used during paint-session)
602  * - buffer must be initialized before use, but freed after
603  * whole paint operation is over
604  */
607  char _pad1[2];
612 
614  float vert_color_fill[4];
615 
617  float arrow_start[8];
618  float arrow_end[8];
619  /* Arrow style for each corner */
622 
625  char _pad2[4];
632 
633 /* grid configuration */
634 typedef struct bGPgrid {
635  float color[3];
636  float scale[2];
637  float offset[2];
638  char _pad1[4];
639 
640  int lines;
641  char _pad[4];
643 
644 /* Grease-Pencil Annotations - 'DataBlock' */
645 typedef struct bGPdata {
649  struct AnimData *adt;
650 
651  /* Grease-Pencil data */
655  int flag;
662 
663  /* Palettes */
666 
667  /* 3D Viewport/Appearance Settings */
669  float pixfactor;
671  float line_color[4];
672 
673  /* Onion skinning */
684  short gstep;
688  short gstep_next;
689 
691  float gcolor_prev[3];
693  float gcolor_next[3];
694 
698  struct Material **mat;
700  short totcol;
701 
702  /* stats */
703  short totlayer;
704  short totframe;
705  char _pad2[6];
707  int totpoint;
708 
710  short draw_mode;
713 
716  char _pad3[4];
717 
719 
722 
730 typedef enum eGPdata_Flag {
731  /* data-block is used for "annotations"
732  * NOTE: This flag used to be used in 2.4x, but should hardly ever have been set.
733  * We can use this freely now, as all GP data-blocks from pre-2.8 will get
734  * set on file load (as many old use cases are for "annotations" only)
735  */
737 
738  /* show debugging info in viewport (i.e. status print) */
739  GP_DATA_DISPINFO = (1 << 1),
740  /* in Action Editor, show as expanded channel */
741  GP_DATA_EXPAND = (1 << 2),
742 
743  /* is the block overriding all clicks? */
744  /* GP_DATA_EDITPAINT = (1 << 3), */
745 
746  /* ------------------------------------------------ DEPRECATED */
747  /* new strokes are added in viewport space */
748  GP_DATA_VIEWALIGN = (1 << 4),
749 
750  /* Project into the screen's Z values */
751  GP_DATA_DEPTH_VIEW = (1 << 5),
753 
755  /* ------------------------------------------------ DEPRECATED */
756 
757  /* Stroke Editing Mode - Toggle to enable alternative keymap
758  * for easier editing of stroke points */
760 
761  /* Main flag to switch onion skinning on/off */
763 
764  /* Batch drawing cache need to be recalculated */
766 
767  /* Stroke Paint Mode - Toggle paint mode */
769  /* Stroke Editing Mode - Toggle sculpt mode */
771  /* Stroke Editing Mode - Toggle weight paint mode */
773 
774  /* keep stroke thickness unchanged when zoom change */
776 
777  /* Allow edit several frames at the same time */
779 
780  /* Vertex Paint Mode - Toggle paint mode */
782 
783  /* Autolock not active layers */
785 
786  /* Enable Bezier Editing Curve (a submode of Edit mode). */
788  /* Use adaptive curve resolution */
791 
792 /* gpd->onion_flag */
793 typedef enum eGPD_OnionFlag {
794  /* use custom color for ghosts before current frame */
796  /* use custom color for ghosts after current frame */
798  /* always show onion skins (i.e. even during renders/animation playback) */
800  /* use fade color in onion skin */
801  GP_ONION_FADE = (1 << 3),
802  /* Loop showing first frame after last frame */
803  GP_ONION_LOOP = (1 << 4),
805 
806 /* gpd->onion_mode */
807 typedef enum eGP_OnionModes {
812 
813 /* xray modes (Depth Ordering) */
814 typedef enum eGP_DepthOrdering {
818 
819 /* draw modes (Use 2D or 3D position) */
820 typedef enum eGP_DrawMode {
824 
825 /* ***************************************** */
826 /* Mode Checking Macros */
827 
828 /* Check if 'multiedit sessions' is enabled */
829 #define GPENCIL_MULTIEDIT_SESSIONS_ON(gpd) \
830  ((gpd) && \
831  ((gpd)->flag & \
832  (GP_DATA_STROKE_PAINTMODE | GP_DATA_STROKE_EDITMODE | GP_DATA_STROKE_SCULPTMODE | \
833  GP_DATA_STROKE_WEIGHTMODE | GP_DATA_STROKE_VERTEXMODE)) && \
834  ((gpd)->flag & GP_DATA_STROKE_MULTIEDIT))
835 
836 #define GPENCIL_CURVE_EDIT_SESSIONS_ON(gpd) \
837  ((gpd) && ((gpd)->flag & (GP_DATA_STROKE_EDITMODE)) && ((gpd)->flag & GP_DATA_CURVE_EDIT_MODE))
838 
839 /* Macros to check grease pencil modes */
840 #define GPENCIL_ANY_MODE(gpd) \
841  ((gpd) && ((gpd)->flag & \
842  (GP_DATA_STROKE_PAINTMODE | GP_DATA_STROKE_EDITMODE | GP_DATA_STROKE_SCULPTMODE | \
843  GP_DATA_STROKE_WEIGHTMODE | GP_DATA_STROKE_VERTEXMODE)))
844 #define GPENCIL_EDIT_MODE(gpd) ((gpd) && ((gpd)->flag & GP_DATA_STROKE_EDITMODE))
845 #define GPENCIL_ANY_EDIT_MODE(gpd) \
846  ((gpd) && ((gpd)->flag & \
847  (GP_DATA_STROKE_EDITMODE | GP_DATA_STROKE_SCULPTMODE | GP_DATA_STROKE_WEIGHTMODE)))
848 #define GPENCIL_PAINT_MODE(gpd) ((gpd) && (gpd->flag & GP_DATA_STROKE_PAINTMODE))
849 #define GPENCIL_SCULPT_MODE(gpd) ((gpd) && (gpd->flag & GP_DATA_STROKE_SCULPTMODE))
850 #define GPENCIL_WEIGHT_MODE(gpd) ((gpd) && (gpd->flag & GP_DATA_STROKE_WEIGHTMODE))
851 #define GPENCIL_VERTEX_MODE(gpd) ((gpd) && (gpd->flag & GP_DATA_STROKE_VERTEXMODE))
852 #define GPENCIL_SCULPT_OR_WEIGHT_MODE(gpd) \
853  ((gpd) && ((gpd)->flag & (GP_DATA_STROKE_SCULPTMODE | GP_DATA_STROKE_WEIGHTMODE)))
854 #define GPENCIL_NONE_EDIT_MODE(gpd) \
855  ((gpd) && (((gpd)->flag & (GP_DATA_STROKE_EDITMODE | GP_DATA_STROKE_SCULPTMODE | \
856  GP_DATA_STROKE_WEIGHTMODE | GP_DATA_STROKE_VERTEXMODE)) == 0))
857 #define GPENCIL_LAZY_MODE(brush, shift) \
858  (((brush) && \
859  (((brush)->gpencil_settings->flag & GP_BRUSH_STABILIZE_MOUSE) && ((shift) == 0))) || \
860  ((((brush)->gpencil_settings->flag & GP_BRUSH_STABILIZE_MOUSE) == 0) && ((shift) == 1)))
861 
862 #define GPENCIL_ANY_SCULPT_MASK(flag) \
863  ((flag & (GP_SCULPT_MASK_SELECTMODE_POINT | GP_SCULPT_MASK_SELECTMODE_STROKE | \
864  GP_SCULPT_MASK_SELECTMODE_SEGMENT)))
865 
866 #define GPENCIL_ANY_VERTEX_MASK(flag) \
867  ((flag & (GP_VERTEX_MASK_SELECTMODE_POINT | GP_VERTEX_MASK_SELECTMODE_STROKE | \
868  GP_VERTEX_MASK_SELECTMODE_SEGMENT)))
869 
870 #define GPENCIL_PLAY_ON(gpd) ((gpd) && ((gpd)->runtime.playing == 1))
871 
872 #ifdef __cplusplus
873 }
874 #endif
ID and Library types, which are fundamental for sdna.
struct bGPDpalette bGPDpalette
struct bGPDstroke bGPDstroke
eGP_OnionModes
@ GP_ONION_MODE_RELATIVE
@ GP_ONION_MODE_SELECTED
@ GP_ONION_MODE_ABSOLUTE
ebGPDlayer_Mask_Flag
@ GP_MASK_INVERT
@ GP_MASK_HIDE
struct bGPDspoint bGPDspoint
enum eGPDstroke_Caps GPDstroke_Caps
eGP_DrawMode
@ GP_DRAWMODE_3D
@ GP_DRAWMODE_2D
bGPDcurve_Flag
@ GP_CURVE_NEEDS_STROKE_UPDATE
@ GP_CURVE_SELECT
eGPDstroke_Arrowstyle
@ GP_STROKE_ARROWSTYLE_NONE
@ GP_STROKE_ARROWSTYLE_SEGMENT
@ GP_STROKE_ARROWSTYLE_CLOSED
@ GP_STROKE_ARROWSTYLE_OPEN
@ GP_STROKE_ARROWSTYLE_SQUARE
struct bGPDtriangle bGPDtriangle
eGPDstroke_Caps
@ GP_STROKE_CAP_MAX
@ GP_STROKE_CAP_ROUND
@ GP_STROKE_CAP_FLAT
eGPDstroke_Flag
@ GP_STROKE_NOFILL
@ GP_STROKE_TAG
@ GP_STROKE_USE_ARROW_END
@ GP_STROKE_2DIMAGE
@ GP_STROKE_ERASER
@ GP_STROKE_NEEDS_CURVE_UPDATE
@ GP_STROKE_SELECT
@ GP_STROKE_CYCLIC
@ GP_STROKE_2DSPACE
@ GP_STROKE_3DSPACE
@ GP_STROKE_USE_ARROW_START
struct bGPDcurve bGPDcurve
struct bGPDlayer_Mask bGPDlayer_Mask
struct bGPDcontrolpoint bGPDcontrolpoint
eGP_DepthOrdering
@ GP_XRAY_FRONT
@ GP_XRAY_3DSPACE
eGPDpalettecolor_Flag
@ PC_COLOR_LOCKED
@ PC_COLOR_ONIONSKIN
@ PC_COLOR_VOLUMETRIC
@ PC_COLOR_HIDE
struct bGPDspoint_Runtime bGPDspoint_Runtime
enum eGPDspoint_Flag eGPSPoint_Flag
eGPDpalette_Flag
@ PL_PALETTE_ACTIVE
struct bGPdata bGPdata
eGPDlayer_Flag
@ GP_LAYER_NO_XRAY
@ GP_LAYER_SOLO_MODE
@ GP_LAYER_IS_RULER
@ GP_LAYER_LOCKED
@ GP_LAYER_DRAWDEBUG
@ GP_LAYER_FRAMELOCK
@ GP_LAYER_ACTIVE
@ GP_LAYER_SELECT
@ GP_LAYER_USE_MASK
@ GP_LAYER_UNLOCK_COLOR
@ GP_LAYER_HIDE
@ GP_LAYER_USE_LIGHTS
@ GP_LAYER_VOLUMETRIC
eGPDlayer_OnionFlag
@ GP_LAYER_ONIONSKIN
struct bGPDpalettecolor bGPDpalettecolor
struct bGPDframe_Runtime bGPDframe_Runtime
struct bGPDframe bGPDframe
eGPD_OnionFlag
@ GP_ONION_GHOST_NEXTCOL
@ GP_ONION_GHOST_ALWAYS
@ GP_ONION_GHOST_PREVCOL
@ GP_ONION_FADE
@ GP_ONION_LOOP
struct bGPDcurve_point bGPDcurve_point
struct bGPDstroke_Runtime bGPDstroke_Runtime
struct bGPDlayer bGPDlayer
eGPDframe_Flag
@ GP_FRAME_SELECT
@ GP_FRAME_LRT_CLEARED
@ GP_FRAME_PAINT
eGPdata_Flag
@ GP_DATA_SHOW_ONIONSKINS
@ GP_DATA_DEPTH_VIEW
@ GP_DATA_VIEWALIGN
@ GP_DATA_CURVE_ADAPTIVE_RESOLUTION
@ GP_DATA_STROKE_WEIGHTMODE
@ GP_DATA_EXPAND
@ GP_DATA_DISPINFO
@ GP_DATA_DEPTH_STROKE_ENDPOINTS
@ GP_DATA_STROKE_VERTEXMODE
@ GP_DATA_CURVE_EDIT_MODE
@ GP_DATA_STROKE_MULTIEDIT
@ GP_DATA_CACHE_IS_DIRTY
@ GP_DATA_STROKE_PAINTMODE
@ GP_DATA_STROKE_SCULPTMODE
@ GP_DATA_DEPTH_STROKE
@ GP_DATA_AUTOLOCK_LAYERS
@ GP_DATA_STROKE_KEEPTHICKNESS
@ GP_DATA_ANNOTATIONS
@ GP_DATA_STROKE_EDITMODE
eGPDcurve_point_Flag
@ GP_CURVE_POINT_SELECT
struct bGPgrid bGPgrid
eGPLayerBlendModes
@ eGplBlendMode_Regular
@ eGplBlendMode_Add
@ eGplBlendMode_Multiply
@ eGplBlendMode_Divide
@ eGplBlendMode_Subtract
@ eGplBlendMode_HardLight
struct bGPDlayer_Runtime bGPDlayer_Runtime
eGPDspoint_Flag
@ GP_SPOINT_TAG
@ GP_SPOINT_SELECT
@ GP_SPOINT_TEMP_TAG2
@ GP_SPOINT_TEMP_TAG
struct bGPdata_Runtime bGPdata_Runtime
These structs are the foundation for all linked lists in the library system.
GPUBatch
Definition: GPU_batch.h:93
Definition: DNA_ID.h:273
bGPDcurve_point * curve_points
struct bGPDframe * gpf_orig
struct bGPDframe * next
bGPDframe_Runtime runtime
ListBase strokes
struct bGPDframe * prev
struct bGPDlayer_Mask * prev
struct bGPDlayer_Mask * next
struct bGPDlayer * gpl_orig
float inverse[4][4]
float gcolor_next[3]
struct Object * parent
float color[4]
char info[128]
float tintcolor[4]
struct bGPDlayer * next
bGPDframe * actframe
float layer_mat[4][4]
char parsubstr[64]
char viewlayername[64]
bGPDlayer_Runtime runtime
float layer_invmat[4][4]
ListBase frames
float vertex_paint_opacity
ListBase mask_layers
float gcolor_prev[3]
float rotation[3]
float scale[3]
float location[3]
struct bGPDlayer * prev
struct bGPDpalette * next
struct bGPDpalette * prev
struct bGPDpalettecolor * prev
struct bGPDpalettecolor * next
struct bGPDspoint * pt_orig
float uv_fill[2]
bGPDspoint_Runtime runtime
float vert_color[4]
struct bGPDstroke * gps_orig
struct bGPDstroke * prev
bGPDspoint * points
float uv_translation[2]
char colorname[128] DNA_DEPRECATED
float fill_opacity_fac
float aspect_ratio[2]
float vert_color_fill[4]
bGPDtriangle * triangles
bGPDstroke_Runtime runtime
float boundbox_max[3]
float boundbox_min[3]
struct bGPDcurve * editcurve
struct MDeformVert * dvert
struct bGPDstroke * next
unsigned int verts[3]
struct GpencilBatchCache * gpencil_cache
struct GPUBatch * sbuffer_stroke_batch
struct GPUBatch * sbuffer_fill_batch
struct bGPDstroke * sbuffer_gps
bGPDcontrolpoint * cp_points
ListBase palettes DNA_DEPRECATED
float zdepth_offset
float curve_edit_corner_angle
int curve_edit_resolution
int select_last_index
float gcolor_prev[3]
float line_color[4]
ListBase layers
short gstep_next
float gcolor_next[3]
float curve_edit_threshold
bGPgrid grid
char _pad3[4]
struct Material ** mat
char _pad2[6]
short onion_keytype
float onion_factor
bGPdata_Runtime runtime
struct AnimData * adt
float scale[2]
char _pad[4]
float color[3]
float offset[2]
char _pad1[4]