diff options
Diffstat (limited to 'src/selection.cpp')
| -rw-r--r-- | src/selection.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/selection.cpp b/src/selection.cpp index 763713c9d..473a7202e 100644 --- a/src/selection.cpp +++ b/src/selection.cpp @@ -339,6 +339,23 @@ NR::Rect Selection::boundsInDocument() const { return NR::Rect(*boundsInDocument(&r)); } +/** Extract the position of the center from the first selected object */ +NR::Point Selection::center() const { + GSList *items = (GSList *) const_cast<Selection *>(this)->itemList(); + NR::Point center; + if (items) { + SPItem *first = reinterpret_cast<SPItem*>(g_slist_last(items)->data); // from the first item in selection + if (first->isCenterSet()) { // only if set explicitly + center = first->getCenter(); + } else { + center = bounds().midpoint(); + } + } else { + center = bounds().midpoint(); + } + return center; +} + /** * Compute the list of points in the selection that are to be considered for snapping. */ |
