28#define DNA_DEPRECATED_ALLOW
65 std::optional<Library *> ,
103 for (
i = 0, pt = gps->points;
i < gps->totpoints;
i++, pt++) {
130 for (
int i = 0;
i < gpencil->
totcol;
i++) {
172 if (gps->editcurve !=
nullptr) {
186 if (gpd ==
nullptr) {
206 if (gpd->palettes.first !=
nullptr) {
226 gpl->runtime.icon_id = 0;
243 if (gps->editcurve !=
nullptr) {
302 if (dvert ==
nullptr) {
310 if (gps ==
nullptr) {
314 if (gps->
dvert ==
nullptr) {
326 if (gps ==
nullptr) {
330 if (editcurve ==
nullptr) {
340 if (gps ==
nullptr) {
379 if (gpl ==
nullptr) {
385 gpf_next = gpf->
next;
401 mask_next =
mask->next;
410 if (list ==
nullptr) {
416 gpl_next = gpl->
next;
463 if (gpl ==
nullptr) {
475 if (gf->framenum == cframe) {
481 if (gf->framenum > cframe) {
492 &
LOG,
"Frame (%d) existed already for this layer_active. Using existing frame", cframe);
501 else if (
state == 0) {
516 if (gpl ==
nullptr) {
530 if (gpf->framenum > cframe) {
537 if (gpf->framenum == cframe) {
550 if (found ==
false) {
566 const bool setactive,
567 const bool add_to_header)
573 if (gpd ==
nullptr) {
587 if (gpl_active ==
nullptr) {
702 if (gps_src ==
nullptr) {
711 const bool dup_points,
717 gps_dst->
prev = gps_dst->
next =
nullptr;
723 if (gps_src->
dvert !=
nullptr) {
728 gps_dst->
dvert =
nullptr;
732 gps_dst->
points =
nullptr;
733 gps_dst->
dvert =
nullptr;
748 if (gpf_src ==
nullptr) {
754 gpf_dst->
prev = gpf_dst->
next =
nullptr;
771 const bool dup_frames,
772 const bool dup_strokes)
778 if (gpl_src ==
nullptr) {
784 gpl_dst->
prev = gpl_dst->
next =
nullptr;
814 if (gpd_src ==
nullptr) {
840 if (gpl ==
nullptr) {
859 if (gpf->framenum == cframe) {
873 if (gpl ==
nullptr) {
894 for (; gpf; gpf = gpf->
next) {
909 if ((found) && (gpf->
framenum == cframe)) {
930 for (; gpf; gpf = gpf->
prev) {
939 if ((found) && (gpf->
framenum == cframe)) {
965 if (
abs(cframe - first) >
abs(cframe - last)) {
986 if ((found) && (gpf->
framenum == cframe)) {
1032 bool changed =
false;
1035 if (
ELEM(
nullptr, gpl, gpf)) {
1055 if (
name[0] ==
'\0') {
1072 if (thunk !=
nullptr) {
1073 *((
bool *)thunk) =
true;
1130 if (
ELEM(
nullptr, gpd, gpl)) {
1164 const char *hexcol[] = {
1165 "FFFFFF",
"F2F2F2",
"E6E6E6",
"D9D9D9",
"CCCCCC",
"BFBFBF",
"B2B2B2",
"A6A6A6",
"999999",
1166 "8C8C8C",
"808080",
"737373",
"666666",
"595959",
"4C4C4C",
"404040",
"333333",
"262626",
1167 "1A1A1A",
"000000",
"F2FC24",
"FFEA00",
"FEA711",
"FE8B68",
"FB3B02",
"FE3521",
"D00000",
1168 "A81F3D",
"780422",
"2B0000",
"F1E2C5",
"FEE4B3",
"FEDABB",
"FEC28E",
"D88F57",
"BD6340",
1169 "A2402B",
"63352D",
"6B2833",
"34120C",
"E7CB8F",
"D1B38B",
"C1B17F",
"D7980B",
"FFB100",
1170 "FE8B00",
"FF6A00",
"B74100",
"5F3E1D",
"3B2300",
"FECADA",
"FE65CB",
"FE1392",
"DD3062",
1171 "C04A6D",
"891688",
"4D2689",
"441521",
"2C1139",
"241422",
"FFFF7D",
"FFFF00",
"FF7F00",
1172 "FF7D7D",
"FF7DFF",
"FF00FE",
"FF007F",
"FF0000",
"7F0000",
"0A0A00",
"F6FDFF",
"E9F7FF",
1173 "CFE6FE",
"AAC7FE",
"77B3FE",
"1E74FD",
"0046AA",
"2F4476",
"003052",
"0E0E25",
"EEF5F0",
1174 "D6E5DE",
"ACD8B9",
"6CADC6",
"42A9AF",
"007F7F",
"49675C",
"2E4E4E",
"1D3239",
"0F1C21",
1175 "D8FFF4",
"B8F4F5",
"AECCB5",
"76C578",
"358757",
"409B68",
"468768",
"1F512B",
"2A3C37",
1176 "122E1D",
"EFFFC9",
"E6F385",
"BCF51C",
"D4DC18",
"82D322",
"5C7F00",
"59932B",
"297F00",
1177 "004320",
"1C3322",
"00FF7F",
"00FF00",
"7DFF7D",
"7DFFFF",
"00FFFF",
"7D7DFF",
"7F00FF",
1178 "0000FF",
"3F007F",
"00007F"};
1186 const char *palette_id =
"Palette";
1190 if (palette ==
nullptr) {
1195 if (palette ==
nullptr) {
Blender kernel action and pose functionality.
void BKE_brush_tag_unsaved_changes(Brush *brush)
bool BKE_icon_delete(int icon_id)
@ IDTYPE_FLAGS_APPEND_IS_REUSABLE
IDTypeInfo IDType_ID_GD_LEGACY
void * BKE_libblock_alloc(Main *bmain, short type, const char *name, int flag) ATTR_WARN_UNUSED_RESULT
ID * BKE_id_copy(Main *bmain, const ID *id)
void BKE_id_blend_write(BlendWriter *writer, ID *id)
#define BKE_LIB_FOREACHID_PROCESS_IDSUPER(data_, id_super_, cb_flag_)
General operations, lookup, etc. for materials.
PaletteColor * BKE_palette_color_add(Palette *palette)
Palette * BKE_palette_add(Main *bmain, const char *name)
void BKE_paint_palette_set(Paint *paint, Palette *palette)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(ListBase *lb)
void * BLI_findstring(const ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
void BLI_freelinkN(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
#define LISTBASE_FOREACH_BACKWARD(type, var, list)
void void BLI_freelistN(ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_insertlinkafter(ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
void BLI_addhead(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void void BLI_listbase_sort_r(ListBase *listbase, int(*cmp)(void *, const void *, const void *), void *thunk) ATTR_NONNULL(1
void BLI_insertlinkbefore(ListBase *listbase, void *vnextlink, void *vnewlink) ATTR_NONNULL(1)
void hex_to_rgb(const char *hexcol, float *r_r, float *r_g, float *r_b)
void mul_m4_v3(const float M[4][4], float r[3])
bool invert_m4_m4(float inverse[4][4], const float mat[4][4])
void loc_eul_size_to_mat4(float R[4][4], const float loc[3], const float eul[3], const float size[3])
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE bool is_one_v3(const float v[3]) ATTR_WARN_UNUSED_RESULT
MINLINE bool is_zero_v3(const float v[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void copy_v3_fl(float r[3], float f)
MINLINE void zero_v3(float r[3])
#define STRNCPY_UTF8(dst, src)
void BLI_uniquename(const struct ListBase *list, void *vlink, const char *defname, char delim, int name_offset, size_t name_maxncpy) ATTR_NONNULL(1
#define ARRAY_SET_ITEMS(...)
#define BLO_write_id_struct(writer, struct_name, id_address, id)
#define BLO_write_struct(writer, struct_name, data_ptr)
#define BLO_write_struct_array(writer, struct_name, array_size, data_ptr)
#define BLO_read_struct_list(reader, struct_name, list)
#define BLO_read_struct_array(reader, struct_name, array_size, ptr_p)
#define BLO_write_struct_list(writer, struct_name, list_ptr)
#define BLO_read_struct(reader, struct_name, ptr_p)
void BLO_write_pointer_array(BlendWriter *writer, int64_t num, const void *data_ptr)
void BLO_read_pointer_array(BlendDataReader *reader, int64_t array_size, void **ptr_p)
#define BLT_I18NCONTEXT_ID_GPENCIL
#define CLOG_ERROR(clg_ref,...)
#define CLOG_STR_ERROR(clg_ref, str)
void DEG_id_tag_update(ID *id, unsigned int flags)
#define FILTER_ID_GD_LEGACY
#define ID_IS_LINKED(_id)
#define GP_DEFAULT_CURVE_EDIT_CORNER_ANGLE
#define GP_DEFAULT_PIX_FACTOR
#define GP_DEFAULT_CURVE_RESOLUTION
#define GP_DEFAULT_GRID_LINES
#define GP_DEFAULT_CURVE_ERROR
@ GP_DATA_SHOW_ONIONSKINS
@ GP_DATA_CURVE_ADAPTIVE_RESOLUTION
@ GP_DATA_STROKE_WEIGHTMODE
@ GP_DATA_STROKE_VERTEXMODE
@ GP_DATA_STROKE_PAINTMODE
@ GP_DATA_STROKE_SCULPTMODE
@ GP_DATA_AUTOLOCK_LAYERS
@ GP_DATA_STROKE_EDITMODE
BLI_INLINE void IMB_colormanagement_srgb_to_scene_linear_v3(float scene_linear[3], const float srgb[3])
Read Guarded memory(de)allocation.
BMesh const char void * data
static void greasepencil_copy_data(Main *, std::optional< Library * >, ID *id_dst, const ID *id_src, const int)
bGPDframe * BKE_gpencil_frame_addcopy(bGPDlayer *gpl, int cframe)
bGPDframe * BKE_gpencil_frame_duplicate(const bGPDframe *gpf_src, const bool dup_strokes)
void BKE_gpencil_tag(bGPdata *gpd)
void BKE_gpencil_free_stroke_weights(bGPDstroke *gps)
bGPDframe * BKE_gpencil_layer_frame_get(bGPDlayer *gpl, int cframe, eGP_GetFrame_Mode addnew)
bGPDstroke * BKE_gpencil_stroke_duplicate(bGPDstroke *gps_src, const bool dup_points, const bool)
bGPDlayer * BKE_gpencil_layer_named_get(bGPdata *gpd, const char *name)
bGPdata * BKE_gpencil_data_addnew(Main *bmain, const char name[])
bGPDlayer * BKE_gpencil_layer_duplicate(const bGPDlayer *gpl_src, const bool dup_frames, const bool dup_strokes)
void BKE_gpencil_free_frames(bGPDlayer *gpl)
bGPDlayer * BKE_gpencil_layer_active_get(bGPdata *gpd)
void BKE_gpencil_free_point_weights(MDeformVert *dvert)
bool BKE_gpencil_layer_is_editable(const bGPDlayer *gpl)
void BKE_gpencil_free_stroke_editcurve(bGPDstroke *gps)
void BKE_gpencil_free_layers(ListBase *list)
void BKE_gpencil_stroke_weights_duplicate(bGPDstroke *gps_src, bGPDstroke *gps_dst)
static void greasepencil_blend_write(BlendWriter *writer, ID *id, const void *id_address)
static void greasepencil_free_data(ID *id)
bool BKE_gpencil_free_strokes(bGPDframe *gpf)
void BKE_gpencil_layer_frames_sort(bGPDlayer *gpl, bool *r_has_duplicate_frames)
void BKE_gpencil_palette_ensure(Main *bmain, Scene *scene)
void BKE_gpencil_free_legacy_palette_data(ListBase *list)
void BKE_gpencil_free_layer_masks(bGPDlayer *gpl)
bGPdata * BKE_gpencil_data_duplicate(Main *bmain, const bGPdata *gpd_src, bool internal_copy)
static int gpencil_cb_cmp_frame(void *thunk, const void *a, const void *b)
bGPDframe * BKE_gpencil_layer_frame_find(bGPDlayer *gpl, int cframe)
static void greasepencil_foreach_id(ID *id, LibraryForeachIDData *data)
bGPDframe * BKE_gpencil_frame_addnew(bGPDlayer *gpl, int cframe)
void BKE_gpencil_blend_read_data(BlendDataReader *reader, bGPdata *gpd)
bool BKE_gpencil_layer_frame_delete(bGPDlayer *gpl, bGPDframe *gpf)
void BKE_gpencil_free_data(bGPdata *gpd, bool)
void BKE_gpencil_free_stroke(bGPDstroke *gps)
bGPDlayer * BKE_gpencil_layer_addnew(bGPdata *gpd, const char *name, const bool setactive, const bool add_to_header)
void BKE_gpencil_brush_material_set(Brush *brush, Material *ma)
static void greasepencil_blend_read_data(BlendDataReader *reader, ID *id)
void BKE_gpencil_layer_active_set(bGPdata *gpd, bGPDlayer *active)
void BKE_gpencil_layer_delete(bGPdata *gpd, bGPDlayer *gpl)
void * MEM_callocN(size_t len, const char *str)
void * MEM_dupallocN(const void *vmemh)
void MEM_freeN(void *vmemh)
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
struct Material * material
struct BrushGpencilSettings * gpencil_settings
struct ToolSettings * toolsettings
bGPDcurve_point * curve_points
bGPDlayer_Runtime runtime
float vertex_paint_opacity
struct bGPDcurve * editcurve
struct MDeformVert * dvert
ListBase vertex_group_names
float curve_edit_corner_angle
int curve_edit_resolution
float curve_edit_threshold