From 630fc8e9839ac534ad445ddfda8f175365009439 Mon Sep 17 00:00:00 2001 From: Matthias Melcher Date: Thu, 15 Mar 2018 00:07:53 +0000 Subject: Android: implemented good complex clipping, but unoptimized. fl_rectf is so far the only function that uses the complex clipping region successfully. Code is slow, but works. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12747 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/drivers/Android/Fl_Android_Graphics_Driver.cxx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/drivers/Android/Fl_Android_Graphics_Driver.cxx') diff --git a/src/drivers/Android/Fl_Android_Graphics_Driver.cxx b/src/drivers/Android/Fl_Android_Graphics_Driver.cxx index 4e3be5d14..554d72e84 100644 --- a/src/drivers/Android/Fl_Android_Graphics_Driver.cxx +++ b/src/drivers/Android/Fl_Android_Graphics_Driver.cxx @@ -72,7 +72,9 @@ void Fl_Android_Graphics_Driver::make_current(Fl_Window *win) pDesktopWindowRegion.subtract(r); wTop = Fl::next_window(wTop); } + pDesktopWindowRegion.print(" #### DESKTOP"); pClippingRegion.set(pDesktopWindowRegion); + pClippingRegion.print("#### CLIPPING"); } @@ -97,13 +99,17 @@ void Fl_Android_Graphics_Driver::rectf_unscaled(float x, float y, float w, float { // FIXME: r must be a complex region, like pClippingRegion. -#if 0 Fl_Rect_Region r(x, y, w, h); +#if 0 if (r.intersect_with(pClippingRegion)) { rectf_unclipped(r.x(), r.y(), r.w(), r.h()); } #else // proof of concept // FIXME: write iterator over tree + + r.print("---- fl_rectf"); + pClippingRegion.print("clip to"); + for (Fl_Complex_Region *cr = &pClippingRegion; cr; cr=cr->next()) { if (cr->subregion()) { for (Fl_Complex_Region *cr1 = cr->subregion(); cr1; cr1=cr1->next()) { @@ -124,8 +130,6 @@ void Fl_Android_Graphics_Driver::rectf_unscaled(float x, float y, float w, float } else { Fl_Rect_Region r(x, y, w, h); if (r.intersect_with(*cr)) { - r.print("---- fl_rectf"); - pClippingRegion.print("clip to"); rectf_unclipped(r.x(), r.y(), r.w(), r.h()); } } -- cgit v1.2.3