[Bf-blender-cvs] [55c2e892222] greasepencil-object: WIP: Mega Refactor to replace Palettes with Materials - 1

Antonio Vazquez noreply at git.blender.org
Thu Apr 26 12:35:54 CEST 2018


Commit: 55c2e8922226cdcfd485b3df10de4359c9c73b89
Author: Antonio Vazquez
Date:   Wed Apr 25 20:19:49 2018 +0200
Branches: greasepencil-object
https://developer.blender.org/rB55c2e8922226cdcfd485b3df10de4359c9c73b89

WIP: Mega Refactor to replace Palettes with Materials - 1

===================================================================

M	source/blender/blenkernel/BKE_gpencil.h
M	source/blender/blenkernel/BKE_paint.h
M	source/blender/blenkernel/intern/gpencil.c
M	source/blender/blenkernel/intern/library_query.c
M	source/blender/blenkernel/intern/paint.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/versioning_280.c
M	source/blender/blenloader/intern/writefile.c
M	source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
M	source/blender/draw/engines/gpencil/gpencil_engine.h
M	source/blender/draw/engines/gpencil/gpencil_geom.c
M	source/blender/editors/animation/anim_channels_defines.c
M	source/blender/editors/animation/anim_filter.c
M	source/blender/editors/animation/keyframes_draw.c
M	source/blender/editors/gpencil/drawgpencil.c
M	source/blender/editors/gpencil/gpencil_add_monkey.c
M	source/blender/editors/gpencil/gpencil_brush.c
M	source/blender/editors/gpencil/gpencil_colorpick.c
M	source/blender/editors/gpencil/gpencil_data.c
M	source/blender/editors/gpencil/gpencil_edit.c
M	source/blender/editors/gpencil/gpencil_fill.c
M	source/blender/editors/gpencil/gpencil_intern.h
M	source/blender/editors/gpencil/gpencil_interpolate.c
M	source/blender/editors/gpencil/gpencil_ops.c
M	source/blender/editors/gpencil/gpencil_paint.c
M	source/blender/editors/gpencil/gpencil_primitive.c
M	source/blender/editors/gpencil/gpencil_utils.c
M	source/blender/editors/include/ED_gpencil.h
M	source/blender/editors/screen/screen_context.c
M	source/blender/editors/screen/screen_ops.c
M	source/blender/editors/sculpt_paint/paint_ops.c
M	source/blender/editors/space_view3d/view3d_manipulator_ruler.c
M	source/blender/editors/space_view3d/view3d_ruler.c
M	source/blender/editors/transform/transform_conversions.c
M	source/blender/makesdna/DNA_brush_types.h
M	source/blender/makesdna/DNA_gpencil_types.h
M	source/blender/makesrna/intern/rna_brush.c
M	source/blender/makesrna/intern/rna_gpencil.c
M	source/blender/makesrna/intern/rna_palette.c
M	source/blender/modifiers/intern/MOD_gpencil_util.c
M	source/blender/modifiers/intern/MOD_gpencil_util.h
M	source/blender/modifiers/intern/MOD_gpencilarray.c
M	source/blender/modifiers/intern/MOD_gpencilcolor.c
M	source/blender/modifiers/intern/MOD_gpencilhook.c
M	source/blender/modifiers/intern/MOD_gpencillattice.c
M	source/blender/modifiers/intern/MOD_gpencilnoise.c
M	source/blender/modifiers/intern/MOD_gpenciloffset.c
M	source/blender/modifiers/intern/MOD_gpencilopacity.c
M	source/blender/modifiers/intern/MOD_gpencilsimplify.c
M	source/blender/modifiers/intern/MOD_gpencilsmooth.c
M	source/blender/modifiers/intern/MOD_gpencilsubdiv.c
M	source/blender/modifiers/intern/MOD_gpencilthick.c
M	source/blender/modifiers/intern/MOD_gpenciltint.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h
index 236adb3f1dc..3da8b67b2e0 100644
--- a/source/blender/blenkernel/BKE_gpencil.h
+++ b/source/blender/blenkernel/BKE_gpencil.h
@@ -41,11 +41,10 @@ struct bGPDlayer;
 struct bGPDframe;
 struct bGPDspoint;
 struct bGPDstroke;
