[Bf-blender-cvs] [125e2092ca1] greasepencil-object: Create default brushes and colors

Antonio Vazquez noreply at git.blender.org
Wed Jul 12 20:40:44 CEST 2017


Commit: 125e2092ca19ac5974c96473d3c72ddc06996a3c
Author: Antonio Vazquez
Date:   Wed Jul 12 20:31:03 2017 +0200
Branches: greasepencil-object
https://developer.blender.org/rB125e2092ca19ac5974c96473d3c72ddc06996a3c

Create default brushes and colors

Create a set of colors and drawing brushes when add a new GP object.

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

M	source/blender/blenkernel/BKE_paint.h
M	source/blender/blenkernel/intern/paint.c
M	source/blender/editors/gpencil/gpencil_utils.c
M	source/blender/editors/include/ED_gpencil.h
M	source/blender/editors/object/object_add.c

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

diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h
index 195720d4389..9ac3afdedf6 100644
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@ -115,6 +115,7 @@ struct PaletteColor *BKE_gpencil_palettecolor_getbyrgba(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);
 
 /* paint curves */
 struct PaintCurve *BKE_paint_curve_add(struct Main *bmain, const char *name);
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 52abbd313e8..52b317d8230 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -485,6 +485,25 @@ void BKE_palette_free(Palette *palette)
 	}
 }
 
+void BKE_palette_color_add_default_set(Palette *palette)
+{
+	PaletteColor *palcolor;
+	palcolor = BKE_palette_color_add_name(palette, "Black");
+	ARRAY_SET_ITEMS(palcolor->rgb, 0.0, 0.0, 0.0, 1.0);
+
+	palcolor = BKE_palette_color_add_name(palette, "White");
+	ARRAY_SET_ITEMS(palcolor->rgb, 1.0, 1.0, 1.0, 1.0);
+
+	palcolor = BKE_palette_color_add_name(palette, "Red");
+	ARRAY_SET_ITEMS(palcolor->rgb, 1.0, 0.0, 0.0, 1.0);
+
+	palcolor = BKE_palette_color_add_name(palette, "Green");
+	ARRAY_SET_ITEMS(palcolor->rgb, 0.0, 1.0, 0.0, 1.0);
+
+	palcolor = BKE_palette_color_add_name(palette, "Blue");
+	ARRAY_SET_ITEMS(palcolor->rgb, 0.0, 0.0, 1.0, 1.0);
+}
+
 PaletteColor *BKE_palette_color_add(Palette *palette)
 {
 	return BKE_palette_color_add_name(palette, "Color");
diff --git a/source/blender/editors/gpencil/gpencil_utils.c b/source/blender/editors/gpencil/gpencil_utils.c
index f7ae621a8a4..c99ba4f210d 100644
--- a/source/blender/editors/gpencil/gpencil_utils.c
+++ b/source/blender/editors/gpencil/gpencil_utils.c
@@ -1130,10 +1130,32 @@ Object *ED_add_gpencil_object(bContext *C, Scene *scene, const float loc[3])
 
 	/* define size */
 	BKE_object_obdata_size_init(ob, GP_OBGPENCIL_DEFAULT_SIZE);
-	
+	/* create default brushes and colors */
+	ED_gpencil_add_defaults(C);
+
 	return ob;
 }
 
+/* Helper function to create default colors and drawing brushes */
+void ED_gpencil_add_defaults(bContext *C)
+{
+	ToolSettings *ts = CTX_data_tool_settings(C);
+	Palette *palette = BKE_palette_get_active_from_context(C);
+	/* if not exist palette, create a new one */
+	if (!palette) {
+		palette = BKE_palette_add_gpencil(C);
+	}
+	if ((palette) && (BLI_listbase_is_empty(&palette->colors))) {
+		BKE_palette_color_add_default_set(palette);
+	}
+
+	/* create default brushes */
+	if (BLI_listbase_is_empty(&ts->gp_brushes)) {
+		BKE_gpencil_brush_init_presets(ts);
+	}
+}
+
+
 /* allocate memory for saving gp object to be sorted by zdepth */
 tGPencilSort *ED_gpencil_allocate_cache(tGPencilSort *cache, int *gp_cache_size, int gp_cache_used)
 {
diff --git a/source/blender/editors/include/ED_gpencil.h b/source/blender/editors/include/ED_gpencil.h
index cc9f9b0dd8b..bc023e7ca27 100644
--- a/source/blender/editors/include/ED_gpencil.h
+++ b/source/blender/editors/include/ED_gpencil.h
@@ -204,6 +204,7 @@ void ED_gpencil_reset_layers_parent(struct Object *obact, struct bGPdata *gpd);
 /* TODO: add size as userprefs parameter */
 #define GP_OBGPENCIL_DEFAULT_SIZE  0.5f 
 struct Object *ED_add_gpencil_object(struct bContext *C, struct Scene *scene, const float loc[3]);
+void ED_gpencil_add_defaults(struct bContext *C);
 
 struct tGPencilSort *ED_gpencil_allocate_cache(struct tGPencilSort *cache, int *gp_cache_size, int gp_cache_used);
 void ED_gpencil_add_to_cache(struct tGPencilSort *cache, struct RegionView3D *rv3d, struct Base *base, int *gp_cache_used);
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index 4ff43cc945c..bd02481a974 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -1012,6 +1012,7 @@ static int object_gpencil_add_exec(bContext *C, wmOperator *op)
 	ts->gpencil_src = GP_TOOL_SOURCE_OBJECT;
 	/* add a grease pencil datablock */	
 	ob->gpd = BKE_gpencil_data_addnew("GPencil");
+	ED_gpencil_add_defaults(C);
 
 	return OPERATOR_FINISHED;
 }




More information about the Bf-blender-cvs mailing list