From d037400fcf3fba455e092ed6c1e34163eb6c7b7f Mon Sep 17 00:00:00 2001 From: Krzysztof Kosi??ski Date: Sat, 3 Apr 2010 18:50:12 +0200 Subject: Fix grid extension (bzr r9281.1.10) --- src/extension/internal/grid.cpp | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'src/extension/internal/grid.cpp') diff --git a/src/extension/internal/grid.cpp b/src/extension/internal/grid.cpp index d4b35b261..deef367a4 100644 --- a/src/extension/internal/grid.cpp +++ b/src/extension/internal/grid.cpp @@ -46,13 +46,12 @@ Grid::load (Inkscape::Extension::Extension */*module*/) namespace { -Glib::ustring build_lines(int axis, Geom::Rect bounding_area, - float offset, float spacing) +void build_lines(int axis, Geom::Rect bounding_area, float offset, + float spacing, SVG::PathString &path_data) { Geom::Point point_offset(0.0, 0.0); point_offset[axis] = offset; - SVG::PathString path_data; for (Geom::Point start_point = bounding_area.min(); start_point[axis] + offset <= (bounding_area.max())[axis]; start_point[axis] += spacing) { @@ -62,8 +61,6 @@ Glib::ustring build_lines(int axis, Geom::Rect bounding_area, path_data.moveTo(start_point + point_offset) .lineTo(end_point + point_offset); } - - return path_data; } } @@ -89,10 +86,8 @@ Grid::effect (Inkscape::Extension::Effect *module, Inkscape::UI::View::View *doc if (bounds) { bounding_area = *bounds; } - - gdouble doc_height = sp_document_height(document->doc()); - Geom::Rect temprec = Geom::Rect(Geom::Point(bounding_area.min()[Geom::X], doc_height - bounding_area.min()[Geom::Y]), - Geom::Point(bounding_area.max()[Geom::X], doc_height - bounding_area.max()[Geom::Y])); + Geom::Rect temprec = Geom::Rect(Geom::Point(bounding_area.min()[Geom::X], bounding_area.min()[Geom::Y]), + Geom::Point(bounding_area.max()[Geom::X], bounding_area.max()[Geom::Y])); bounding_area = temprec; } @@ -103,10 +98,9 @@ Grid::effect (Inkscape::Extension::Effect *module, Inkscape::UI::View::View *doc float offsets[2] = { module->get_param_float("xoffset"), module->get_param_float("yoffset") }; - Glib::ustring path_data(""); + SVG::PathString path_data; for ( int axis = 0 ; axis < 2 ; ++axis ) { - path_data += build_lines(axis, bounding_area, - offsets[axis], spacings[axis]); + build_lines(axis, bounding_area, offsets[axis], spacings[axis], path_data); } Inkscape::XML::Document * xml_doc = sp_document_repr_doc(document->doc()); -- cgit v1.2.3 From 95a0c8412e84f5e0cc1d9a63fce2be75f9fa517e Mon Sep 17 00:00:00 2001 From: Krzysztof Kosi??ski Date: Tue, 6 Apr 2010 16:11:54 +0200 Subject: Revert the inverted coordinate system fix. 3D Boxes and guides require an XML-level backwards compatibility mechanism to fix properly, and it's too late in the 0.48 cycle to introduce it. (bzr r9298) --- src/extension/internal/grid.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src/extension/internal/grid.cpp') diff --git a/src/extension/internal/grid.cpp b/src/extension/internal/grid.cpp index deef367a4..d4b35b261 100644 --- a/src/extension/internal/grid.cpp +++ b/src/extension/internal/grid.cpp @@ -46,12 +46,13 @@ Grid::load (Inkscape::Extension::Extension */*module*/) namespace { -void build_lines(int axis, Geom::Rect bounding_area, float offset, - float spacing, SVG::PathString &path_data) +Glib::ustring build_lines(int axis, Geom::Rect bounding_area, + float offset, float spacing) { Geom::Point point_offset(0.0, 0.0); point_offset[axis] = offset; + SVG::PathString path_data; for (Geom::Point start_point = bounding_area.min(); start_point[axis] + offset <= (bounding_area.max())[axis]; start_point[axis] += spacing) { @@ -61,6 +62,8 @@ void build_lines(int axis, Geom::Rect bounding_area, float offset, path_data.moveTo(start_point + point_offset) .lineTo(end_point + point_offset); } + + return path_data; } } @@ -86,8 +89,10 @@ Grid::effect (Inkscape::Extension::Effect *module, Inkscape::UI::View::View *doc if (bounds) { bounding_area = *bounds; } - Geom::Rect temprec = Geom::Rect(Geom::Point(bounding_area.min()[Geom::X], bounding_area.min()[Geom::Y]), - Geom::Point(bounding_area.max()[Geom::X], bounding_area.max()[Geom::Y])); + + gdouble doc_height = sp_document_height(document->doc()); + Geom::Rect temprec = Geom::Rect(Geom::Point(bounding_area.min()[Geom::X], doc_height - bounding_area.min()[Geom::Y]), + Geom::Point(bounding_area.max()[Geom::X], doc_height - bounding_area.max()[Geom::Y])); bounding_area = temprec; } @@ -98,9 +103,10 @@ Grid::effect (Inkscape::Extension::Effect *module, Inkscape::UI::View::View *doc float offsets[2] = { module->get_param_float("xoffset"), module->get_param_float("yoffset") }; - SVG::PathString path_data; + Glib::ustring path_data(""); for ( int axis = 0 ; axis < 2 ; ++axis ) { - build_lines(axis, bounding_area, offsets[axis], spacings[axis], path_data); + path_data += build_lines(axis, bounding_area, + offsets[axis], spacings[axis]); } Inkscape::XML::Document * xml_doc = sp_document_repr_doc(document->doc()); -- cgit v1.2.3 From 74bd4815d7af73ed1595e3daf5c6fd40ea20336c Mon Sep 17 00:00:00 2001 From: Nicolas Dufour Date: Wed, 21 Apr 2010 23:40:54 +0200 Subject: Extensions. Fix Render>Grid extension (Bug #401567). Fixed bugs: - https://launchpad.net/bugs/401567 (bzr r9361) --- src/extension/internal/grid.cpp | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) (limited to 'src/extension/internal/grid.cpp') diff --git a/src/extension/internal/grid.cpp b/src/extension/internal/grid.cpp index d4b35b261..39bca52d8 100644 --- a/src/extension/internal/grid.cpp +++ b/src/extension/internal/grid.cpp @@ -46,25 +46,29 @@ Grid::load (Inkscape::Extension::Extension */*module*/) namespace { -Glib::ustring build_lines(int axis, Geom::Rect bounding_area, - float offset, float spacing) +Glib::ustring build_lines(Geom::Rect bounding_area, + float offset[], float spacing[]) { Geom::Point point_offset(0.0, 0.0); - point_offset[axis] = offset; SVG::PathString path_data; - for (Geom::Point start_point = bounding_area.min(); - start_point[axis] + offset <= (bounding_area.max())[axis]; - start_point[axis] += spacing) { - Geom::Point end_point = start_point; - end_point[1-axis] = (bounding_area.max())[1-axis]; - - path_data.moveTo(start_point + point_offset) - .lineTo(end_point + point_offset); - } - return path_data; -} + for ( int axis = 0 ; axis < 2 ; ++axis ) { + point_offset[axis] = offset[axis]; + + for (Geom::Point start_point = bounding_area.min(); + start_point[axis] + offset[axis] <= (bounding_area.max())[axis]; + start_point[axis] += spacing[axis]) { + Geom::Point end_point = start_point; + end_point[1-axis] = (bounding_area.max())[1-axis]; + + path_data.moveTo(start_point + point_offset) + .lineTo(end_point + point_offset); + } + } + // std::cout << "Path data:" << path_data.c_str() << std::endl; + return path_data; + } } @@ -104,11 +108,9 @@ Grid::effect (Inkscape::Extension::Effect *module, Inkscape::UI::View::View *doc module->get_param_float("yoffset") }; Glib::ustring path_data(""); - for ( int axis = 0 ; axis < 2 ; ++axis ) { - path_data += build_lines(axis, bounding_area, - offsets[axis], spacings[axis]); - } + path_data = build_lines(bounding_area, + offsets, spacings); Inkscape::XML::Document * xml_doc = sp_document_repr_doc(document->doc()); Inkscape::XML::Node * current_layer = static_cast(document)->currentLayer()->repr; Inkscape::XML::Node * path = xml_doc->createElement("svg:path"); -- cgit v1.2.3