[Bf-blender-cvs] [cdd980e0830] greasepencil-object: GPencil: Cleanup SVG exporter code
Antonio Vazquez
noreply at git.blender.org
Fri Aug 14 20:27:15 CEST 2020
Commit: cdd980e083076b43efdb19ed50212c8be01bc887
Author: Antonio Vazquez
Date: Fri Aug 14 20:02:08 2020 +0200
Branches: greasepencil-object
https://developer.blender.org/rBcdd980e083076b43efdb19ed50212c8be01bc887
GPencil: Cleanup SVG exporter code
===================================================================
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.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 e4e91dd6bcc..51a5f1a6547 100644
--- a/source/blender/io/gpencil/gpencil_io_exporter.h
+++ b/source/blender/io/gpencil/gpencil_io_exporter.h
@@ -62,6 +62,7 @@ struct GpencilExportParams {
short text_type;
};
+/* GpencilExportParams->flag. */
typedef enum eGpencilExportParams_Flag {
/* Use Storyboard format. */
GP_EXPORT_STORYBOARD_MODE = (1 << 0),
@@ -79,14 +80,17 @@ typedef enum eGpencilExportParams_Flag {
typedef enum eGpencilExport_Modes {
GP_EXPORT_TO_SVG = 0,
+ /* Add new export formats here. */
} eGpencilExport_Modes;
+/* Object to be exported. */
typedef enum eGpencilExportSelect {
GP_EXPORT_ACTIVE = 0,
GP_EXPORT_SELECTED = 1,
GP_EXPORT_VISIBLE = 2,
} eGpencilExportSelect;
+/** Document orientation. */
typedef enum eGpencilExportPaper {
GP_EXPORT_PAPER_LANDSCAPE = 0,
GP_EXPORT_PAPER_PORTRAIT = 1,
diff --git a/source/blender/io/gpencil/intern/gpencil_io_capi.cc b/source/blender/io/gpencil/intern/gpencil_io_capi.cc
index 93213f2781e..2bf1e33bae2 100644
--- a/source/blender/io/gpencil/intern/gpencil_io_capi.cc
+++ b/source/blender/io/gpencil/intern/gpencil_io_capi.cc
@@ -74,7 +74,7 @@ static bool is_keyframe_empty(bContext *C, bGPdata *gpd, int framenum, bool use_
}
/* Export current frame. */
-static bool gpencil_io_export_frame(GpencilExporterSVG *writter,
+static bool gpencil_io_export_frame(GpencilExporterSVG *exporter,
const GpencilExportParams *iparams,
float frame_offset[2],
const bool newpage,
@@ -85,12 +85,21 @@ static bool gpencil_io_export_frame(GpencilExporterSVG *writter,
bool result = false;
switch (iparams->mode) {
case GP_EXPORT_TO_SVG: {
- writter->set_frame_number(iparams->framenum);
- writter->set_frame_offset(frame_offset);
+ exporter->set_frame_number(iparams->framenum);
+ exporter->set_frame_offset(frame_offset);
std::string subfix = iparams->file_subfix;
- result = writter->write(subfix, newpage, body, savepage);
+ if (newpage) {
+ exporter->add_newpage();
+ }
+ if (body) {
+ exporter->add_body();
+ }
+ if (savepage) {
+ result = exporter->write(subfix);
+ }
break;
}
+ /* Add new export formats here. */
default:
break;
}
@@ -106,13 +115,13 @@ static bool gpencil_export_storyboard(
bGPdata *gpd_eval = (bGPdata *)ob_eval_->data;
bool done = false;
- GpencilExporterSVG *writter = new GpencilExporterSVG(iparams);
+ GpencilExporterSVG *exporter = new GpencilExporterSVG(iparams);
/* Storyboard only works in camera view. */
RegionView3D *rv3d = (RegionView3D *)iparams->region->regiondata;
if ((rv3d == NULL) || (rv3d->persp != RV3D_CAMOB)) {
printf("Storyboard only allowed in camera view.\n");
- delete writter;
+ delete exporter;
return false;
}
@@ -147,13 +156,13 @@ static bool gpencil_export_storyboard(
continue;
}
shot++;
- writter->set_shot(shot);
+ exporter->set_shot(shot);
if (header) {
- writter->set_frame_box(frame_box);
- writter->set_frame_ratio(render_ratio);
+ exporter->set_frame_box(frame_box);
+ exporter->set_frame_ratio(render_ratio);
- pending_save |= gpencil_io_export_frame(writter, iparams, frame_offset, true, false, false);
+ pending_save |= gpencil_io_export_frame(exporter, iparams, frame_offset, true, false, false);
header = false;
}
@@ -162,7 +171,7 @@ static bool gpencil_export_storyboard(
sprintf(iparams->file_subfix, "%04d", page);
iparams->framenum = i;
- pending_save |= gpencil_io_export_frame(writter, iparams, frame_offset, false, true, false);
+ pending_save |= gpencil_io_export_frame(exporter, iparams, frame_offset, false, true, false);
col++;
if (col > blocks[0]) {
@@ -179,7 +188,7 @@ static bool gpencil_export_storyboard(
}
if (row > blocks[1]) {
- done |= gpencil_io_export_frame(writter, iparams, frame_offset, false, false, true);
+ done |= gpencil_io_export_frame(exporter, iparams, frame_offset, false, false, true);
page++;
header = true;
pending_save = false;
@@ -187,16 +196,16 @@ static bool gpencil_export_storyboard(
copy_v2_v2(frame_offset, gap);
/* Create a new class object per page. */
- delete writter;
- writter = new GpencilExporterSVG(iparams);
+ delete exporter;
+ exporter = new GpencilExporterSVG(iparams);
}
}
if (pending_save) {
- done |= gpencil_io_export_frame(writter, iparams, frame_offset, false, false, true);
+ done |= gpencil_io_export_frame(exporter, iparams, frame_offset, false, false, true);
}
- delete writter;
+ delete exporter;
return done;
}
diff --git a/source/blender/io/gpencil/intern/gpencil_io_export_base.cc b/source/blender/io/gpencil/intern/gpencil_io_export_base.cc
index 9f1dc0d5b98..a4b64c0038b 100644
--- a/source/blender/io/gpencil/intern/gpencil_io_export_base.cc
+++ b/source/blender/io/gpencil/intern/gpencil_io_export_base.cc
@@ -118,9 +118,9 @@ GpencilExporter::GpencilExporter(const struct GpencilExportParams *iparams)
offset_[0] = 0.0f;
offset_[1] = 0.0f;
- selected_objects_boundbox();
+ selected_objects_boundbox_set();
rctf boundbox;
- get_select_boundbox(&boundbox);
+ selected_objects_boundbox_get(&boundbox);
render_x_ = boundbox.xmax - boundbox.xmin;
render_y_ = boundbox.ymax - boundbox.ymin;
@@ -319,7 +319,7 @@ float GpencilExporter::stroke_point_radius_get(struct bGPDstroke *gps)
* \param color: Original RGB color
* \return String with the conversion
*/
-std::string GpencilExporter::rgb_to_hex(float color[3])
+std::string GpencilExporter::rgb_to_hexstr(float color[3])
{
int r = color[0] * 255.0f;
int g = color[1] * 255.0f;
@@ -430,17 +430,17 @@ struct MaterialGPencilStyle *GpencilExporter::gp_style_current_get(void)
return gp_style;
}
-bool GpencilExporter::gp_style_is_stroke(void)
+bool GpencilExporter::material_is_stroke(void)
{
return is_stroke;
}
-bool GpencilExporter::gp_style_is_fill(void)
+bool GpencilExporter::material_is_fill(void)
{
return is_fill;
}
-float GpencilExporter::stroke_average_opacity(void)
+float GpencilExporter::stroke_average_opacity_get(void)
{
return avg_opacity;
}
@@ -451,7 +451,7 @@ bool GpencilExporter::is_camera_mode(void)
}
/* Calc selected strokes boundbox. */
-void GpencilExporter::selected_objects_boundbox(void)
+void GpencilExporter::selected_objects_boundbox_set(void)
{
const float gap = 10.0f;
const bGPDspoint *pt;
@@ -500,7 +500,7 @@ void GpencilExporter::selected_objects_boundbox(void)
select_box.ymax = r_max[1];
}
-void GpencilExporter::get_select_boundbox(rctf *boundbox)
+void GpencilExporter::selected_objects_boundbox_get(rctf *boundbox)
{
boundbox->xmin = select_box.xmin;
boundbox->xmax = select_box.xmax;
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 b6519806a84..991aa97da21 100644
--- a/source/blender/io/gpencil/intern/gpencil_io_export_base.h
+++ b/source/blender/io/gpencil/intern/gpencil_io_export_base.h
@@ -44,10 +44,9 @@ class GpencilExporter {
public:
GpencilExporter(const struct GpencilExportParams *iparams);
- virtual bool write(std::string subfix,
- const bool newpage,
- const bool body,
- const bool savepage) = 0;
+ virtual void add_newpage(void) = 0;
+ virtual void add_body(void) = 0;
+ virtual bool write(std::string subfix) = 0;
void set_out_filename(const char *filename);
void set_frame_number(int value);
@@ -57,9 +56,10 @@ class GpencilExporter {
void set_shot(int value);
protected:
+ GpencilExportParams params_;
+
bool invert_axis_[2];
float diff_mat_[4][4];
- GpencilExportParams params_;
char out_filename_[FILE_MAX];
/* Used for sorting objects. */
@@ -68,6 +68,7 @@ class GpencilExporter {
struct Object *ob;
};
+ /** List of included objects. */
std::list<ObjectZ> ob_list_;
/* Data for easy access. */
@@ -80,8 +81,8 @@ class GpencilExporter {
int winx_, winy_;
int render_x_, render_y_;
float camera_ratio_;
- float offset_[2];
rctf camera_rect_;
+ float offset_[2];
float frame_box_[2];
float frame_offset_[2];
float frame_ratio_[2];
@@ -93,30 +94,32 @@ class GpencilExporter {
/* Geometry functions. */
bool gpencil_3d_point_to_screen_space(const float co[3], float r_co[2]);
- bool is_stroke_thickness_constant(struct bGPDstroke *gps);
float stroke_average_pressure_get(struct bGPDstroke *gps);
float stroke_point_radius_get(struct bGPDstroke *gps);
- void selected_objects_boundbox(void);
void create_object_list(void);
- std::string rgb_to_hex(float color[3]);
+ std::string rgb_to_hexstr(float color[3]);
void rgb_to_grayscale(float color[3]);
std::string to_lower_string(char *input_text);
- struct bGPDlayer *gpl_current_get(void);
- struct bGPDframe *gpf_current_get(void);
- struct bGPDstroke *gps_current_get(void);
struct MaterialGPencilStyle *gp_style_current_get(void);
- bool gp_style_is_stroke(void);
- bool gp_style_is_fill(void);
- float stroke_average_opacity(void);
+ bool material_is_stroke(void);
+ bool material_is_fill(void);
+
+ bool is_stroke_thickness_constant(struct bGPDstroke *gps);
bool is_camera_mode(void);
+ float stroke_average_opacity_get(void);
+
+ struct bGPDlayer *gpl_current_get(void);
+ struct bGPDframe *gpf_current_get(void);
+ struct bGPDstroke *gps_current_get(void);
void gpl_current_set(struct bGPDlayer *gpl);
void gpf_current_set(struct bGPDframe *gpf);
void gps_current_set(struct Object *ob, struct bGPDstroke *gps, const bool set_colors);
- void get_select_boundbox(rctf *boundbox);
+ void selected_objects_boundbox_set(void);
+ void selected_objects_boundbox_get(rctf *boundbox);
private:
struct bGPDlayer *
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list