[Bf-blender-cvs] [217c58917c8] greasepencil-object: Cleanup - Move helper functions for GP modifiers into the modifiers module
Joshua Leung
noreply at git.blender.org
Sat Nov 4 05:48:06 CET 2017
Commit: 217c58917c82e2fb26269b5ba831efe148eb7a72
Author: Joshua Leung
Date: Tue Oct 31 15:42:35 2017 +1300
Branches: greasepencil-object
https://developer.blender.org/rB217c58917c82e2fb26269b5ba831efe148eb7a72
Cleanup - Move helper functions for GP modifiers into the modifiers module
===================================================================
M source/blender/blenkernel/BKE_gpencil.h
M source/blender/blenkernel/intern/gpencil_modifier.c
M source/blender/modifiers/CMakeLists.txt
A source/blender/modifiers/intern/MOD_gpencil_util.c
A source/blender/modifiers/intern/MOD_gpencil_util.h
M source/blender/modifiers/intern/MOD_gpencilarray.c
M source/blender/modifiers/intern/MOD_gpencildupli.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h
index 5bdeb7598d6..955782d9a62 100644
--- a/source/blender/blenkernel/BKE_gpencil.h
+++ b/source/blender/blenkernel/BKE_gpencil.h
@@ -198,7 +198,7 @@ void BKE_gpencil_reset_modifiers(struct Object *ob);
bool BKE_gpencil_has_geometry_modifiers(struct Object *ob);
void BKE_gpencil_stroke_modifiers(struct Object *ob, struct bGPDlayer *gpl, struct bGPDframe *gpf, struct bGPDstroke *gps);
void BKE_gpencil_geometry_modifiers(struct Object *ob, struct bGPDlayer *gpl, struct bGPDframe *gpf);
-void BKE_gpencil_fill_random_array(float *ar, int count);
+
void BKE_gpencil_stroke_normal(const struct bGPDstroke *gps, float r_normal[3]);
void BKE_gpencil_noise_modifier(int id, struct GpencilNoiseModifierData *mmd, struct Object *ob, struct bGPDlayer *gpl, struct bGPDstroke *gps);
void BKE_gpencil_subdiv_modifier(int id, struct GpencilSubdivModifierData *mmd, struct Object *ob, struct bGPDlayer *gpl, struct bGPDstroke *gps);
diff --git a/source/blender/blenkernel/intern/gpencil_modifier.c b/source/blender/blenkernel/intern/gpencil_modifier.c
index c978350e007..9b7042b32e9 100644
--- a/source/blender/blenkernel/intern/gpencil_modifier.c
+++ b/source/blender/blenkernel/intern/gpencil_modifier.c
@@ -49,6 +49,9 @@
#include "BKE_gpencil.h"
#include "BKE_modifier.h"
#include "BKE_colortools.h"
+
+// XXX: temp transitional code
+#include "../../modifiers/intern/MOD_gpencil_util.h"
#define GPENCIL_ANY_EDIT_MODE(gpd) \
((gpd) && ((gpd)->flag & (GP_DATA_STROKE_EDITMODE | GP_DATA_STROKE_SCULPTMODE | GP_DATA_STROKE_WEIGHTMODE)))
@@ -64,78 +67,6 @@ typedef struct tbGPDspoint {
float p2d[2];
} tbGPDspoint;
-/* fill an array with random numbers */
-void BKE_gpencil_fill_random_array(float *ar, int count)
-{
- for (int i = 0; i < count; i++) {
- ar[i] = BLI_frand();
- }
-}
-
-/* verify if valid layer and pass index */
-static bool is_stroke_affected_by_modifier(
- char *mlayername, int mpassindex, int minpoints,
- bGPDlayer *gpl, bGPDstroke *gps, bool inv1, bool inv2)
-{
- /* omit if filter by layer */
- if (mlayername[0] != '\0') {
- if (inv1 == false) {
- if (!STREQ(mlayername, gpl->info)) {
- return false;
- }
- }
- else {
- if (STREQ(mlayername, gpl->info)) {
- return false;
- }
- }
- }
- /* verify pass */
- if (mpassindex > 0) {
- if (inv2 == false) {
- if (gps->palcolor->index != mpassindex) {
- return false;
- }
- }
- else {
- if (gps->palcolor->index == mpassindex) {
- return false;
- }
- }
- }
- /* need to have a minimum number of points */
- if ((minpoints > 0) && (gps->totpoints < minpoints)) {
- return false;
- }
-
- return true;
-}
-
-/* verify if valid vertex group *and return weight */
-static float is_point_affected_by_modifier(bGPDspoint *pt, int inverse, int vindex)
-{
- float weight = 1.0f;
-
- if (vindex >= 0) {
- weight = BKE_gpencil_vgroup_use_index(pt, vindex);
- if ((weight >= 0.0f) && (inverse == 1)) {
- return -1.0f;
- }
-
- if ((weight < 0.0f) && (inverse == 0)) {
- return -1.0f;
- }
-
- /* if inverse, weight is always 1 */
- if ((weight < 0.0f) && (inverse == 1)) {
- return 1.0f;
- }
-
- }
-
- return weight;
-}
-
/* get the vertex group index or -1 if empty */
static int get_vertex_group_index(Object *ob, char *vgname)
{
diff --git a/source/blender/modifiers/CMakeLists.txt b/source/blender/modifiers/CMakeLists.txt
index c59901a8b55..6d9a45dbc15 100644
--- a/source/blender/modifiers/CMakeLists.txt
+++ b/source/blender/modifiers/CMakeLists.txt
@@ -109,10 +109,12 @@ set(SRC
MOD_modifiertypes.h
intern/MOD_boolean_util.h
intern/MOD_fluidsim_util.h
+ intern/MOD_gpencil_util.h
intern/MOD_meshcache_util.h
intern/MOD_util.h
intern/MOD_weightvg_util.h
+ intern/MOD_gpencil_util.c
intern/MOD_gpencilnoise.c
intern/MOD_gpencilsubdiv.c
intern/MOD_gpencilsimplify.c
diff --git a/source/blender/modifiers/intern/MOD_gpencil_util.c b/source/blender/modifiers/intern/MOD_gpencil_util.c
new file mode 100644
index 00000000000..5dcc5ae2914
--- /dev/null
+++ b/source/blender/modifiers/intern/MOD_gpencil_util.c
@@ -0,0 +1,125 @@
+/*
+ * ***** 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
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file blender/modifiers/intern/MOD_gpencil_util.c
+ * \ingroup bke
+ */
+
+
+#include <stdio.h>
+
+#include "MEM_guardedalloc.h"
+
+#include "BLI_blenlib.h"
+#include "BLI_utildefines.h"
+#include "BLI_math_vector.h"
+#include "BLI_math_color.h"
+#include "BLI_rand.h"
+
+#include "DNA_scene_types.h"
+#include "DNA_object_types.h"
+#include "DNA_gpencil_types.h"
+#include "DNA_modifier_types.h"
+
+#include "BKE_global.h"
+#include "BKE_object.h"
+#include "BKE_lattice.h"
+#include "BKE_gpencil.h"
+#include "BKE_modifier.h"
+#include "BKE_colortools.h"
+
+
+/* fill an array with random numbers */
+void gp_mod_fill_random_array(float *ar, int count)
+{
+ for (int i = 0; i < count; i++) {
+ ar[i] = BLI_frand();
+ }
+}
+
+/* verify if valid layer and pass index */
+bool is_stroke_affected_by_modifier(
+ char *mlayername, int mpassindex, int minpoints,
+ bGPDlayer *gpl, bGPDstroke *gps, bool inv1, bool inv2)
+{
+ /* omit if filter by layer */
+ if (mlayername[0] != '\0') {
+ if (inv1 == false) {
+ if (!STREQ(mlayername, gpl->info)) {
+ return false;
+ }
+ }
+ else {
+ if (STREQ(mlayername, gpl->info)) {
+ return false;
+ }
+ }
+ }
+ /* verify pass */
+ if (mpassindex > 0) {
+ if (inv2 == false) {
+ if (gps->palcolor->index != mpassindex) {
+ return false;
+ }
+ }
+ else {
+ if (gps->palcolor->index == mpassindex) {
+ return false;
+ }
+ }
+ }
+ /* need to have a minimum number of points */
+ if ((minpoints > 0) && (gps->totpoints < minpoints)) {
+ return false;
+ }
+
+ return true;
+}
+
+/* verify if valid vertex group *and return weight */
+float is_point_affected_by_modifier(bGPDspoint *pt, int inverse, int vindex)
+{
+ float weight = 1.0f;
+
+ if (vindex >= 0) {
+ weight = BKE_gpencil_vgroup_use_index(pt, vindex);
+ if ((weight >= 0.0f) && (inverse == 1)) {
+ return -1.0f;
+ }
+
+ if ((weight < 0.0f) && (inverse == 0)) {
+ return -1.0f;
+ }
+
+ /* if inverse, weight is always 1 */
+ if ((weight < 0.0f) && (inverse == 1)) {
+ return 1.0f;
+ }
+
+ }
+
+ return weight;
+}
+
diff --git a/source/blender/modifiers/intern/MOD_gpencil_util.h b/source/blender/modifiers/intern/MOD_gpencil_util.h
new file mode 100644
index 00000000000..c63b349434e
--- /dev/null
+++ b/source/blender/modifiers/intern/MOD_gpencil_util.h
@@ -0,0 +1,44 @@
+/*
+ * ***** 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) Blender Foundation.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file blender/modifiers/intern/MOD_gpencil_util.h
+ * \ingroup modifiers
+ */
+
+
+#ifndef __MOD_GPENCIL_UTIL_H__
+#define __MOD_GPENCIL_UTIL_H__
+
+bool is_stroke_affected_by_modifier(
+ char *mlayername, int mpassindex, int minpoints,
+ bGPDlayer *gpl, bGPDstroke *gps, bool inv1, bool inv2);
+
+float is_point_affected_by_modifier(bGPDspoint *pt, int inverse, int vindex);
+
+void gp_mod_fill_random_array(float *ar, int count);
+
+#endif /* __MOD_GPENCIL_UTIL_H__ */
diff --git a/source/blender/modifiers/intern/MOD_gpencilarray.c b/source/blender/modifiers/intern/MOD_gpencilarray.c
index a8f38795fcd..9aa01a0ca15 100644
--- a/source/blender/modifiers/intern/MOD_gpencilarray.c
+++ b/source/blender/modifiers/intern/MOD_gpencilarray.c
@@ -49,6 +49,7 @@
#include "DEG_depsgraph_build.h"
#include "MOD_modifiertypes.h"
+#include "MOD_gpencil_util.h"
static void initData(ModifierData *md)
{
@@ -68,8 +69,9 @@ static void initData(ModifierData *md)
gpmd->rnd_rot = 0.5f;
gpmd->rnd_size = 0.5f;
gpmd->lock_axis |= GP_LOCKAXIS_X;
+
/* fill random values */
- BKE_gpencil_fill_random_array(gpmd->rnd, 20);
+ gp_mod_fill_random_array(gpmd->rnd, 20);
gpmd->rnd[0] = 1;
}
diff --git a/source/blender/modifiers/intern/MOD_gpencildupli.c b/source/blender/modifiers/intern/MOD_gpencildupli.c
index 38371134f33..32b289def6e 100644
--- a/source/blender/modifiers/intern/MOD_gpencildupli.c
+++ b/source/blender/modifiers/intern/MOD_gpencildupli.c
@@ -41,6 +41,7 @@
#include "DEG_depsgraph.h"
#include "MOD_modifiertypes.h"
+#include "MOD_gpencil_util.h"
static void initData(ModifierData *md)
{
@@ -54,8 +55,9 @@ static void initData(ModifierData *md)
gpmd->scale[2] = 1.0f;
gpmd->rnd_rot = 0.5f;
gpmd->rnd_size = 0
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list