-struct bGPDpaletteref;
+struct Material;
 struct bGPDpalette;
 struct bGPDpalettecolor;
 struct Main;
-struct PaletteColor;
 struct BoundBox;
 struct Brush;
 struct Object;
@@ -53,7 +52,6 @@ struct bDeformGroup;
 struct GpencilSimplifyModifierData;
 struct GpencilArrayModifierData;
 struct GpencilLatticeModifierData;
-struct Palette;
 
 /* ------------ Grease-Pencil API ------------------ */
 
@@ -86,7 +84,6 @@ struct bGPDstroke *BKE_gpencil_stroke_duplicate(struct bGPDstroke *gps_src);
 void BKE_gpencil_copy_data(struct Main *bmain, struct bGPdata *gpd_dst, const struct bGPdata *gpd_src, const int flag);
 struct bGPdata   *BKE_gpencil_copy(struct Main *bmain, const struct bGPdata *gpd);
 struct bGPdata   *BKE_gpencil_data_duplicate(struct Main *bmain, const struct bGPdata *gpd, bool internal_copy);
-void BKE_gpencil_copy_palette_data(struct bGPdata *gpd_dst, const struct bGPdata *gpd_src);
 
 void BKE_gpencil_make_local(struct Main *bmain, struct bGPdata *gpd, const bool lib_local);
 
@@ -107,13 +104,7 @@ void BKE_gpencil_stroke_add_points(
         const float *array, const int totpoints,
         const float mat[4][4]);
 
-struct bGPDstroke *BKE_gpencil_add_stroke(
-        struct bGPDframe *gpf, struct Palette *palette, struct PaletteColor *palcolor, int totpoints,
-        const char *colorname, short thickness);
-
-
-/* conversion of animation data from bGPDpalette to Palette */
-void BKE_gpencil_move_animdata_to_palettes(struct bContext *C, struct bGPdata *gpd);
+struct bGPDstroke *BKE_gpencil_add_stroke(struct bGPDframe *gpf, int mat_idx, int totpoints, short thickness);
 
 /* Stroke and Fill - Alpha Visibility Threshold */
 #define GPENCIL_ALPHA_OPACITY_THRESH 0.001f
@@ -142,22 +133,8 @@ struct bGPDlayer *BKE_gpencil_layer_getactive(struct bGPdata *gpd);
 void BKE_gpencil_layer_setactive(struct bGPdata *gpd, struct bGPDlayer *active);
 void BKE_gpencil_layer_delete(struct bGPdata *gpd, struct bGPDlayer *gpl);
 
-/* Palette Slots */
-void BKE_gpencil_palette_slot_free(struct bGPdata *gpd, struct bGPDpaletteref *palslot);
-
-struct bGPDpaletteref *BKE_gpencil_paletteslot_find(struct bGPdata *gpd, const struct Palette *palette);
-bool BKE_gpencil_paletteslot_has_users(const struct bGPdata *gpd, const struct bGPDpaletteref *palslot);
-
-struct bGPDpaletteref *BKE_gpencil_paletteslot_get_active(const struct bGPdata *gpd);
-void BKE_gpencil_paletteslot_set_active(struct bGPdata *gpd, const struct bGPDpaletteref *palslot);
-void BKE_gpencil_paletteslot_set_active_palette(struct bGPdata *gpd, const struct Palette *palette);
-
-void BKE_gpencil_paletteslot_set_palette(struct bGPdata *gpd, struct bGPDpaletteref *palslot, struct Palette *palette);
-
-struct bGPDpaletteref *BKE_gpencil_paletteslot_add(struct bGPdata *gpd, struct Palette *palette);
-struct bGPDpaletteref *BKE_gpencil_paletteslot_addnew(struct Main *bmain, struct bGPdata *gpd, const char name[]);
-struct bGPDpaletteref *BKE_gpencil_paletteslot_validate(struct Main *bmain, struct bGPdata *gpd);
-struct PaletteColor *BKE_gpencil_get_color_from_brush(struct bGPdata *gpd, struct Brush *brush, bool add);
+struct Material *BKE_gpencil_get_color_from_brush(struct bGPdata *gpd, struct Brush *brush, bool add);
+struct Material *BKE_gpencil_color_ensure(struct Main *bmain, struct Object *ob);
 
 /* Palettes - Deprecated (2.78-2.79) */
 void BKE_gpencil_free_palettes(struct ListBase *list);
diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h
index 6bdc05e76f3..534148b6c9b 100644
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@ -108,21 +108,10 @@ void BKE_palette_copy_data(
         struct Main *bmain, struct Palette *palette_dst, const struct Palette *palette_src, const int flag);
 struct Palette      *BKE_palette_copy(struct Main *bmain, const struct Palette *palette);
 void                 BKE_palette_make_local(struct Main *bmain, struct Palette *palette, const bool lib_local);
-bool                 BKE_palette_is_empty(const struct Palette *palette);
-void                 BKE_palette_clear(struct Palette *palette);
-struct Palette      *BKE_palette_get_active_from_context(const struct bContext *C);
-void                 BKE_palette_set_active_byname(const struct bContext *C, char *palname);
-
 struct PaletteColor *BKE_palette_color_add(struct Palette *palette);
-struct PaletteColor *BKE_palette_color_add_name(struct Palette *palette, const char *name);
-struct PaletteColor *BKE_palette_color_getbyname(struct Palette *palette, const char *name);
-struct PaletteColor *BKE_gpencil_palettecolor_getbyrgb(struct Palette *palette, float rgb[3]);
-struct PaletteColor *BKE_gpencil_palettecolor_getbyrgba(struct Palette *palette, float rgba[4]);
+bool                 BKE_palette_is_empty(const struct Palette *palette);
 void                 BKE_palette_color_remove(struct Palette *palette, struct PaletteColor *color);
-struct PaletteColor *BKE_palette_color_get_active(struct Palette *palette);
-struct PaletteColor *BKE_palette_color_get_active_from_context(const struct bContext *C);
-void                 BKE_palette_color_add_default_set(struct Palette *palette);
-struct PaletteColor *BKE_palette_color_copy(struct Palette *palette, struct PaletteColor *palcolor);
+void                 BKE_palette_clear(struct Palette *palette);
 
 /* paint curves */
 struct PaintCurve *BKE_paint_curve_add(struct Main *bmain, const char *name);
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index 1312bfae37a..f4d5fc05a08 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -47,6 +47,7 @@
 #include "BLT_translation.h"
 
 #include "DNA_anim_types.h"
+#include "DNA_material_types.h"
 #include "DNA_gpencil_types.h"
 #include "DNA_userdef_types.h"
 #include "DNA_scene_types.h"
@@ -61,7 +62,7 @@
 #include "BKE_library.h"
 #include "BKE_main.h"
 #include "BKE_object.h"
-#include "BKE_paint.h"
+#include "BKE_material.h"
 
 #include "DEG_depsgraph.h"
 
@@ -201,39 +202,6 @@ void BKE_gpencil_free_layers(ListBase *list)
 	}
 }
 
-/* Free palette slot
- * NOTE: This doesn't unlink the palette from any strokes that may be using it
- */
-void BKE_gpencil_palette_slot_free(bGPdata *gpd, bGPDpaletteref *palslot)
-{
-	if (ELEM(NULL, gpd, palslot))
-		return;
-	
-	/* unlink palette */
-	if (palslot->palette) {
-		id_us_min(&palslot->palette->id);
-	}
-	
-	/* free slot */
-	BLI_freelinkN(&gpd->palette_slots, palslot);
-}
-
-/* Free palette slots */
-static void BKE_gpencil_free_paletteslots(bGPdata *gpd)
-{
-	bGPDpaletteref *palslot, *gpr_next;
-	
-	/* error checking */
-	if (gpd == NULL) return;
-	
-	/* delete palette slots */
-	for (palslot = gpd->palette_slots.first; palslot; palslot = gpr_next) {
-		gpr_next = palslot->next;
-		
-		BKE_gpencil_palette_slot_free(gpd, palslot);
-	}
-}
-
 /* clear all runtime derived data */
 static void BKE_gpencil_clear_derived(bGPDlayer *gpl)
 {
@@ -300,9 +268,6 @@ void BKE_gpencil_free(bGPdata *gpd, bool free_all)
 	}
 	BKE_gpencil_free_layers(&gpd->layers);
 
