[Bf-blender-cvs] [e2a7fca986a] soc-2019-npr: GPencil: Make sample modifier a part of simplify modifier.

YimingWu noreply at git.blender.org
Wed Jul 17 08:40:33 CEST 2019


Commit: e2a7fca986a2a1aa4c59671bf9ba5722d36f5247
Author: YimingWu
Date:   Wed Jul 17 14:40:00 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rBe2a7fca986a2a1aa4c59671bf9ba5722d36f5247

GPencil: Make sample modifier a part of simplify modifier.

===================================================================

M	release/scripts/startup/bl_ui/properties_data_modifier.py
M	source/blender/gpencil_modifiers/CMakeLists.txt
M	source/blender/gpencil_modifiers/MOD_gpencil_modifiertypes.h
M	source/blender/gpencil_modifiers/intern/MOD_gpencil_util.c
D	source/blender/gpencil_modifiers/intern/MOD_gpencilsample.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilsimplify.c
M	source/blender/makesdna/DNA_gpencil_modifier_types.h
M	source/blender/makesrna/intern/rna_gpencil_modifier.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 0b81884f0c2..336c12d53e6 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1863,13 +1863,13 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
 
         col = split.column()
         col.label(text="Settings:")
-        row = col.row(align=True)
-        row.enabled = md.mode == 'FIXED'
-        row.prop(md, "step")
 
-        row = col.row(align=True)
-        row.enabled = not md.mode == 'FIXED'
-        row.prop(md, "factor")
+        if md.mode == 'FIXED':
+            col.prop(md, "step")
+        elif md.mode == 'ADAPTIVE':
+            col.prop(md, "factor")
+        elif md.mode == 'SAMPLE':
+            col.prop(md, "length")
 
         col = layout.column()
         col.separator()
@@ -2342,10 +2342,6 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
         row = layout.row(align=True)
         row.prop(md, "layer_pass", text="Pass")
         row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
-
-    def GP_SAMPLE(self, layout, ob, md):
-        col = layout.column()
-        col.prop(md, "length")
     
     def GP_LENGTH(self, layout, ob, md):
         sp = layout.split()
