Commit: fcf6177b0d156a07d8975387be9abe1cef4a0fed
Author: Jacques Lucke
Date:   Thu Sep 10 13:50:03 2020 +0200
Branches: master
https://developer.blender.org/rBfcf6177b0d156a07d8975387be9abe1cef4a0fed

Refactor: move LineStyle .blend I/O to IDTypeInfo callbacks

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

M       source/blender/blenkernel/intern/linestyle.c
M       source/blender/blenloader/intern/readfile.c
M       source/blender/blenloader/intern/writefile.c

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

diff --git a/source/blender/blenkernel/intern/linestyle.c 
b/source/blender/blenkernel/intern/linestyle.c
index 8dc44a32eaa..f0f06b6402a 100644
--- a/source/blender/blenkernel/intern/linestyle.c
+++ b/source/blender/blenkernel/intern/linestyle.c
@@ -39,6 +39,7 @@
 
 #include "BLT_translation.h"
 
+#include "BKE_anim_data.h"
 #include "BKE_colorband.h"
 #include "BKE_colortools.h"
 #include "BKE_context.h"
@@ -51,6 +52,8 @@
 #include "BKE_node.h"
 #include "BKE_texture.h"
 
+#include "BLO_read_write.h"
+
 static void linestyle_init_data(ID *id)
 {
   FreestyleLineStyle *linestyle = (FreestyleLineStyle *)id;
@@ -189,6 +192,558 @@ static void linestyle_foreach_id(ID *id, 
LibraryForeachIDData *data)
   }
 }
 