-	/* free palette slots */
-	BKE_gpencil_free_paletteslots(gpd);
-
 	/* free all data */
 	if (free_all) {
 		/* clear cache */
@@ -531,9 +496,7 @@ void BKE_gpencil_stroke_add_points(bGPDstroke *gps, const float *array, const in
 }
 
 /* Create a new stroke, with pre-allocated data buffers */
-bGPDstroke *BKE_gpencil_add_stroke(
-        bGPDframe *gpf, Palette *palette, PaletteColor *palcolor, int totpoints,
-        const char *colorname, short thickness)
+bGPDstroke *BKE_gpencil_add_stroke(bGPDframe *gpf, int mat_idx, int totpoints, short thickness)
 {
 	/* allocate memory for a new stroke */
 	bGPDstroke *gps = MEM_callocN(sizeof(bGPDstroke), "gp_stroke");
@@ -552,8 +515,7 @@ bGPDstroke *BKE_gpencil_add_stroke(
 	gps->flag |= GP_STROKE_RECALC_CACHES;
 	gps->tot_triangles = 0;
 	
-	gps->palette = palette;
-	BLI_strncpy(gps->colorname, colorname, sizeof(gps->colorname));
+	gps->mat_nr = mat_idx;
 	
 	/* add to frame */
 	BLI_addtail(&gpf->strokes, gps);
@@ -642,33 +604,6 @@ void BKE_gpencil_frame_copy_strokes(bGPDframe *gpf_src, struct bGPDframe *gpf_ds
 	}
 }
 
-/* fix any null value in palettes (this must be removed in the future) */
-static void gpencil_fix_null_palette(const bContext *C, bGPdata *gpd, bGPDstroke *gps_src)
-{
-	Palette *tmp_palette = NULL;
-	PaletteColor *palcolor = NULL;
-
-	printf("Fixing wrong color pointer:%s\n", gps_src->colorname);
-	tmp_palette = BKE_palette_get_active_from_context(C);
-	if (!tmp_palette) {
-		bGPDpaletteref *palslot;
-
-		if (BLI_listbase_count(&gpd->palette_slots) > 0) {
-			palslot = BLI_findlink(&gpd->palette_slots, 0);
-		}
-		else {
-			palslot = BKE_gpencil_paletteslot_addnew(CTX_data_main(C), gpd,
-				"Auto-Generated Palette");
-		}		tmp_palette = palslot->palette;
-	}
-
-	gps_src->palette = tmp_palette;
-	if (BKE_palette_is_empty(tmp_palette)) {
-		palcolor = BKE_palette_color_add_name(tmp_palette, gps_src->colorname);
-	}
-
-}
-
 /* make a copy of a given gpencil frame and copy colors too */
 bGPDframe *BKE_gpencil_frame_color_duplicate(const bContext *C, bGPdata *gpd, const bGPDframe *gpf_src)
 {
@@ -686,11 +621,6 @@ bGPDframe *BKE_gpencil_frame_color_duplicate(const bContext *C, bGPdata *gpd, co
 	/* copy strokes */
 	BLI_listbase_clear(&gpf_dst->strokes);
 	for (bGPDstroke *gps_src = gpf_src->strokes.first; gps_src; gps_src = gps_src->next) {
-		/* antoniov XXX: The palette never must be null, but this avoid crash after open if NULL */
-		if (gps_src->palette == NULL) {
-			gpencil_fix_null_palette(C, gpd, gps_src);
-		}
-
 		/* make copy of source stroke */
 		gps_dst = MEM_dupallocN(gps_src);
 		gps_dst->points = MEM_dupallocN(gps_src->points);
@@ -737,39 +667,6 @@ bGPDlayer *BKE_gpencil_layer_duplicate(const bGPDlayer *gpl_src)
 	return gpl_dst;
 }
 
-/**
-* Only copy internal d

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list