diff options
-rw-r--r-- | include/private/ui/RegionHelper.h | 15 | ||||
-rw-r--r-- | libs/ui/tests/region.cpp | 7 |
2 files changed, 16 insertions, 6 deletions
diff --git a/include/private/ui/RegionHelper.h b/include/private/ui/RegionHelper.h index 926fddb..8d76533 100644 --- a/include/private/ui/RegionHelper.h +++ b/include/private/ui/RegionHelper.h @@ -86,7 +86,7 @@ public: rasterizer(current); } } - } while(!spannerInner.isDone()); + } while(!spannerInner.isDone()); } while(!spanner.isDone()); } @@ -220,18 +220,21 @@ private: } inline void prepare(int inside) { - SpannerBase::lhs_head = lhs.rects->left + lhs.dx; - SpannerBase::lhs_tail = lhs.rects->right + lhs.dx; - SpannerBase::rhs_head = rhs.rects->left + rhs.dx; - SpannerBase::rhs_tail = rhs.rects->right + rhs.dx; if (inside == SpannerBase::lhs_before_rhs) { + SpannerBase::lhs_head = lhs.rects->left + lhs.dx; + SpannerBase::lhs_tail = lhs.rects->right + lhs.dx; SpannerBase::rhs_head = max_value; SpannerBase::rhs_tail = max_value; } else if (inside == SpannerBase::lhs_after_rhs) { SpannerBase::lhs_head = max_value; SpannerBase::lhs_tail = max_value; + SpannerBase::rhs_head = rhs.rects->left + rhs.dx; + SpannerBase::rhs_tail = rhs.rects->right + rhs.dx; } else { - // use both spans + SpannerBase::lhs_head = lhs.rects->left + lhs.dx; + SpannerBase::lhs_tail = lhs.rects->right + lhs.dx; + SpannerBase::rhs_head = rhs.rects->left + rhs.dx; + SpannerBase::rhs_tail = rhs.rects->right + rhs.dx; } } diff --git a/libs/ui/tests/region.cpp b/libs/ui/tests/region.cpp index 0deb2ba..ef15de9 100644 --- a/libs/ui/tests/region.cpp +++ b/libs/ui/tests/region.cpp @@ -25,9 +25,16 @@ using namespace android; int main() { + Region empty; Region reg0( Rect( 0, 0, 100, 100 ) ); Region reg1 = reg0; Region reg2, reg3; + + Region reg4 = empty | reg1; + Region reg5 = reg1 | empty; + + reg4.dump("reg4"); + reg5.dump("reg5"); reg0.dump("reg0"); reg1.dump("reg1"); |