Commit: 7a85be00b5877e637757f012e5b014b8fbb62062 Author: Antonio Vazquez Date: Mon Jul 27 13:01:10 2020 +0200 Branches: greasepencil-object https://developer.blender.org/rB7a85be00b5877e637757f012e5b014b8fbb62062
GPencil: Calculate real radius size for SVG point =================================================================== M source/blender/io/gpencil/intern/gpencil_io_svg.cc =================================================================== diff --git a/source/blender/io/gpencil/intern/gpencil_io_svg.cc b/source/blender/io/gpencil/intern/gpencil_io_svg.cc index 6a4baa05a72..7b151e2b6ec 100644 --- a/source/blender/io/gpencil/intern/gpencil_io_svg.cc +++ b/source/blender/io/gpencil/intern/gpencil_io_svg.cc @@ -269,13 +269,15 @@ void GpencilExporterSVG::export_point(pugi::xml_node gpl_node, float diff_mat[4][4]) { BLI_assert(gps->totpoints == 1); + RegionView3D *rv3d = (RegionView3D *)params.region->regiondata; + bGPDspoint *pt = NULL; pugi::xml_node gps_node = gpl_node.append_child("circle"); gps_node.append_attribute("class").set_value( ("style_stroke_" + std::to_string(gps->mat_nr + 1)).c_str()); - bGPDspoint *pt = &gps->points[0]; + pt = &gps->points[0]; float screen_co[2]; gpencil_3d_point_to_screen_space(params.region, diff_mat, &pt->x, screen_co); /* Invert Y axis. */ @@ -285,10 +287,25 @@ void GpencilExporterSVG::export_point(pugi::xml_node gpl_node, gps_node.append_attribute("cy").set_value(screen_co[1]); /* Radius. */ - /* TODO: This is wrong. */ - float defaultpixsize = 1000.0f / gpd->pixfactor; - float stroke_radius = ((gps->thickness + gpl->line_change) / defaultpixsize) / 2.0f; - gps_node.append_attribute("r").set_value(stroke_radius); + bGPDstroke *gps_tmp = BKE_gpencil_stroke_duplicate(gps, true); + bGPDstroke *gps_perimeter = BKE_gpencil_stroke_perimeter_from_view( + rv3d, gpd, gpl, gps_tmp, 3, diff_mat); + + pt = &gps_perimeter->points[0]; + float screen_ex[2]; + gpencil_3d_point_to_screen_space(params.region, diff_mat, &pt->x, screen_ex); + /* Invert Y axis. */ + screen_ex[1] = params.region->winy - screen_ex[1]; + + float v1[2]; + sub_v2_v2v2(v1, screen_co, screen_ex); + float radius = len_v2(v1); + BKE_gpencil_free_stroke(gps_perimeter); + BKE_gpencil_free_stroke(gps_tmp); + + // float defaultpixsize = 1000.0f / gpd->pixfactor; + // float stroke_radius = ((gps->thickness + gpl->line_change) / defaultpixsize) / 2.0f; + gps_node.append_attribute("r").set_value(radius); } /** @@ -304,8 +321,6 @@ void GpencilExporterSVG::export_stroke(pugi::xml_node gpl_node, const bool is_fill) { pugi::xml_node gps_node = gpl_node.append_child("path"); - // gps_node.append_attribute("fill").set_value("#000000"); - // gps_node.append_attribute("stroke").set_value("#000000"); std::string style_type = (is_fill) ? "_fill_" : "_stroke_"; gps_node.append_attribute("class").set_value( _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs