diff options
Diffstat (limited to 'source/blender/io/gpencil/intern')
4 files changed, 18 insertions, 2 deletions
diff --git a/source/blender/io/gpencil/intern/gpencil_io_base.cc b/source/blender/io/gpencil/intern/gpencil_io_base.cc index bfa3abb1dcd..e79a2bc98ff 100644 --- a/source/blender/io/gpencil/intern/gpencil_io_base.cc +++ b/source/blender/io/gpencil/intern/gpencil_io_base.cc @@ -69,6 +69,17 @@ GpencilIO::GpencilIO(const GpencilIOParams *iparams) cfra_ = iparams->frame_cur; /* Calculate camera matrix. */ + prepare_camera_params(iparams); +} + +void GpencilIO::prepare_camera_params(const GpencilIOParams *iparams) +{ + params_ = *iparams; + const bool is_pdf = params_.mode == GP_EXPORT_TO_PDF; + const bool any_camera = (params_.v3d->camera != nullptr); + const bool force_camera_view = is_pdf && any_camera; + + /* Calculate camera matrix. */ Object *cam_ob = params_.v3d->camera; if (cam_ob != nullptr) { /* Set up parameters. */ @@ -96,7 +107,7 @@ GpencilIO::GpencilIO(const GpencilIOParams *iparams) winy_ = params_.region->winy; /* Camera rectangle. */ - if (rv3d_->persp == RV3D_CAMOB) { + if ((rv3d_->persp == RV3D_CAMOB) || (force_camera_view)) { render_x_ = (scene_->r.xsch * scene_->r.size) / 100; render_y_ = (scene_->r.ysch * scene_->r.size) / 100; diff --git a/source/blender/io/gpencil/intern/gpencil_io_base.hh b/source/blender/io/gpencil/intern/gpencil_io_base.hh index cbcd35e470d..2e1e1707c78 100644 --- a/source/blender/io/gpencil/intern/gpencil_io_base.hh +++ b/source/blender/io/gpencil/intern/gpencil_io_base.hh @@ -50,6 +50,7 @@ class GpencilIO { GpencilIO(const GpencilIOParams *iparams); void frame_number_set(const int value); + void prepare_camera_params(const GpencilIOParams *iparams); protected: GpencilIOParams params_; diff --git a/source/blender/io/gpencil/intern/gpencil_io_capi.cc b/source/blender/io/gpencil/intern/gpencil_io_capi.cc index a710c175a77..8093ec3c52d 100644 --- a/source/blender/io/gpencil/intern/gpencil_io_capi.cc +++ b/source/blender/io/gpencil/intern/gpencil_io_capi.cc @@ -121,6 +121,7 @@ static bool gpencil_io_export_pdf(Depsgraph *depsgraph, CFRA = i; BKE_scene_graph_update_for_newframe(depsgraph); + exporter->prepare_camera_params(iparams); exporter->frame_number_set(i); exporter->add_newpage(); exporter->add_body(); @@ -132,6 +133,7 @@ static bool gpencil_io_export_pdf(Depsgraph *depsgraph, BKE_scene_graph_update_for_newframe(depsgraph); } else { + exporter->prepare_camera_params(iparams); exporter->add_newpage(); exporter->add_body(); result = exporter->write(); @@ -151,6 +153,8 @@ static bool gpencil_io_export_frame_svg(GpencilExporterSVG *exporter, { bool result = false; exporter->frame_number_set(iparams->frame_cur); + exporter->prepare_camera_params(iparams); + if (newpage) { result |= exporter->add_newpage(); } diff --git a/source/blender/io/gpencil/intern/gpencil_io_import_svg.cc b/source/blender/io/gpencil/intern/gpencil_io_import_svg.cc index dc76b6ed661..73b3e46959b 100644 --- a/source/blender/io/gpencil/intern/gpencil_io_import_svg.cc +++ b/source/blender/io/gpencil/intern/gpencil_io_import_svg.cc @@ -102,7 +102,7 @@ bool GpencilImporterSVG::read() bGPDlayer *gpl = (bGPDlayer *)BLI_findstring( &gpd_->layers, layer_id, offsetof(bGPDlayer, info)); if (gpl == nullptr) { - gpl = BKE_gpencil_layer_addnew(gpd_, layer_id, true); + gpl = BKE_gpencil_layer_addnew(gpd_, layer_id, true, false); /* Disable lights. */ gpl->flag &= ~GP_LAYER_USE_LIGHTS; } |