X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fselection.h;h=b5a511e96f6ffbec9dae54d101d79ba48fb12a0c;hb=722a5b294d2a6cee2003c1b5969655204b346089;hp=f9368f5eef5e5898e72460f2abf218057b84151e;hpb=d414fe3e051a6fced9010f6b610fdca5c7285304;p=inkscape.git diff --git a/src/selection.h b/src/selection.h index f9368f5ee..b5a511e96 100644 --- a/src/selection.h +++ b/src/selection.h @@ -18,9 +18,10 @@ #include #include +#include #include -#include "libnr/nr-rect.h" +//#include "libnr/nr-rect.h" #include "libnr/nr-convex-hull.h" #include "forward.h" #include "gc-managed.h" @@ -28,8 +29,12 @@ #include "gc-anchored.h" #include "gc-soft-ptr.h" #include "util/list.h" +#include "sp-item.h" +#include "snapped-point.h" class SPItem; +class SPBox3D; +class Persp3D; namespace Inkscape { namespace XML { @@ -53,7 +58,7 @@ namespace Inkscape { * at the given desktop. Both SPItem and SPRepr lists can be retrieved * from the selection. Many actions operate on the selection, so it is * widely used throughout the code. - * It also implements its own asynchronous notification signals that + * It also implements its own asynchronous notification signals that * UI elements can listen to. */ class Selection : public Inkscape::GC::Managed<>, @@ -71,7 +76,7 @@ public: ~Selection(); /** - * @brief Returns the desktop the seoection is bound to + * @brief Returns the desktop the selection is bound to * * @return the desktop the selection is bound to */ @@ -224,6 +229,15 @@ public: /// method for that GSList const *reprList(); + /** @brief Returns a list of all perspectives which have a 3D box in the current selection + (these may also be nested in groups) */ + std::list const perspList(); + + /** @brief Returns a list of all 3D boxes in the current selection which are associated to @c + persp. If @c pers is @c NULL, return all selected boxes. + */ + std::list const box3DList(Persp3D *persp = NULL); + /** @brief Returns the number of layers in which there are selected objects */ guint numberOfLayers(); @@ -231,40 +245,40 @@ public: guint numberOfParents(); /** @brief Returns the bounding rectangle of the selection */ - NRRect *bounds(NRRect *dest) const; + NRRect *bounds(NRRect *dest, SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX) const; /** @brief Returns the bounding rectangle of the selection */ - NR::Maybe bounds() const; + Geom::OptRect bounds(SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX) const; /** * @brief Returns the bounding rectangle of the selection * * \todo how is this different from bounds()? - */ - NRRect *boundsInDocument(NRRect *dest) const; + */ + NRRect *boundsInDocument(NRRect *dest, SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX) const; /** * @brief Returns the bounding rectangle of the selection * * \todo how is this different from bounds()? */ - NR::Maybe boundsInDocument() const; + Geom::OptRect boundsInDocument(SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX) const; /** * @brief Returns the rotation/skew center of the selection */ - NR::Maybe center() const; + boost::optional center() const; /** * @brief Gets the selection's snap points. * @return Selection's snap points */ - std::vector getSnapPoints() const; + std::vector getSnapPoints(SnapPreferences const *snapprefs) const; /** * @brief Gets the snap points of a selection that form a convex hull. * @return Selection's convex hull points */ - std::vector getSnapPointsConvexHull() const; + std::vector getSnapPointsConvexHull(SnapPreferences const *snapprefs) const; /** * @brief Connects a slot to be notified of selection changes @@ -281,8 +295,8 @@ public: } /** - * @brief Connects a slot to be notified of selected - * object modifications + * @brief Connects a slot to be notified of selected + * object modifications * * This method connects the given slot such that it will * receive notifications whenever any selected item is @@ -335,6 +349,13 @@ private: mutable GSList *_reprs; mutable GSList *_items; + void add_box_perspective(SPBox3D *box); + void add_3D_boxes_recursively(SPObject *obj); + void remove_box_perspective(SPBox3D *box); + void remove_3D_boxes_recursively(SPObject *obj); + + std::list _3dboxes; + GC::soft_ptr _desktop; SPObject* _selection_context; guint _flags;