[Bf-blender-cvs] [7e26866f788] greasepencil-object: GPencil: More changes to fix SVG Storyboard
Antonio Vazquez
noreply at git.blender.org
Sat Aug 15 15:40:37 CEST 2020
Commit: 7e26866f788e39f71096483b599d2359e867daf7
Author: Antonio Vazquez
Date: Sat Aug 15 15:40:15 2020 +0200
Branches: greasepencil-object
https://developer.blender.org/rB7e26866f788e39f71096483b599d2359e867daf7
GPencil: More changes to fix SVG Storyboard
There was a problem with the output file name.
===================================================================
M source/blender/io/gpencil/gpencil_io_exporter.h
M source/blender/io/gpencil/intern/gpencil_io_capi.cc
M source/blender/io/gpencil/intern/gpencil_io_export_base.h
M source/blender/io/gpencil/intern/gpencil_io_export_svg.cc
M source/blender/io/gpencil/intern/gpencil_io_export_svg.h
===================================================================
diff --git a/source/blender/io/gpencil/gpencil_io_exporter.h b/source/blender/io/gpencil/gpencil_io_exporter.h
index e1620f04504..bf5ae1a6fb1 100644
--- a/source/blender/io/gpencil/gpencil_io_exporter.h
+++ b/source/blender/io/gpencil/gpencil_io_exporter.h
@@ -42,7 +42,7 @@ struct GpencilExportParams {
double frame_start;
/** End frame. */
double frame_end;
- /** Frame subfix. */
+ /** File subfix. */
char file_subfix[5];
/* Current frame. */
int32_t framenum;
diff --git a/source/blender/io/gpencil/intern/gpencil_io_capi.cc b/source/blender/io/gpencil/intern/gpencil_io_capi.cc
index 9248392ad3f..18705805e5a 100644
--- a/source/blender/io/gpencil/intern/gpencil_io_capi.cc
+++ b/source/blender/io/gpencil/intern/gpencil_io_capi.cc
@@ -45,7 +45,8 @@
using blender::io::gpencil::GpencilExporterSVG;
-static bool is_keyframe_empty(bContext *C, bGPdata *gpd, int framenum, bool use_markers)
+/* Check if frame is included. */
+static bool is_keyframe_selected(bContext *C, bGPdata *gpd, int framenum, bool use_markers)
{
if (!use_markers) {
/* Check if exist a frame. */
@@ -89,10 +90,10 @@ static bool gpencil_io_export_frame(GpencilExporterSVG *exporter,
exporter->set_frame_offset(frame_offset);
std::string subfix = iparams->file_subfix;
if (newpage) {
- exporter->add_newpage();
+ result |= exporter->add_newpage();
}
if (body) {
- exporter->add_body();
+ result |= exporter->add_body();
}
if (savepage) {
result = exporter->write(subfix);
@@ -108,14 +109,20 @@ static bool gpencil_io_export_frame(GpencilExporterSVG *exporter,
}
/* Export full animation in Storyboard mode. */
-static bool gpencil_io_export_storyboard(
- Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob, GpencilExportParams *iparams)
+static bool gpencil_io_export_storyboard(Main *bmain,
+ Depsgraph *depsgraph,
+ Scene *scene,
+ Object *ob,
+ const char *filename,
+ GpencilExportParams *iparams)
{
Object *ob_eval_ = (Object *)DEG_get_evaluated_id(depsgraph, &ob->id);
bGPdata *gpd_eval = (bGPdata *)ob_eval_->data;
bool done = false;
GpencilExporterSVG *exporter = new GpencilExporterSVG(iparams);
+ /* Prepare output filename with full path. */
+ exporter->set_out_filename(filename);
/* Storyboard only works in camera view. */
RegionView3D *rv3d = (RegionView3D *)iparams->region->regiondata;
@@ -152,7 +159,7 @@ static bool gpencil_io_export_storyboard(
const bool use_markers = ((iparams->flag & GP_EXPORT_MARKERS) != 0);
for (int i = iparams->frame_start; i < iparams->frame_end + 1; i++) {
- if (is_keyframe_empty(iparams->C, gpd_eval, i, use_markers)) {
+ if (is_keyframe_selected(iparams->C, gpd_eval, i, use_markers)) {
continue;
}
shot++;
@@ -198,6 +205,8 @@ static bool gpencil_io_export_storyboard(
/* Create a new class object per page. */
delete exporter;
exporter = new GpencilExporterSVG(iparams);
+ /* Prepare output filename with full path. */
+ exporter->set_out_filename(filename);
}
}
@@ -226,20 +235,20 @@ bool gpencil_io_export(const char *filename, GpencilExportParams *iparams)
copy_v2_v2(iparams->paper_size, iparams->paper_size);
if (!is_storyboard) {
- GpencilExporterSVG writter = GpencilExporterSVG(iparams);
+ GpencilExporterSVG exporter = GpencilExporterSVG(iparams);
/* Prepare output filename with full path. */
- writter.set_out_filename(filename);
+ exporter.set_out_filename(filename);
float no_offset[2] = {0.0f, 0.0f};
float ratio[2] = {1.0f, 1.0f};
- writter.set_frame_ratio(ratio);
+ exporter.set_frame_ratio(ratio);
iparams->file_subfix[0] = '\0';
- done |= gpencil_io_export_frame(&writter, iparams, no_offset, true, true, true);
+ done |= gpencil_io_export_frame(&exporter, iparams, no_offset, true, true, true);
}
else {
int oldframe = (int)DEG_get_ctime(depsgraph);
- done |= gpencil_io_export_storyboard(bmain, depsgraph, scene, ob, iparams);
+ done |= gpencil_io_export_storyboard(bmain, depsgraph, scene, ob, filename, iparams);
/* Return frame state and DB to original state. */
CFRA = oldframe;
diff --git a/source/blender/io/gpencil/intern/gpencil_io_export_base.h b/source/blender/io/gpencil/intern/gpencil_io_export_base.h
index 0f6c3aa3b6c..49787171865 100644
--- a/source/blender/io/gpencil/intern/gpencil_io_export_base.h
+++ b/source/blender/io/gpencil/intern/gpencil_io_export_base.h
@@ -44,8 +44,8 @@ class GpencilExporter {
public:
GpencilExporter(const struct GpencilExportParams *iparams);
- virtual void add_newpage(void) = 0;
- virtual void add_body(void) = 0;
+ virtual bool add_newpage(void) = 0;
+ virtual bool add_body(void) = 0;
virtual bool write(std::string subfix) = 0;
void set_out_filename(const char *filename);
diff --git a/source/blender/io/gpencil/intern/gpencil_io_export_svg.cc b/source/blender/io/gpencil/intern/gpencil_io_export_svg.cc
index 2fce9d20421..f1a63f6648b 100644
--- a/source/blender/io/gpencil/intern/gpencil_io_export_svg.cc
+++ b/source/blender/io/gpencil/intern/gpencil_io_export_svg.cc
@@ -69,21 +69,24 @@ GpencilExporterSVG::GpencilExporterSVG(const struct GpencilExportParams *iparams
invert_axis_[1] = true;
}
-void GpencilExporterSVG::add_newpage(void)
+bool GpencilExporterSVG::add_newpage(void)
{
create_document_header();
+ return true;
}
-void GpencilExporterSVG::add_body(void)
+bool GpencilExporterSVG::add_body(void)
{
export_gpencil_layers();
+ return true;
}
bool GpencilExporterSVG::write(std::string subfix)
{
bool result = true;
/* Save File. */
- /* Add frame to filename. */
+
+ /* Add page to filename. */
std::string frame_file = out_filename_;
size_t found = frame_file.find_last_of(".");
if (found != std::string::npos) {
@@ -147,12 +150,11 @@ void GpencilExporterSVG::create_document_header(void)
/* Scene name. */
if ((params_.flag & GP_EXPORT_STORYBOARD_MODE) != 0) {
- add_text(main_node,
- 30.0f,
- params_.paper_size[1] - 30.0f,
- std::string(scene->id.name + 2),
- 12.0f,
- "#000000");
+ char scenetxt[96];
+ sprintf(scenetxt, "Scene: %s", scene->id.name + 2);
+
+ add_text(
+ main_node, 30.0f, params_.paper_size[1] - 30.0f, std::string(scenetxt), 12.0f, "#000000");
}
}
diff --git a/source/blender/io/gpencil/intern/gpencil_io_export_svg.h b/source/blender/io/gpencil/intern/gpencil_io_export_svg.h
index f575f926a62..6c644308c41 100644
--- a/source/blender/io/gpencil/intern/gpencil_io_export_svg.h
+++ b/source/blender/io/gpencil/intern/gpencil_io_export_svg.h
@@ -42,9 +42,9 @@ class GpencilExporterSVG : public GpencilExporter {
public:
GpencilExporterSVG(const struct GpencilExportParams *iparams);
- virtual void add_newpage(void);
- virtual void add_body(void);
- virtual bool write(std::string subfix);
+ bool add_newpage(void);
+ bool add_body(void);
+ bool write(std::string subfix);
protected:
void add_rect(pugi::xml_node node,
More information about the Bf-blender-cvs
mailing list