diff options
-rw-r--r-- | source/blender/editors/io/io_gpencil_export.c | 1 | ||||
-rw-r--r-- | source/blender/io/gpencil/gpencil_io.h | 1 | ||||
-rw-r--r-- | source/blender/io/gpencil/intern/gpencil_io_capi.cc | 51 |
3 files changed, 31 insertions, 22 deletions
diff --git a/source/blender/editors/io/io_gpencil_export.c b/source/blender/editors/io/io_gpencil_export.c index b49be324372..556fae70828 100644 --- a/source/blender/editors/io/io_gpencil_export.c +++ b/source/blender/editors/io/io_gpencil_export.c @@ -410,6 +410,7 @@ void WM_OT_gpencil_export_pdf(wmOperatorType *ot) static const EnumPropertyItem gpencil_export_frame_items[] = { {GP_EXPORT_FRAME_ACTIVE, "ACTIVE", 0, "Active", "Include only active frame"}, {GP_EXPORT_FRAME_SELECTED, "SELECTED", 0, "Selected", "Include selected frames"}, + {GP_EXPORT_FRAME_SCENE, "SCENE", 0, "Scene", "Include all scene frames"}, {0, NULL, 0, NULL, NULL}, }; diff --git a/source/blender/io/gpencil/gpencil_io.h b/source/blender/io/gpencil/gpencil_io.h index fab867b38b3..cb004910c1e 100644 --- a/source/blender/io/gpencil/gpencil_io.h +++ b/source/blender/io/gpencil/gpencil_io.h @@ -82,6 +82,7 @@ typedef enum eGpencilExportSelect { typedef enum eGpencilExportFrame { GP_EXPORT_FRAME_ACTIVE = 0, GP_EXPORT_FRAME_SELECTED = 1, + GP_EXPORT_FRAME_SCENE = 2, } eGpencilExportFrame; bool gpencil_io_export(const char *filename, struct GpencilIOParams *iparams); diff --git a/source/blender/io/gpencil/intern/gpencil_io_capi.cc b/source/blender/io/gpencil/intern/gpencil_io_capi.cc index 544c51e0b4f..95f5839682f 100644 --- a/source/blender/io/gpencil/intern/gpencil_io_capi.cc +++ b/source/blender/io/gpencil/intern/gpencil_io_capi.cc @@ -112,32 +112,39 @@ static bool gpencil_io_export_pdf(Depsgraph *depsgraph, exporter->frame_number_set(iparams->frame_cur); result |= exporter->new_document(); - const bool use_frame_selected = (iparams->frame_mode == GP_EXPORT_FRAME_SELECTED); - if (use_frame_selected) { - for (int32_t i = iparams->frame_start; i < iparams->frame_end + 1; i++) { - if (!is_keyframe_included(gpd_eval, i, use_frame_selected)) { - continue; - } - - CFRA = i; - BKE_scene_graph_update_for_newframe(depsgraph); + switch (iparams->frame_mode) { + case GP_EXPORT_FRAME_ACTIVE: { exporter->prepare_camera_params(scene, iparams); - exporter->frame_number_set(i); exporter->add_newpage(); exporter->add_body(); + result = exporter->write(); + break; } - result = exporter->write(); - /* Back to original frame. */ - exporter->frame_number_set(iparams->frame_cur); - CFRA = iparams->frame_cur; - BKE_scene_camera_switch_update(scene); - BKE_scene_graph_update_for_newframe(depsgraph); - } - else { - exporter->prepare_camera_params(scene, iparams); - exporter->add_newpage(); - exporter->add_body(); - result = exporter->write(); + case GP_EXPORT_FRAME_SELECTED: + case GP_EXPORT_FRAME_SCENE: { + for (int32_t i = iparams->frame_start; i < iparams->frame_end + 1; i++) { + if ((iparams->frame_mode == GP_EXPORT_FRAME_SELECTED) && + (!is_keyframe_included(gpd_eval, i, true))) { + continue; + } + + CFRA = i; + BKE_scene_graph_update_for_newframe(depsgraph); + exporter->prepare_camera_params(scene, iparams); + exporter->frame_number_set(i); + exporter->add_newpage(); + exporter->add_body(); + } + result = exporter->write(); + /* Back to original frame. */ + exporter->frame_number_set(iparams->frame_cur); + CFRA = iparams->frame_cur; + BKE_scene_camera_switch_update(scene); + BKE_scene_graph_update_for_newframe(depsgraph); + break; + } + default: + break; } return result; |