diff --git a/src/libnr/nr-rect.cpp b/src/libnr/nr-rect.cpp
index 76d7fff8dd8ce956bc4f6b326d698a0992821253..21d3f470ad129e1d60b5def6035b06a16084f4ee 100644 (file)
--- a/src/libnr/nr-rect.cpp
+++ b/src/libnr/nr-rect.cpp
#include "nr-rect-l.h"
+NRRect::NRRect(NR::Rect const &rect)
+: x0(rect.min()[NR::X]), y0(rect.min()[NR::Y]),
+ x1(rect.max()[NR::X]), y1(rect.max()[NR::Y])
+{}
+
+NRRect::NRRect(NR::Maybe<NR::Rect> const &rect) {
+ if (rect) {
+ x0 = rect->min()[NR::X];
+ y0 = rect->min()[NR::Y];
+ x1 = rect->max()[NR::X];
+ y1 = rect->max()[NR::Y];
+ } else {
+ nr_rect_d_set_empty(this);
+ }
+}
+
+NR::Maybe<NR::Rect> NRRect::upgrade() const {
+ if (nr_rect_d_test_empty(this)) {
+ return NR::Nothing();
+ } else {
+ return NR::Rect(NR::Point(x0, y0), NR::Point(x1, y1));
+ }
+}
+
/**
* \param r0 Rectangle.
* \param r1 Another rectangle.