[Bf-blender-cvs] [1566beb4b23] greasepencil-object: Fix error when apply color related modifiers
Antonio Vazquez
noreply at git.blender.org
Mon Jul 24 20:24:59 CEST 2017
Commit: 1566beb4b2326fedfa974414d831b5d135a37415
Author: Antonio Vazquez
Date: Mon Jul 24 16:46:03 2017 +0200
Branches: greasepencil-object
https://developer.blender.org/rB1566beb4b2326fedfa974414d831b5d135a37415
Fix error when apply color related modifiers
The effect was duplicated for each stroke and the result was wrong
===================================================================
M source/blender/blenkernel/intern/gpencil.c
M source/blender/modifiers/intern/MOD_gpencilcolor.c
M source/blender/modifiers/intern/MOD_gpenciltint.c
===================================================================
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index 2c905b44acc..65440523679 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -1894,7 +1894,7 @@ void ED_gpencil_subdiv_modifier(int UNUSED(id), GpencilSubdivModifierData *mmd,
/* change stroke thickness */
void ED_gpencil_thick_modifier(int UNUSED(id), GpencilThickModifierData *mmd, bGPDlayer *gpl, bGPDstroke *gps)
{
- if (!is_stroke_affected_by_modifier(mmd->layername, mmd->passindex, 3, gpl, gps,
+ if (!is_stroke_affected_by_modifier(mmd->layername, mmd->passindex, 1, gpl, gps,
(int)mmd->flag & GP_THICK_INVERSE_LAYER, (int)mmd->flag & GP_THICK_INVERSE_PASS)) {
return;
}
@@ -1905,7 +1905,7 @@ void ED_gpencil_thick_modifier(int UNUSED(id), GpencilThickModifierData *mmd, bG
/* tint strokes */
void ED_gpencil_tint_modifier(int UNUSED(id), GpencilTintModifierData *mmd, bGPDlayer *gpl, bGPDstroke *gps)
{
- if (!is_stroke_affected_by_modifier(mmd->layername, mmd->passindex, 3, gpl, gps,
+ if (!is_stroke_affected_by_modifier(mmd->layername, mmd->passindex, 1, gpl, gps,
(int)mmd->flag & GP_TINT_INVERSE_LAYER, (int)mmd->flag & GP_TINT_INVERSE_PASS)) {
return;
}
@@ -1920,22 +1920,25 @@ void ED_gpencil_tint_modifier(int UNUSED(id), GpencilTintModifierData *mmd, bGPD
/* color correction strokes */
void ED_gpencil_color_modifier(int UNUSED(id), GpencilColorModifierData *mmd, bGPDlayer *gpl, bGPDstroke *gps)
{
+ PaletteColor *palcolor;
float hsv[3];
- if (!is_stroke_affected_by_modifier(mmd->layername, mmd->passindex, 3, gpl, gps,
+ if (!is_stroke_affected_by_modifier(mmd->layername, mmd->passindex, 1, gpl, gps,
(int)mmd->flag & GP_COLOR_INVERSE_LAYER, (int)mmd->flag & GP_COLOR_INVERSE_PASS)) {
return;
}
- rgb_to_hsv_v(gps->palcolor->rgb, hsv);
+ palcolor = gps->palcolor;
+
+ rgb_to_hsv_v(palcolor->rgb, hsv);
add_v3_v3(hsv, mmd->hsv);
- hsv_to_rgb_v(hsv, gps->palcolor->rgb);
+ hsv_to_rgb_v(hsv, palcolor->rgb);
- rgb_to_hsv_v(gps->palcolor->fill, hsv);
+ rgb_to_hsv_v(palcolor->fill, hsv);
add_v3_v3(hsv, mmd->hsv);
- hsv_to_rgb_v(hsv, gps->palcolor->fill);
+ hsv_to_rgb_v(hsv, palcolor->fill);
- CLAMP3(gps->palcolor->rgb, 0.0f, 1.0f);
- CLAMP3(gps->palcolor->fill, 0.0f, 1.0f);
+ CLAMP3(palcolor->rgb, 0.0f, 1.0f);
+ CLAMP3(palcolor->fill, 0.0f, 1.0f);
}
/* opacity strokes */
@@ -1943,7 +1946,7 @@ void ED_gpencil_opacity_modifier(int UNUSED(id), GpencilOpacityModifierData *mmd
{
bGPDspoint *pt;
- if (!is_stroke_affected_by_modifier(mmd->layername, mmd->passindex, 3, gpl, gps,
+ if (!is_stroke_affected_by_modifier(mmd->layername, mmd->passindex, 1, gpl, gps,
(int)mmd->flag & GP_OPACITY_INVERSE_LAYER, (int)mmd->flag & GP_OPACITY_INVERSE_PASS)) {
return;
}
@@ -2001,7 +2004,7 @@ void ED_gpencil_dupli_modifier(int id, GpencilDupliModifierData *mmd, bGPDlayer
int idx = 0;
for (bGPDstroke *gps = gpf->strokes.first; gps; gps = gps->next) {
++stroke;
- if (!is_stroke_affected_by_modifier(mmd->layername, mmd->passindex, 3, gpl, gps,
+ if (!is_stroke_affected_by_modifier(mmd->layername, mmd->passindex, 1, gpl, gps,
(int)mmd->flag & GP_DUPLI_INVERSE_LAYER, (int)mmd->flag & GP_DUPLI_INVERSE_PASS)) {
continue;
}
diff --git a/source/blender/modifiers/intern/MOD_gpencilcolor.c b/source/blender/modifiers/intern/MOD_gpencilcolor.c
index 4113c2eb45a..3e97930488e 100644
--- a/source/blender/modifiers/intern/MOD_gpencilcolor.c
+++ b/source/blender/modifiers/intern/MOD_gpencilcolor.c
@@ -81,33 +81,33 @@ static DerivedMesh *applyModifier(ModifierData *md, struct EvaluationContext *UN
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_COLOR_CREATE_COLORS) {
-
- /* 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_Color Correction modifier");
- BLI_ghash_insert(gh_layer, gps->palette->id.name, gh_color);
- }
+ /* 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_Color Correction 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) {
+ /* look for color */
+ PaletteColor *newpalcolor = (PaletteColor *)BLI_ghash_lookup(gh_color, gps->palcolor->info);
+ if (newpalcolor == NULL) {
+ if (mmd->flag & GP_COLOR_CREATE_COLORS) {
if (!newpalette) {
newpalette = BKE_palette_add(G.main, "Palette");
}
newpalcolor = BKE_palette_color_copy(newpalette, gps->palcolor);
- BLI_ghash_insert(gh_color, gps->palcolor->info, newpalcolor);
- }
-
- if (newpalcolor) {
BLI_strncpy(gps->colorname, newpalcolor->info, sizeof(gps->colorname));
gps->palcolor = newpalcolor;
}
+ else {
+ newpalcolor = gps->palcolor;
+ }
+ BLI_ghash_insert(gh_color, gps->palcolor->info, newpalcolor);
+ ED_gpencil_color_modifier(-1, (GpencilColorModifierData *)md, gpl, gps);
+ }
+ else {
+ gps->palcolor = newpalcolor;
}
-
- ED_gpencil_color_modifier(-1, (GpencilColorModifierData *)md, gpl, gps);
}
}
}
diff --git a/source/blender/modifiers/intern/MOD_gpenciltint.c b/source/blender/modifiers/intern/MOD_gpenciltint.c
index 39279896543..e5de233c3e3 100644
--- a/source/blender/modifiers/intern/MOD_gpenciltint.c
+++ b/source/blender/modifiers/intern/MOD_gpenciltint.c
@@ -81,33 +81,33 @@ static DerivedMesh *applyModifier(ModifierData *md, struct EvaluationContext *UN
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) {
-
- /* 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 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) {
+ /* look for color */
+ PaletteColor *newpalcolor = (PaletteColor *)BLI_ghash_lookup(gh_color, gps->palcolor->info);
+ if (newpalcolor == NULL) {
+ if (mmd->flag & GP_TINT_CREATE_COLORS) {
if (!newpalette) {
newpalette = BKE_palette_add(G.main, "Palette");
}
newpalcolor = BKE_palette_color_copy(newpalette, gps->palcolor);
- BLI_ghash_insert(gh_color, gps->palcolor->info, newpalcolor);
- }
-
- if (newpalcolor) {
BLI_strncpy(gps->colorname, newpalcolor->info, sizeof(gps->colorname));
gps->palcolor = newpalcolor;
}
+ else {
+ newpalcolor = gps->palcolor;
+ }
+ BLI_ghash_insert(gh_color, gps->palcolor->info, newpalcolor);
+ ED_gpencil_tint_modifier(-1, (GpencilTintModifierData *)md, gpl, gps);
+ }
+ else {
+ gps->palcolor = newpalcolor;
}
-
- ED_gpencil_tint_modifier(-1, (GpencilTintModifierData *)md, gpl, gps);
}
}
}
More information about the Bf-blender-cvs
mailing list