diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2018-03-14 23:13:48 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2018-03-14 23:13:48 +0000 |
| commit | 1bb5eea696bfabdb3000b8430e539133af81fe67 (patch) | |
| tree | 669c3659e666f740c320e84b5cc8d5686bea1f5c /src/drivers/Android/Fl_Android_Graphics_Driver.H | |
| parent | 737d8bef2425d0373a8890b49f9b0babb7f994db (diff) | |
Android: implemented complex clipping at the first level.
Clipping areas are calculated for overlapping windows, named "Desktop
Windows". The first level implementation works if the resulting complex
region is just a rectangle. Higher complexity (sub-rectangles) is next.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12746 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers/Android/Fl_Android_Graphics_Driver.H')
| -rw-r--r-- | src/drivers/Android/Fl_Android_Graphics_Driver.H | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/drivers/Android/Fl_Android_Graphics_Driver.H b/src/drivers/Android/Fl_Android_Graphics_Driver.H index d229180c3..eca76be9b 100644 --- a/src/drivers/Android/Fl_Android_Graphics_Driver.H +++ b/src/drivers/Android/Fl_Android_Graphics_Driver.H @@ -67,8 +67,8 @@ public: void set_empty(); void set(int x, int y, int w, int h); - void set(const Fl_Rect_Region &r); - int intersect_with(const Fl_Rect_Region &r); + virtual void set(const Fl_Rect_Region &r); + virtual int intersect_with(const Fl_Rect_Region &r); virtual void print(const char*) const; @@ -101,16 +101,25 @@ public: Fl_Complex_Region(); Fl_Complex_Region(const Fl_Rect_Region&); virtual ~Fl_Complex_Region() override; -// virtual void set(int x, int y, int w, int h); + virtual void set(const Fl_Rect_Region &r) override; + virtual int intersect_with(const Fl_Rect_Region &r) override; + int subtract(const Fl_Rect_Region &r); + + // virtual void set(int x, int y, int w, int h); // virtual void set(Fl_Rect_Region*); // void subtract(Fl_Rect_Region*); // void intersect(Fl_Rect_Region*); // void clone(Fl_Complex_Region*); char is_simple() const { return pSubregion==0; } char is_complex() const { return pSubregion!=0; } + + Fl_Complex_Region *subregion() const { return pSubregion; } + Fl_Complex_Region *next() const { return pNext; } + virtual void print(const char*) const override; protected: void print_data(int indent) const; + int subtract_smaller_region(const Fl_Rect_Region &r); Fl_Complex_Region *pSubregion = 0L; Fl_Complex_Region *pParent = 0L; Fl_Complex_Region *pNext = 0L; @@ -262,8 +271,13 @@ protected: int32_t pStride; uint16_t *pBits; + // Clipping region of the current window in window coordinates (see: pStride and pBits) Fl_Rect_Region pWindowRegion; - Fl_Rect_Region pClippingRegion; + + Fl_Complex_Region pDesktopWindowRegion; + + // Final clipping region for all graphics calls to this class. + Fl_Complex_Region pClippingRegion; }; |
