[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