[Bf-blender-cvs] [bf73c8bf39a] soc-2019-npr: Gpencil: svg export operator

YimingWu noreply at git.blender.org
Tue Jul 9 09:46:43 CEST 2019


Commit: bf73c8bf39a1a5b9d8c3480cb3ec40939a21a294
Author: YimingWu
Date:   Tue Jul 9 14:56:50 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rBbf73c8bf39a1a5b9d8c3480cb3ec40939a21a294

Gpencil: svg export operator

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

M	source/blender/blenkernel/BKE_writesvg.h
M	source/blender/blenkernel/intern/writesvg.c
M	source/blender/editors/gpencil/gpencil_svg.c

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

diff --git a/source/blender/blenkernel/BKE_writesvg.h b/source/blender/blenkernel/BKE_writesvg.h
index f088648c70c..a597abb8d03 100644
--- a/source/blender/blenkernel/BKE_writesvg.h
+++ b/source/blender/blenkernel/BKE_writesvg.h
@@ -24,7 +24,7 @@
  * \ingroup bke
  */
 
-bool BKE_svg_data_from_gpencil(struct bGPdata* gpd, struct Text* ta);
+bool BKE_svg_data_from_gpencil(struct bGPdata* gpd, struct Text* ta, struct bGPDlayer* layer, int frame);
 
 
 #endif
diff --git a/source/blender/blenkernel/intern/writesvg.c b/source/blender/blenkernel/intern/writesvg.c
index 4f6c46c8149..27c5f7e5736 100644
--- a/source/blender/blenkernel/intern/writesvg.c
+++ b/source/blender/blenkernel/intern/writesvg.c
@@ -99,13 +99,13 @@ static int svg_gpencil_get_path_callback(GPencilSVGReader* reader, float* fill_c
         if(!sr->frame->strokes.first){
             return 0;
         }
+        sr->stroke = sr->frame->strokes.first;
     }else{
         sr->stroke = sr->stroke->next;
-        if(!sr->frame->strokes.first){
+        if(!sr->stroke){
             return 0;
         }
     }
-    sr->stroke = sr->frame->strokes.first;
     *stroke_width = sr->stroke->thickness;
     
     /* TODO: no material access yet */
@@ -137,10 +137,6 @@ bool BKE_svg_data_from_gpencil(bGPdata* gpd, Text* ta, bGPDlayer* layer, int fra
     if(!gpd || !ta || !gpd->layers.first){
         return false;
     }
-    
-    BKE_text_free_lines(ta);
-
-    write_svg_head(ta);
 
     /* Init temp reader */
     GPencilSVGReader gsr = {0};
@@ -150,9 +146,17 @@ bool BKE_svg_data_from_gpencil(bGPdata* gpd, Text* ta, bGPDlayer* layer, int fra
     }else{
         gsr.layer = gpd->layers.first;
     }
-    gsr.frame = BKE_gpencil_layer_getframe(gsr.layer,frame,0);
+    gsr.frame = BKE_gpencil_layer_getframe(gsr.layer,frame,GP_GETFRAME_USE_PREV);
+
+    if(!gsr.frame){
+        return false;
+    }
+    
+    BKE_text_free_lines(ta);
+
+    write_svg_head(ta);
 
-    write_paths_from_callback(ta, &gsr, svg_gpencil_get_path_callback,svg_gpencil_get_node_callback);
+    write_paths_from_callback(&gsr, ta, svg_gpencil_get_path_callback,svg_gpencil_get_node_callback);
 
     write_svg_end(ta);
 
diff --git a/source/blender/editors/gpencil/gpencil_svg.c b/source/blender/editors/gpencil/gpencil_svg.c
index b4950cab83d..a739dfb8925 100644
--- a/source/blender/editors/gpencil/gpencil_svg.c
+++ b/source/blender/editors/gpencil/gpencil_svg.c
@@ -29,15 +29,19 @@
 #include "DNA_gpencil_types.h"
 #include "DNA_object_types.h"
 #include "DNA_listBase.h"
+#include "DNA_text_types.h"
+#include "DNA_scene_types.h"
 
 #include "BKE_context.h"
 #include "BKE_gpencil.h"
+#include "BKE_text.h"
 
 #include "DEG_depsgraph.h"
 
 #include "BKE_context.h"
 #include "BKE_gpencil.h"
 #include "BKE_report.h"
+#include "BKE_writesvg.h"
 
 #include "UI_interface.h"
 
@@ -50,6 +54,17 @@
 
 static int gpencil_export_svg_exec(bContext *C, wmOperator *op)
 {
+  Object* gpobj = CTX_data_active_object(C);
+  bGPdata *gpd = gpobj->data;
+  bGPDlayer* gpl;
+
+  for(gpl = gpd->layers.first; gpl; gpl = gpl->next){
+    Text *ta = BKE_text_add(CTX_data_main(C),"exported_svg");
+    BKE_svg_data_from_gpencil(gpd,ta,gpl,CTX_data_scene(C)->r.cfra);
+  }
+
+  
+
   return OPERATOR_FINISHED;
 }



More information about the Bf-blender-cvs mailing list