[Bf-blender-cvs] [e2a26260b59] greasepencil-object: Support several palettes in Tint modifier
Antonio Vazquez
noreply at git.blender.org
Tue Jul 18 10:51:07 CEST 2017
Commit: e2a26260b5994ab1500e3463c3a28ee0ac7a402b
Author: Antonio Vazquez
Date: Tue Jul 18 10:50:50 2017 +0200
Branches: greasepencil-object
https://developer.blender.org/rBe2a26260b5994ab1500e3463c3a28ee0ac7a402b
Support several palettes in Tint modifier
When create a new set of color, support to have several colors with the same name in different palettes
===================================================================
M source/blender/modifiers/intern/MOD_gpenciltint.c
===================================================================
diff --git a/source/blender/modifiers/intern/MOD_gpenciltint.c b/source/blender/modifiers/intern/MOD_gpenciltint.c
index 1fee9bea756..0a0a28c629b 100644
--- a/source/blender/modifiers/intern/MOD_gpenciltint.c
+++ b/source/blender/modifiers/intern/MOD_gpenciltint.c
@@ -72,16 +72,27 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
return NULL;
}
gpd = ob->gpd;
- GHash *gh = BLI_ghash_str_new("GP_Tint modifier");
+ GHash *gh_layer = BLI_ghash_str_new("GP_Tint Layer modifier");
+ GHash *gh_color;
+
for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
for (bGPDframe *gpf = gpl->frames.first; gpf; gpf = gpf->next) {
for (bGPDstroke *gps = gpf->strokes.first; gps; gps = gps->next) {
+ /* create a new set of colors */
if (mmd->flag & GP_TINT_CREATE_COLORS) {
- /* TODO: add support for same name in two palettes */
- PaletteColor *newpalcolor = BLI_ghash_lookup(gh, gps->palcolor->info);
+
+ /* look for palette */
+ gh_color = (GHash *)BLI_ghash_lookup(gh_layer, gps->palette->id.name);
+ if (gh_color == NULL) {
+ gh_color = BLI_ghash_str_new("GP_Tint Color modifier");
+ BLI_ghash_insert(gh_layer, gps->palette->id.name, gh_color);
+ }
+
+ /* look for color */
+ PaletteColor *newpalcolor = (PaletteColor *) BLI_ghash_lookup(gh_color, gps->palcolor->info);
if (newpalcolor == NULL) {
newpalcolor = BKE_palette_color_copy(gps->palette, gps->palcolor);
- BLI_ghash_insert(gh, gps->palcolor->info, newpalcolor);
+ BLI_ghash_insert(gh_color, gps->palcolor->info, newpalcolor);
}
if (newpalcolor) {
@@ -94,10 +105,21 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
}
}
}
- /* free hash buffer */
- if (gh) {
- BLI_ghash_free(gh, NULL, NULL);
- gh = NULL;
+ /* free hash buffers */
+ GHashIterator *ihash = BLI_ghashIterator_new(gh_layer);
+ while (!BLI_ghashIterator_done(ihash)) {
+ GHash *gh = BLI_ghashIterator_getValue(ihash);
+ if (gh) {
+ BLI_ghash_free(gh, NULL, NULL);
+ gh = NULL;
+ }
+ BLI_ghashIterator_step(ihash);
+ }
+ BLI_ghashIterator_free(ihash);
+
+ if (gh_layer) {
+ BLI_ghash_free(gh_layer, NULL, NULL);
+ gh_layer = NULL;
}
return NULL;
More information about the Bf-blender-cvs
mailing list