diff --git a/source/blender/gpencil_modifiers/CMakeLists.txt b/source/blender/gpencil_modifiers/CMakeLists.txt
index e5380ae4516..1c497ff7b8d 100644
--- a/source/blender/gpencil_modifiers/CMakeLists.txt
+++ b/source/blender/gpencil_modifiers/CMakeLists.txt
@@ -57,7 +57,6 @@ set(SRC
   intern/MOD_gpencilopacity.c
   intern/MOD_gpencilsimplify.c
   intern/MOD_gpencilsmooth.c
-  intern/MOD_gpencilsample.c
   intern/MOD_gpencilsubdiv.c
   intern/MOD_gpencilthick.c
   intern/MOD_gpenciltime.c
diff --git a/source/blender/gpencil_modifiers/MOD_gpencil_modifiertypes.h b/source/blender/gpencil_modifiers/MOD_gpencil_modifiertypes.h
index ac926ffe96e..b84ccbcab64 100644
--- a/source/blender/gpencil_modifiers/MOD_gpencil_modifiertypes.h
+++ b/source/blender/gpencil_modifiers/MOD_gpencil_modifiertypes.h
@@ -42,7 +42,6 @@ extern GpencilModifierTypeInfo modifierType_Gpencil_Hook;
 extern GpencilModifierTypeInfo modifierType_Gpencil_Offset;
 extern GpencilModifierTypeInfo modifierType_Gpencil_Armature;
 extern GpencilModifierTypeInfo modifierType_Gpencil_Time;
-extern GpencilModifierTypeInfo modifierType_Gpencil_Sample;
 extern GpencilModifierTypeInfo modifierType_Gpencil_Length;
 extern GpencilModifierTypeInfo modifierType_Gpencil_Multiply;
 
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencil_util.c b/source/blender/gpencil_modifiers/intern/MOD_gpencil_util.c
index f609fbf385b..a1f6c2557af 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencil_util.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencil_util.c
@@ -58,7 +58,6 @@ void gpencil_modifier_type_init(GpencilModifierTypeInfo *types[])
   INIT_GP_TYPE(Noise);
   INIT_GP_TYPE(Subdiv);
   INIT_GP_TYPE(Simplify);
-  INIT_GP_TYPE(Sample);
   INIT_GP_TYPE(Thick);
   INIT_GP_TYPE(Tint);
   INIT_GP_TYPE(Color);
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilsample.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilsample.c
deleted file mode 100644
index 67f57102a93..00000000000
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilsample.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software  Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The Original Code is Copyright (C) 2017, Blender Foundation
- * This is a new part of Blender
- *
- * Contributor(s): Antonio Vazquez, Joshua Leung, Yiming Wu
- *
- * ***** END GPL LICENSE BLOCK *****
- *
- */
-
-/** \file blender/gpencil_modifiers/intern/MOD_gpencilstrokes.c
- *  \ingroup modifiers
- */
-
-#include <stdio.h>
-
-#include "MEM_guardedalloc.h"
-
-#include "DNA_scene_types.h"
-#include "DNA_object_types.h"
-#include "DNA_gpencil_types.h"
-#include "DNA_gpencil_modifier_types.h"
-
-#include "BLI_blenlib.h"
-#include "BLI_rand.h"
-#include "BLI_math.h"
-#include "BLI_utildefines.h"
-#include "BLI_linklist.h"
-#include "BLI_alloca.h"
-
-#include "BKE_gpencil.h"
-#include "BKE_gpencil_modifier.h"
-#include "BKE_modifier.h"
-#include "BKE_context.h"
-#include "BKE_global.h"
-#include "BKE_object.h"
-#include "BKE_main.h"
-#include "BKE_scene.h"
-#include "BKE_layer.h"
-#include "BKE_library_query.h"
-#include "BKE_collection.h"
-#include "BKE_mesh.h"
-#include "BKE_mesh_mapping.h"
-
-#include "bmesh.h"
-#include "bmesh_tools.h"
-
-#include "DEG_depsgraph.h"
-#include "DEG_depsgraph_build.h"
-#include "DEG_depsgraph_query.h"
-
-#include "MOD_gpencil_util.h"
-#include "MOD_gpencil_modifiertypes.h"
-
-static void initData(GpencilModifierData *md)
-{
-  SampleGpencilModifierData *gpmd = (SampleGpencilModifierData *)md;
-}
-
-static void copyData(const GpencilModifierData *md, GpencilModifierData *target)
-{
-  BKE_gpencil_modifier_copyData_generic(md, target);
-}
-
-static void bakeModifier(Main *UNUSED(bmain),
-                         Depsgraph *depsgraph,
-                         GpencilModifierData *md,
-                         Object *ob)
-{
-
-  bGPdata *gpd = ob->data;
-
-  for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
-    for (bGPDframe *gpf = gpl->frames.first; gpf; gpf = gpf->next) {
-      SampleGpencilModifierData *lmd = (SampleGpencilModifierData *)md;
-      bGPDstroke *gps;
-      for (gps = gpf->strokes.first; gps; gps = gps->next) {
-        BKE_gpencil_sample_stroke(gps, lmd->length);
-      }
-      return;
-    }
-  }
-}
-
-/* -------------------------------- */
-
-/* Generic "generateStrokes" callback */
-static void generateStrokes(
-    GpencilModifierData *md, Depsgraph *depsgraph, Object *ob, bGPDlayer *gpl, bGPDframe *gpf)
-{
-  SampleGpencilModifierData *lmd = (SampleGpencilModifierData *)md;
-  bGPDstroke *gps;
-  for (gps = gpf->strokes.first; gps; gps = gps->next) {
-    BKE_gpencil_sample_stroke(gps, lmd->length);
-  }
-}
-
-static void updateDepsgraph(GpencilModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
-{
-  SampleGpencilModifierData *lmd = (SampleGpencilModifierData *)md;
-}
-
-static void foreachObjectLink(GpencilModifierData *md,
-                              Object *ob,
-                              ObjectWalkFunc walk,
-                              void *userData)
-{
-  SampleGpencilModifierData *mmd = (SampleGpencilModifierData *)md;
-}
-
-GpencilModifierTypeInfo modifierType_Gpencil_Sample = {
-    /* name */ "Sample",
-    /* structName */ "SampleGpencilModifierData",
-    /* structSize */ sizeof(SampleGpencilModifierData),
-    /* type */ eGpencilModifierTypeType_Gpencil,
-    /* flags */ 0,
-
-    /* copyData */ copyData,
-
-    /* deformStroke */ NULL,
-    /* generateStrokes */ generateStrokes,
-    /* bakeModifier */ bakeModifier,
-    /* remapTime */ NULL,
-
-    /* initData */ initData,
-    /* freeData */ NULL,
-    /* isDisabled */ NULL,
-    /* updateDepsgraph */ updateDepsgraph,
-    /* dependsOnTime */ NULL,
-    /* foreachObjectLink */ foreachObjectLink,
-    /* foreachIDLink */ NULL,
-    /* foreachTexLink */ NULL,
-    /* getDuplicationFactor */ NULL,
-};
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilsimplify.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilsimplify.c
index 5e5c60645ad..88fc1fb2e00 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilsimplify.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilsimplify.c
@@ -79,9 +79,11 @@ static void deformStroke(GpencilModifierData *md,
       BKE_gpencil_simplify_fixed(gps);
     }
   }
