[Bf-blender-cvs] [0b2c0819430] greasepencil-object: New Tint modifier
Antonio Vazquez
noreply at git.blender.org
Mon Jul 17 20:42:11 CEST 2017
Commit: 0b2c08194301ce8429cc3523d4d99a5d2f3a36a1
Author: Antonio Vazquez
Date: Mon Jul 17 20:40:42 2017 +0200
Branches: greasepencil-object
https://developer.blender.org/rB0b2c08194301ce8429cc3523d4d99a5d2f3a36a1
New Tint modifier
This modifier allows to tint with a color all strokes and create a new set of colors when apply the modifier
===================================================================
M release/scripts/startup/bl_ui/properties_data_modifier.py
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/paint.c
M source/blender/editors/sculpt_paint/paint_ops.c
M source/blender/makesdna/DNA_modifier_types.h
M source/blender/makesrna/intern/rna_modifier.c
M source/blender/modifiers/CMakeLists.txt
M source/blender/modifiers/MOD_modifiertypes.h
A source/blender/modifiers/intern/MOD_gpenciltint.c
M source/blender/modifiers/intern/MOD_util.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 84ad120a97d..4c4a3aff50d 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1577,6 +1577,22 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col.label("Layer:")
col.prop_search(md, "layer", gpd, "layers", text="", icon="GREASEPENCIL")
+ def GP_TINT(self, layout, ob, md):
+ gpd = ob.grease_pencil
+ split = layout.split()
+
+ col = split.column()
+ col.prop(md, "color")
+ col.prop(md, "factor")
+
+ col = split.column()
+ col.label("Layer:")
+ col.prop_search(md, "layer", gpd, "layers", text="", icon="GREASEPENCIL")
+ col.prop(md, "passindex", text="Pass")
+
+ row = layout.row()
+ row.prop(md, "create_colors")
+
classes = (
DATA_PT_modifiers,
)
diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h
index df1f9daab45..e3d3bb9bda2 100644
--- a/source/blender/blenkernel/BKE_gpencil.h
+++ b/source/blender/blenkernel/BKE_gpencil.h
@@ -46,6 +46,7 @@ struct Object;
struct GpencilNoiseModifierData;
struct GpencilSubdivModifierData;
struct GpencilThickModifierData;
+struct GpencilTintModifierData;
/* ------------ Grease-Pencil API ------------------ */
@@ -139,5 +140,6 @@ void ED_gpencil_stroke_modifiers(struct Object *ob, struct bGPDlayer *gpl, struc
void ED_gpencil_noise_modifier(struct GpencilNoiseModifierData *mmd, struct bGPDlayer *gpl, struct bGPDstroke *gps);
void ED_gpencil_subdiv_modifier(struct GpencilSubdivModifierData *mmd, struct bGPDlayer *gpl, struct bGPDstroke *gps);
void ED_gpencil_thick_modifier(struct GpencilThickModifierData *mmd, struct bGPDlayer *gpl, struct bGPDstroke *gps);
+void ED_gpencil_tint_modifier(struct GpencilTintModifierData *mmd, struct bGPDlayer *gpl, struct bGPDstroke *gps);
#endif /* __BKE_GPENCIL_H__ */
diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h
index 18411d7d00d..3a1c05590c7 100644
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@ -117,6 +117,7 @@ void BKE_palette_color_remove(struct Palette *palette, struct Pa
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);
/* 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 f497fa0e551..0cb35af3094 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -1725,7 +1725,7 @@ void ED_gpencil_subdiv_modifier(GpencilSubdivModifierData *mmd, bGPDlayer *gpl,
}
}
-/* subdivision surface */
+/* change stroke thickness */
void ED_gpencil_thick_modifier(GpencilThickModifierData *mmd, bGPDlayer *gpl, bGPDstroke *gps)
{
if (!is_stroke_affected_by_modifier(mmd->layername, mmd->passindex, 0, gpl, gps)) {
@@ -1735,6 +1735,16 @@ void ED_gpencil_thick_modifier(GpencilThickModifierData *mmd, bGPDlayer *gpl, bG
gps->thickness += mmd->thickness;
}
+/* tint strokes */
+void ED_gpencil_tint_modifier(GpencilTintModifierData *mmd, bGPDlayer *gpl, bGPDstroke *gps)
+{
+ if (!is_stroke_affected_by_modifier(mmd->layername, mmd->passindex, 0, gpl, gps)) {
+ return;
+ }
+ interp_v3_v3v3(gps->palcolor->rgb, gps->palcolor->rgb, mmd->rgb, mmd->factor);
+ interp_v3_v3v3(gps->palcolor->fill, gps->palcolor->fill, mmd->rgb, mmd->factor);
+}
+
/* apply stroke modifiers */
void ED_gpencil_stroke_modifiers(Object *ob, bGPDlayer *gpl, bGPDstroke *gps)
{
@@ -1752,10 +1762,14 @@ void ED_gpencil_stroke_modifiers(Object *ob, bGPDlayer *gpl, bGPDstroke *gps)
case eModifierType_GpencilSubdiv:
ED_gpencil_subdiv_modifier((GpencilSubdivModifierData *)md, gpl, gps);
break;
- // Subdiv Surface
+ // Thickness
case eModifierType_GpencilThick:
ED_gpencil_thick_modifier((GpencilThickModifierData *)md, gpl, gps);
break;
+ // Tint
+ case eModifierType_GpencilTint:
+ ED_gpencil_tint_modifier((GpencilTintModifierData *)md, gpl, gps);
+ break;
default:
break;
}
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 7c10a87b96f..89ae0769fd7 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -518,6 +518,35 @@ void BKE_palette_color_add_default_set(Palette *palette)
ARRAY_SET_ITEMS(palcolor->rgb, 0.0, 0.0, 1.0, 1.0);
}
+PaletteColor *BKE_palette_color_copy(Palette *palette, PaletteColor *palcolor)
+{
+ PaletteColor *newcolor = NULL;
+
+ newcolor = BKE_palette_color_add_name(palette, palcolor->info);
+ copy_v4_v4(newcolor->rgb, palcolor->rgb);
+ copy_v4_v4(newcolor->fill, palcolor->fill);
+ copy_v4_v4(newcolor->scolor, palcolor->scolor);
+ newcolor->value = palcolor->value;
+ newcolor->flag = palcolor->flag;
+ newcolor->stroke_style = palcolor->stroke_style;
+ newcolor->fill_style = palcolor->fill_style;
+ newcolor->index = palcolor->index;
+ newcolor->mix_factor = palcolor->mix_factor;
+ newcolor->g_angle = palcolor->g_angle;
+ newcolor->g_radius = palcolor->g_radius;
+ newcolor->g_boxsize = palcolor->g_boxsize;
+ copy_v2_v2(newcolor->g_scale, palcolor->g_scale);
+ copy_v2_v2(newcolor->g_shift, palcolor->g_shift);
+ newcolor->t_angle = palcolor->t_angle;
+ copy_v2_v2(newcolor->t_scale, palcolor->t_scale);
+ copy_v2_v2(newcolor->t_shift, palcolor->t_shift);
+ newcolor->t_opacity = palcolor->t_opacity;
+ newcolor->sima = palcolor->sima;
+ newcolor->ima = palcolor->ima;
+
+ return newcolor;
+}
+
PaletteColor *BKE_palette_color_add(Palette *palette)
{
return BKE_palette_color_add_name(palette, "Color");
diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c
index f32a9697b3c..ad1b515b3c4 100644
--- a/source/blender/editors/sculpt_paint/paint_ops.c
+++ b/source/blender/editors/sculpt_paint/paint_ops.c
@@ -748,26 +748,7 @@ static int palettecolor_copy_exec(bContext *C, wmOperator *UNUSED(op))
return OPERATOR_CANCELLED;
/* create a new color and duplicate data */
- newcolor = BKE_palette_color_add_name(palette, palcolor->info);
- copy_v4_v4(newcolor->rgb, palcolor->rgb);
- copy_v4_v4(newcolor->fill, palcolor->fill);
- copy_v4_v4(newcolor->scolor, palcolor->scolor);
- newcolor->value = palcolor->value;
- newcolor->flag = palcolor->flag;
- newcolor->stroke_style = palcolor->stroke_style;
- newcolor->fill_style = palcolor->fill_style;
- newcolor->index = palcolor->index;
- newcolor->mix_factor = palcolor->mix_factor;
- newcolor->g_angle = palcolor->g_angle;
- newcolor->g_radius = palcolor->g_radius;
- newcolor->g_boxsize = palcolor->g_boxsize;
- copy_v2_v2(newcolor->g_scale, palcolor->g_scale);
- copy_v2_v2(newcolor->g_shift, palcolor->g_shift);
- newcolor->t_angle = palcolor->t_angle;
- copy_v2_v2(newcolor->t_scale, palcolor->t_scale);
- copy_v2_v2(newcolor->t_shift, palcolor->t_shift);
- newcolor->t_opacity = palcolor->t_opacity;
- newcolor->ima = palcolor->ima;
+ newcolor = BKE_palette_color_copy(palette, palcolor);
/* notifiers */
WM_event_add_notifier(C, NC_GPENCIL | ND_DATA | NA_EDITED, NULL);
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index 796204f49f2..cd9ba951e21 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -89,7 +89,8 @@ typedef enum ModifierType {
eModifierType_SurfaceDeform = 53,
eModifierType_GpencilNoise = 54,
eModifierType_GpencilSubdiv = 55,
- eModifierType_GpencilThick = 56,
+ eModifierType_GpencilThick = 56,
+ eModifierType_GpencilTint = 57,
NUM_MODIFIER_TYPES
} ModifierType;
@@ -1654,6 +1655,19 @@ typedef struct GpencilThickModifierData {
char pad[4];
} GpencilThickModifierData;
+typedef struct GpencilTintModifierData {
+ ModifierData modifier;
+ char layername[64]; /* layer name */
+ int passindex; /* custom index for passes */
+ int flag; /* flags */
+ float rgb[3]; /* Tint color */
+ float factor; /* Mix factor */
+} GpencilTintModifierData;
+
+typedef enum eGpencilTint_Flag {
+ GP_TINT_CREATE_COLORS = (1 << 0),
+} eGpencilTint_Flag;
+
#define MOD_MESHSEQ_READ_ALL \
(MOD_MESHSEQ_READ_VERT | MOD_MESHSEQ_READ_POLY | MOD_MESHSEQ_READ_UV | MOD_MESHSEQ_READ_COLOR)
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index f0d6a49ffbc..f6e9ae95394 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -124,6 +124,7 @@ EnumPropertyItem rna_enum_object_modifier_type_items[] = {
{eModifierType_GpencilNoise, "GP_NOISE", ICON_RNDCURVE, "Noise", "Add noise to strokes" },
{eModifierType_GpencilSubdiv, "GP_SUBDIV", ICON_MOD_SUBSURF, "Subdivide", "Subdivide stroke adding more control points to strokes" },
{eModifierType_GpencilThick, "GP_THICK", ICON_MAN_ROT, "Thickness", "Change stroke thickness" },
+ {eModifierType_GpencilTint, "GP_TINT", ICON_COLOR, "Tint", "Tint strokes with new color" },
{0, NULL, 0, NULL, NULL}
};
@@ -424,7 +425,9 @@ static StructRNA *rna_Modifier_refine(struct PointerRNA *ptr)
return &RNA_GpencilSubdivModifier;
case eModifierType_GpencilThick:
return &RNA_GpencilThickModifier;
- /* Default */
+ case eModifierType_GpencilTint:
+ return &RNA_GpencilTintModifier;
+ /* Default */
case eModifierType_None:
case eModifierType_ShapeKey:
case NUM_MODIFIER_TYPES:
@@ -4879,6 +4882,47 @@ static void rna_def_modifier_gpencilthick(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Modifier_update");
}
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list