[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