-  else {
+  else if(mmd->mode == GP_SIMPLIFY_ADAPTIVE) {
     /* simplify stroke using Ramer-Douglas-Peucker algorithm */
     BKE_gpencil_simplify_stroke(gps, mmd->factor);
+  }else if(mmd->mode == GP_SIMPLIFY_SAMPLE) {
+    BKE_gpencil_sample_stroke(gps, mmd->length);
   }
 }
 
diff --git a/source/blender/makesdna/DNA_gpencil_modifier_types.h b/source/blender/makesdna/DNA_gpencil_modifier_types.h
index c3427b26d29..5357522f877 100644
--- a/source/blender/makesdna/DNA_gpencil_modifier_types.h
+++ b/source/blender/makesdna/DNA_gpencil_modifier_types.h
@@ -511,7 +511,8 @@ typedef struct SimplifyGpencilModifierData {
   short step;
   /** Custom index for passes. */
   int layer_pass;
-  char _pad[4];
+  /* Sample length */
+  float length;
 } SimplifyGpencilModifierData;
 
 typedef enum eSimplifyGpencil_Flag {
@@ -525,6 +526,8 @@ typedef enum eSimplifyGpencil_Mode {
   GP_SIMPLIFY_FIXED = 0,
   /* Use RDP algorithm */
   GP_SIMPLIFY_ADAPTIVE = 1,
+  /* Sample the stroke using a fixed length */
+  GP_SIMPLIFY_SAMPLE = 2,
 } eSimplifyGpencil_Mode;
 
 typedef struct OffsetGpencilModifierData {
@@ -604,12 +607,6 @@ typedef enum eStrokeGpencil_Flag { /* emm what are these for */
 /* XXX: all the length and similar parameters should have an image space behavior. */
 /* Need future investigations */
 
-typedef struct SampleGpencilModifierData {
-  GpencilModifierData modifier;
-  float length;
-  char _pad[4];
-} SampleGpencilModifierData;
-
 typedef struct LengthGpencilModifierData {
   GpencilModifierData modifier;
   float length;
diff --git a/source/blender/makesrna/intern/rna_gpencil_modifier.c b/source/blender/makesrna/intern/rna_gpencil_modifier.c
index 0ca3c2658d7..f97d75e9d11 100644
--- a/source/blender/makesrna/intern/rna_gpencil_modifier.c
+++ b/source/blender/makesrna/intern/rna_gpencil_modi

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list