Commit: 55c2e8922226cdcfd485b3df10de4359c9c73b89 Author: Antonio Vazquez Date: Wed Apr 25 20:19:49 2018 +0200 Branches: greasepencil-object https://developer.blender.org/rB55c2e8922226cdcfd485b3df10de4359c9c73b89
WIP: Mega Refactor to replace Palettes with Materials - 1 =================================================================== 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/library_query.c M source/blender/blenkernel/intern/paint.c M source/blender/blenloader/intern/readfile.c M source/blender/blenloader/intern/versioning_280.c M source/blender/blenloader/intern/writefile.c M source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c M source/blender/draw/engines/gpencil/gpencil_engine.h M source/blender/draw/engines/gpencil/gpencil_geom.c M source/blender/editors/animation/anim_channels_defines.c M source/blender/editors/animation/anim_filter.c M source/blender/editors/animation/keyframes_draw.c M source/blender/editors/gpencil/drawgpencil.c M source/blender/editors/gpencil/gpencil_add_monkey.c M source/blender/editors/gpencil/gpencil_brush.c M source/blender/editors/gpencil/gpencil_colorpick.c M source/blender/editors/gpencil/gpencil_data.c M source/blender/editors/gpencil/gpencil_edit.c M source/blender/editors/gpencil/gpencil_fill.c M source/blender/editors/gpencil/gpencil_intern.h M source/blender/editors/gpencil/gpencil_interpolate.c M source/blender/editors/gpencil/gpencil_ops.c M source/blender/editors/gpencil/gpencil_paint.c M source/blender/editors/gpencil/gpencil_primitive.c M source/blender/editors/gpencil/gpencil_utils.c M source/blender/editors/include/ED_gpencil.h M source/blender/editors/screen/screen_context.c M source/blender/editors/screen/screen_ops.c M source/blender/editors/sculpt_paint/paint_ops.c M source/blender/editors/space_view3d/view3d_manipulator_ruler.c M source/blender/editors/space_view3d/view3d_ruler.c M source/blender/editors/transform/transform_conversions.c M source/blender/makesdna/DNA_brush_types.h M source/blender/makesdna/DNA_gpencil_types.h M source/blender/makesrna/intern/rna_brush.c M source/blender/makesrna/intern/rna_gpencil.c M source/blender/makesrna/intern/rna_palette.c M source/blender/modifiers/intern/MOD_gpencil_util.c M source/blender/modifiers/intern/MOD_gpencil_util.h M source/blender/modifiers/intern/MOD_gpencilarray.c M source/blender/modifiers/intern/MOD_gpencilcolor.c M source/blender/modifiers/intern/MOD_gpencilhook.c M source/blender/modifiers/intern/MOD_gpencillattice.c M source/blender/modifiers/intern/MOD_gpencilnoise.c M source/blender/modifiers/intern/MOD_gpenciloffset.c M source/blender/modifiers/intern/MOD_gpencilopacity.c M source/blender/modifiers/intern/MOD_gpencilsimplify.c M source/blender/modifiers/intern/MOD_gpencilsmooth.c M source/blender/modifiers/intern/MOD_gpencilsubdiv.c M source/blender/modifiers/intern/MOD_gpencilthick.c M source/blender/modifiers/intern/MOD_gpenciltint.c =================================================================== diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h index 236adb3f1dc..3da8b67b2e0 100644 --- a/source/blender/blenkernel/BKE_gpencil.h +++ b/source/blender/blenkernel/BKE_gpencil.h @@ -41,11 +41,10 @@ struct bGPDlayer; struct bGPDframe; struct bGPDspoint; struct bGPDstroke; -struct bGPDpaletteref; +struct Material; struct bGPDpalette; struct bGPDpalettecolor; struct Main; -struct PaletteColor; struct BoundBox; struct Brush; struct Object; @@ -53,7 +52,6 @@ struct bDeformGroup; struct GpencilSimplifyModifierData; struct GpencilArrayModifierData; struct GpencilLatticeModifierData; -struct Palette; /* ------------ Grease-Pencil API ------------------ */ @@ -86,7 +84,6 @@ struct bGPDstroke *BKE_gpencil_stroke_duplicate(struct bGPDstroke *gps_src); void BKE_gpencil_copy_data(struct Main *bmain, struct bGPdata *gpd_dst, const struct bGPdata *gpd_src, const int flag); struct bGPdata *BKE_gpencil_copy(struct Main *bmain, const struct bGPdata *gpd); struct bGPdata *BKE_gpencil_data_duplicate(struct Main *bmain, const struct bGPdata *gpd, bool internal_copy); -void BKE_gpencil_copy_palette_data(struct bGPdata *gpd_dst, const struct bGPdata *gpd_src); void BKE_gpencil_make_local(struct Main *bmain, struct bGPdata *gpd, const bool lib_local); @@ -107,13 +104,7 @@ void BKE_gpencil_stroke_add_points( const float *array, const int totpoints, const float mat[4][4]); -struct bGPDstroke *BKE_gpencil_add_stroke( - struct bGPDframe *gpf, struct Palette *palette, struct PaletteColor *palcolor, int totpoints, - const char *colorname, short thickness); - - -/* conversion of animation data from bGPDpalette to Palette */ -void BKE_gpencil_move_animdata_to_palettes(struct bContext *C, struct bGPdata *gpd); +struct bGPDstroke *BKE_gpencil_add_stroke(struct bGPDframe *gpf, int mat_idx, int totpoints, short thickness); /* Stroke and Fill - Alpha Visibility Threshold */ #define GPENCIL_ALPHA_OPACITY_THRESH 0.001f @@ -142,22 +133,8 @@ struct bGPDlayer *BKE_gpencil_layer_getactive(struct bGPdata *gpd); void BKE_gpencil_layer_setactive(struct bGPdata *gpd, struct bGPDlayer *active); void BKE_gpencil_layer_delete(struct bGPdata *gpd, struct bGPDlayer *gpl); -/* Palette Slots */ -void BKE_gpencil_palette_slot_free(struct bGPdata *gpd, struct bGPDpaletteref *palslot); - -struct bGPDpaletteref *BKE_gpencil_paletteslot_find(struct bGPdata *gpd, const struct Palette *palette); -bool BKE_gpencil_paletteslot_has_users(const struct bGPdata *gpd, const struct bGPDpaletteref *palslot); - -struct bGPDpaletteref *BKE_gpencil_paletteslot_get_active(const struct bGPdata *gpd); -void BKE_gpencil_paletteslot_set_active(struct bGPdata *gpd, const struct bGPDpaletteref *palslot); -void BKE_gpencil_paletteslot_set_active_palette(struct bGPdata *gpd, const struct Palette *palette); - -void BKE_gpencil_paletteslot_set_palette(struct bGPdata *gpd, struct bGPDpaletteref *palslot, struct Palette *palette); - -struct bGPDpaletteref *BKE_gpencil_paletteslot_add(struct bGPdata *gpd, struct Palette *palette); -struct bGPDpaletteref *BKE_gpencil_paletteslot_addnew(struct Main *bmain, struct bGPdata *gpd, const char name[]); -struct bGPDpaletteref *BKE_gpencil_paletteslot_validate(struct Main *bmain, struct bGPdata *gpd); -struct PaletteColor *BKE_gpencil_get_color_from_brush(struct bGPdata *gpd, struct Brush *brush, bool add); +struct Material *BKE_gpencil_get_color_from_brush(struct bGPdata *gpd, struct Brush *brush, bool add); +struct Material *BKE_gpencil_color_ensure(struct Main *bmain, struct Object *ob); /* Palettes - Deprecated (2.78-2.79) */ void BKE_gpencil_free_palettes(struct ListBase *list); diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h index 6bdc05e76f3..534148b6c9b 100644 --- a/source/blender/blenkernel/BKE_paint.h +++ b/source/blender/blenkernel/BKE_paint.h @@ -108,21 +108,10 @@ void BKE_palette_copy_data( struct Main *bmain, struct Palette *palette_dst, const struct Palette *palette_src, const int flag); struct Palette *BKE_palette_copy(struct Main *bmain, const struct Palette *palette); void BKE_palette_make_local(struct Main *bmain, struct Palette *palette, const bool lib_local); -bool BKE_palette_is_empty(const struct Palette *palette); -void BKE_palette_clear(struct Palette *palette); -struct Palette *BKE_palette_get_active_from_context(const struct bContext *C); -void BKE_palette_set_active_byname(const struct bContext *C, char *palname); - struct PaletteColor *BKE_palette_color_add(struct Palette *palette); -struct PaletteColor *BKE_palette_color_add_name(struct Palette *palette, const char *name); -struct PaletteColor *BKE_palette_color_getbyname(struct Palette *palette, const char *name); -struct PaletteColor *BKE_gpencil_palettecolor_getbyrgb(struct Palette *palette, float rgb[3]); -struct PaletteColor *BKE_gpencil_palettecolor_getbyrgba(struct Palette *palette, float rgba[4]); +bool BKE_palette_is_empty(const 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); -struct PaletteColor *BKE_palette_color_copy(struct Palette *palette, struct PaletteColor *palcolor); +void BKE_palette_clear(struct Palette *palette); /* 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 1312bfae37a..f4d5fc05a08 100644 --- a/source/blender/blenkernel/intern/gpencil.c +++ b/source/blender/blenkernel/intern/gpencil.c @@ -47,6 +47,7 @@ #include "BLT_translation.h" #include "DNA_anim_types.h" +#include "DNA_material_types.h" #include "DNA_gpencil_types.h" #include "DNA_userdef_types.h" #include "DNA_scene_types.h" @@ -61,7 +62,7 @@ #include "BKE_library.h" #include "BKE_main.h" #include "BKE_object.h" -#include "BKE_paint.h" +#include "BKE_material.h" #include "DEG_depsgraph.h" @@ -201,39 +202,6 @@ void BKE_gpencil_free_layers(ListBase *list) } } -/* Free palette slot - * NOTE: This doesn't unlink the palette from any strokes that may be using it - */ -void BKE_gpencil_palette_slot_free(bGPdata *gpd, bGPDpaletteref *palslot) -{ - if (ELEM(NULL, gpd, palslot)) - return; - - /* unlink palette */ - if (palslot->palette) { - id_us_min(&palslot->palette->id); - } - - /* free slot */ - BLI_freelinkN(&gpd->palette_slots, palslot); -} - -/* Free palette slots */ -static void BKE_gpencil_free_paletteslots(bGPdata *gpd) -{ - bGPDpaletteref *palslot, *gpr_next; - - /* error checking */ - if (gpd == NULL) return; - - /* delete palette slots */ - for (palslot = gpd->palette_slots.first; palslot; palslot = gpr_next) { - gpr_next = palslot->next; - - BKE_gpencil_palette_slot_free(gpd, palslot); - } -} - /* clear all runtime derived data */ static void BKE_gpencil_clear_derived(bGPDlayer *gpl) { @@ -300,9 +268,6 @@ void BKE_gpencil_free(bGPdata *gpd, bool free_all) } BKE_gpencil_free_layers(&gpd->layers); - /* free palette slots */ - BKE_gpencil_free_paletteslots(gpd); - /* free all data */ if (free_all) { /* clear cache */ @@ -531,9 +496,7 @@ void BKE_gpencil_stroke_add_points(bGPDstroke *gps, const float *array, const in } /* Create a new stroke, with pre-allocated data buffers */ -bGPDstroke *BKE_gpencil_add_stroke( - bGPDframe *gpf, Palette *palette, PaletteColor *palcolor, int totpoints, - const char *colorname, short thickness) +bGPDstroke *BKE_gpencil_add_stroke(bGPDframe *gpf, int mat_idx, int totpoints, short thickness) { /* allocate memory for a new stroke */ bGPDstroke *gps = MEM_callocN(sizeof(bGPDstroke), "gp_stroke"); @@ -552,8 +515,7 @@ bGPDstroke *BKE_gpencil_add_stroke( gps->flag |= GP_STROKE_RECALC_CACHES; gps->tot_triangles = 0; - gps->palette = palette; - BLI_strncpy(gps->colorname, colorname, sizeof(gps->colorname)); + gps->mat_nr = mat_idx; /* add to frame */ BLI_addtail(&gpf->strokes, gps); @@ -642,33 +604,6 @@ void BKE_gpencil_frame_copy_strokes(bGPDframe *gpf_src, struct bGPDframe *gpf_ds } } -/* fix any null value in palettes (this must be removed in the future) */ -static void gpencil_fix_null_palette(const bContext *C, bGPdata *gpd, bGPDstroke *gps_src) -{ - Palette *tmp_palette = NULL; - PaletteColor *palcolor = NULL; - - printf("Fixing wrong color pointer:%s\n", gps_src->colorname); - tmp_palette = BKE_palette_get_active_from_context(C); - if (!tmp_palette) { - bGPDpaletteref *palslot; - - if (BLI_listbase_count(&gpd->palette_slots) > 0) { - palslot = BLI_findlink(&gpd->palette_slots, 0); - } - else { - palslot = BKE_gpencil_paletteslot_addnew(CTX_data_main(C), gpd, - "Auto-Generated Palette"); - } tmp_palette = palslot->palette; - } - - gps_src->palette = tmp_palette; - if (BKE_palette_is_empty(tmp_palette)) { - palcolor = BKE_palette_color_add_name(tmp_palette, gps_src->colorname); - } - -} - /* make a copy of a given gpencil frame and copy colors too */ bGPDframe *BKE_gpencil_frame_color_duplicate(const bContext *C, bGPdata *gpd, const bGPDframe *gpf_src) { @@ -686,11 +621,6 @@ bGPDframe *BKE_gpencil_frame_color_duplicate(const bContext *C, bGPdata *gpd, co /* copy strokes */ BLI_listbase_clear(&gpf_dst->strokes); for (bGPDstroke *gps_src = gpf_src->strokes.first; gps_src; gps_src = gps_src->next) { - /* antoniov XXX: The palette never must be null, but this avoid crash after open if NULL */ - if (gps_src->palette == NULL) { - gpencil_fix_null_palette(C, gpd, gps_src); - } - /* make copy of source stroke */ gps_dst = MEM_dupallocN(gps_src); gps_dst->points = MEM_dupallocN(gps_src->points); @@ -737,39 +667,6 @@ bGPDlayer *BKE_gpencil_layer_duplicate(const bGPDlayer *gpl_src) return gpl_dst; } -/** -* Only copy internal d @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs