From e98da96c3c45c91ea322d30364a5ec3cc1007ebf Mon Sep 17 00:00:00 2001 From: johanengelen Date: Fri, 28 Mar 2008 19:40:38 +0000 Subject: [PATCH] and two more files that were missed in lpe-group commit --- src/live_effects/lpegroupbbox.cpp | 75 +++++++++++++++++++++++++++++++ src/live_effects/lpegroupbbox.h | 41 +++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 src/live_effects/lpegroupbbox.cpp create mode 100644 src/live_effects/lpegroupbbox.h diff --git a/src/live_effects/lpegroupbbox.cpp b/src/live_effects/lpegroupbbox.cpp new file mode 100644 index 000000000..1468e5dde --- /dev/null +++ b/src/live_effects/lpegroupbbox.cpp @@ -0,0 +1,75 @@ +#define INKSCAPE_LPEGROUPBBOX_CPP + +/* + * Copyright (C) Steren Giannini 2008 + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "live_effects/lpegroupbbox.h" +#include "sp-shape.h" +#include "sp-item.h" +#include "sp-path.h" +#include "sp-item-group.h" +#include "display/curve.h" +#include +#include +#include "live_effects/n-art-bpath-2geom.h" +#include "svg/svg.h" +#include "ui/widget/scalar.h" + +#include <2geom/sbasis.h> +#include <2geom/sbasis-geometric.h> +#include <2geom/bezier-to-sbasis.h> +#include <2geom/sbasis-to-bezier.h> +#include <2geom/d2.h> +#include <2geom/piecewise.h> + +#include + +using std::vector; + +namespace Inkscape { +namespace LivePathEffect { + +void +LivePathEffect_group_bbox::recursive_original_bbox(SPGroup *group, Geom::Piecewise > & pwd2, std::vector & temppath) +{ + std::vector tempsubpath; + GSList const *item_list = sp_item_group_item_list(group); + + for ( GSList const *iter = item_list; iter; iter = iter->next ) + { + SPObject *subitem = static_cast(iter->data); + if (SP_IS_PATH(subitem)) + { + //if there is not an original-d, just take the d + if(SP_OBJECT_REPR(subitem)->attribute("inkscape:original-d") != NULL) + tempsubpath = SVGD_to_2GeomPath(SP_OBJECT_REPR(subitem)->attribute("inkscape:original-d")); + else + tempsubpath = SVGD_to_2GeomPath(SP_OBJECT_REPR(subitem)->attribute("d")); + + temppath.insert(temppath.end(), tempsubpath.begin(), tempsubpath.end()); + }else + if (SP_IS_GROUP(subitem)) + { + recursive_original_bbox(SP_GROUP(subitem), pwd2, temppath); + } + + } +} + + +} // namespace LivePathEffect +} /* namespace Inkscape */ + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/src/live_effects/lpegroupbbox.h b/src/live_effects/lpegroupbbox.h new file mode 100644 index 000000000..cc56ed9a7 --- /dev/null +++ b/src/live_effects/lpegroupbbox.h @@ -0,0 +1,41 @@ +#ifndef INKSCAPE_LPEGROUPBBOX_H +#define INKSCAPE_LPEGROUPBBOXP_H + +/* + * Inkscape::LivePathEffect_group_bbox + * + * Copyright (C) Steren Giannini 2008 + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ +#include "live_effects/effect.h" +#include "live_effects/parameter/path.h" +#include "live_effects/parameter/enum.h" +#include "live_effects/parameter/bool.h" + +#include <2geom/sbasis.h> +#include <2geom/sbasis-geometric.h> +#include <2geom/bezier-to-sbasis.h> +#include <2geom/sbasis-to-bezier.h> +#include <2geom/d2.h> +#include <2geom/piecewise.h> + +namespace Inkscape { +namespace LivePathEffect { + +class LivePathEffect_group_bbox { +protected: +//if we need information concerning the group Bounding box and coordinates of each subshapes. + Geom::Interval boundingbox_X; + Geom::Interval boundingbox_Y; + +//Here is a recursive function to get the bbox of a group + void +recursive_original_bbox(SPGroup *group, Geom::Piecewise > & pwd2, std::vector & temppath); + +}; + +}; //namespace LivePathEffect +}; //namespace Inkscape + +#endif -- 2.30.2