+static void write_linestyle_color_modifiers(BlendWriter *writer, ListBase 
*modifiers)
+{
+  LineStyleModifier *m;
+
+  for (m = modifiers->first; m; m = m->next) {
+    int struct_nr;
+    switch (m->type) {
+      case LS_MODIFIER_ALONG_STROKE:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleColorModifier_AlongStroke);
+        break;
+      case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+        struct_nr = 
SDNA_TYPE_FROM_STRUCT(LineStyleColorModifier_DistanceFromCamera);
+        break;
+      case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+        struct_nr = 
SDNA_TYPE_FROM_STRUCT(LineStyleColorModifier_DistanceFromObject);
+        break;
+      case LS_MODIFIER_MATERIAL:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleColorModifier_Material);
+        break;
+      case LS_MODIFIER_TANGENT:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleColorModifier_Tangent);
+        break;
+      case LS_MODIFIER_NOISE:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleColorModifier_Noise);
+        break;
+      case LS_MODIFIER_CREASE_ANGLE:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleColorModifier_CreaseAngle);
+        break;
+      case LS_MODIFIER_CURVATURE_3D:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleColorModifier_Curvature_3D);
+        break;
+      default:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleModifier); /* this should 
not happen */
+    }
+    BLO_write_struct_by_id(writer, struct_nr, m);
+  }
+  for (m = modifiers->first; m; m = m->next) {
+    switch (m->type) {
+      case LS_MODIFIER_ALONG_STROKE:
+        BLO_write_struct(writer, ColorBand, 
((LineStyleColorModifier_AlongStroke *)m)->color_ramp);
+        break;
+      case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+        BLO_write_struct(
+            writer, ColorBand, ((LineStyleColorModifier_DistanceFromCamera 
*)m)->color_ramp);
+        break;
+      case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+        BLO_write_struct(
+            writer, ColorBand, ((LineStyleColorModifier_DistanceFromObject 
*)m)->color_ramp);
+        break;
+      case LS_MODIFIER_MATERIAL:
+        BLO_write_struct(writer, ColorBand, ((LineStyleColorModifier_Material 
*)m)->color_ramp);
+        break;
+      case LS_MODIFIER_TANGENT:
+        BLO_write_struct(writer, ColorBand, ((LineStyleColorModifier_Tangent 
*)m)->color_ramp);
+        break;
+      case LS_MODIFIER_NOISE:
+        BLO_write_struct(writer, ColorBand, ((LineStyleColorModifier_Noise 
*)m)->color_ramp);
+        break;
+      case LS_MODIFIER_CREASE_ANGLE:
+        BLO_write_struct(writer, ColorBand, 
((LineStyleColorModifier_CreaseAngle *)m)->color_ramp);
+        break;
+      case LS_MODIFIER_CURVATURE_3D:
+        BLO_write_struct(
+            writer, ColorBand, ((LineStyleColorModifier_Curvature_3D 
*)m)->color_ramp);
+        break;
+    }
+  }
+}
+
+static void write_linestyle_alpha_modifiers(BlendWriter *writer, ListBase 
*modifiers)
+{
+  LineStyleModifier *m;
+
+  for (m = modifiers->first; m; m = m->next) {
+    int struct_nr;
+    switch (m->type) {
+      case LS_MODIFIER_ALONG_STROKE:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleAlphaModifier_AlongStroke);
+        break;
+      case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+        struct_nr = 
SDNA_TYPE_FROM_STRUCT(LineStyleAlphaModifier_DistanceFromCamera);
+        break;
+      case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+        struct_nr = 
SDNA_TYPE_FROM_STRUCT(LineStyleAlphaModifier_DistanceFromObject);
+        break;
+      case LS_MODIFIER_MATERIAL:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleAlphaModifier_Material);
+        break;
+      case LS_MODIFIER_TANGENT:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleAlphaModifier_Tangent);
+        break;
+      case LS_MODIFIER_NOISE:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleAlphaModifier_Noise);
+        break;
+      case LS_MODIFIER_CREASE_ANGLE:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleAlphaModifier_CreaseAngle);
+        break;
+      case LS_MODIFIER_CURVATURE_3D:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleAlphaModifier_Curvature_3D);
+        break;
+      default:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleModifier); /* this should 
not happen */
+    }
+    BLO_write_struct_by_id(writer, struct_nr, m);
+  }
+  for (m = modifiers->first; m; m = m->next) {
+    switch (m->type) {
+      case LS_MODIFIER_ALONG_STROKE:
+        BKE_curvemapping_blend_write(writer, 
((LineStyleAlphaModifier_AlongStroke *)m)->curve);
+        break;
+      case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+        BKE_curvemapping_blend_write(writer,
+                                     
((LineStyleAlphaModifier_DistanceFromCamera *)m)->curve);
+        break;
+      case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+        BKE_curvemapping_blend_write(writer,
+                                     
((LineStyleAlphaModifier_DistanceFromObject *)m)->curve);
+        break;
+      case LS_MODIFIER_MATERIAL:
+        BKE_curvemapping_blend_write(writer, ((LineStyleAlphaModifier_Material 
*)m)->curve);
+        break;
+      case LS_MODIFIER_TANGENT:
+        BKE_curvemapping_blend_write(writer, ((LineStyleAlphaModifier_Tangent 
*)m)->curve);
+        break;
+      case LS_MODIFIER_NOISE:
+        BKE_curvemapping_blend_write(writer, ((LineStyleAlphaModifier_Noise 
*)m)->curve);
+        break;
+      case LS_MODIFIER_CREASE_ANGLE:
+        BKE_curvemapping_blend_write(writer, 
((LineStyleAlphaModifier_CreaseAngle *)m)->curve);
+        break;
+      case LS_MODIFIER_CURVATURE_3D:
+        BKE_curvemapping_blend_write(writer, 
((LineStyleAlphaModifier_Curvature_3D *)m)->curve);
+        break;
+    }
+  }
+}
+
+static void write_linestyle_thickness_modifiers(BlendWriter *writer, ListBase 
*modifiers)
+{
+  LineStyleModifier *m;
+
+  for (m = modifiers->first; m; m = m->next) {
+    int struct_nr;
+    switch (m->type) {
+      case LS_MODIFIER_ALONG_STROKE:
+        struct_nr = 
SDNA_TYPE_FROM_STRUCT(LineStyleThicknessModifier_AlongStroke);
+        break;
+      case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+        struct_nr = 
SDNA_TYPE_FROM_STRUCT(LineStyleThicknessModifier_DistanceFromCamera);
+        break;
+      case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+        struct_nr = 
SDNA_TYPE_FROM_STRUCT(LineStyleThicknessModifier_DistanceFromObject);
+        break;
+      case LS_MODIFIER_MATERIAL:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleThicknessModifier_Material);
+        break;
+      case LS_MODIFIER_CALLIGRAPHY:
+        struct_nr = 
SDNA_TYPE_FROM_STRUCT(LineStyleThicknessModifier_Calligraphy);
+        break;
+      case LS_MODIFIER_TANGENT:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleThicknessModifier_Tangent);
+        break;
+      case LS_MODIFIER_NOISE:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleThicknessModifier_Noise);
+        break;
+      case LS_MODIFIER_CREASE_ANGLE:
+        struct_nr = 
SDNA_TYPE_FROM_STRUCT(LineStyleThicknessModifier_CreaseAngle);
+        break;
+      case LS_MODIFIER_CURVATURE_3D:
+        struct_nr = 
SDNA_TYPE_FROM_STRUCT(LineStyleThicknessModifier_Curvature_3D);
+        break;
+      default:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleModifier); /* this should 
not happen */
+    }
+    BLO_write_struct_by_id(writer, struct_nr, m);
+  }
+  for (m = modifiers->first; m; m = m->next) {
+    switch (m->type) {
+      case LS_MODIFIER_ALONG_STROKE:
+        BKE_curvemapping_blend_write(writer, 
((LineStyleThicknessModifier_AlongStroke *)m)->curve);
+        break;
+      case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+        BKE_curvemapping_blend_write(writer,
+                                     
((LineStyleThicknessModifier_DistanceFromCamera *)m)->curve);
+        break;
+      case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+        BKE_curvemapping_blend_write(writer,
+                                     
((LineStyleThicknessModifier_DistanceFromObject *)m)->curve);
+        break;
+      case LS_MODIFIER_MATERIAL:
+        BKE_curvemapping_blend_write(writer, 
((LineStyleThicknessModifier_Material *)m)->curve);
+        break;
+      case LS_MODIFIER_TANGENT:
+        BKE_curvemapping_blend_write(writer, 
((LineStyleThicknessModifier_Tangent *)m)->curve);
+        break;
+      case LS_MODIFIER_CREASE_ANGLE:
+        BKE_curvemapping_blend_write(writer, 
((LineStyleThicknessModifier_CreaseAngle *)m)->curve);
+        break;
+      case LS_MODIFIER_CURVATURE_3D:
+        BKE_curvemapping_blend_write(writer,
+                                     ((LineStyleThicknessModifier_Curvature_3D 
*)m)->curve);
+        break;
+    }
+  }
+}
+
+static void write_linestyle_geometry_modifiers(BlendWriter *writer, ListBase 
*modifiers)
+{
+  LineStyleModifier *m;
+
+  for (m = modifiers->first; m; m = m->next) {
+    int struct_nr;
+    switch (m->type) {
+      case LS_MODIFIER_SAMPLING:
+        struct_nr = SDNA_TYPE_FROM_STRUCT(LineStyleGeometryModifier_Sampling);
+        break;
+      case LS_MODIFIER_BEZIER_CURVE:
+        struct_nr = 
SDNA_TYPE_FROM_STRUCT(LineStyleGeometryModifier_BezierCurve);
+        break;
+      case LS_MODIFIER_SINUS_DISPLACEMENT:
+        struct_nr = 
SDNA_TYPE_FROM_STRUCT(LineStyleGeometryModifier_SinusDisplacement);
+        break;
+      case LS_MODIFIER_SPATIAL_NOISE:
+        struct_nr = 
SDNA_TYPE_FROM_STRUCT(LineStyleGeometryModifier_SpatialNoise);
+        break;
+      case LS_MODIFIER_PERLIN_NOISE_1D:
+        struct_nr = 
SDNA_TYPE_FROM_STRUCT(LineStyleGeometryModifier_PerlinNoise1D);
+        break;
+      case LS_MODIFIER_PERLIN_

@@ 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

Reply via email to