diff options
Diffstat (limited to 'src/drivers/Android/Fl_Android_Graphics_Driver.H')
| -rw-r--r-- | src/drivers/Android/Fl_Android_Graphics_Driver.H | 133 |
1 files changed, 1 insertions, 132 deletions
diff --git a/src/drivers/Android/Fl_Android_Graphics_Driver.H b/src/drivers/Android/Fl_Android_Graphics_Driver.H index 53118dc15..db8984c4c 100644 --- a/src/drivers/Android/Fl_Android_Graphics_Driver.H +++ b/src/drivers/Android/Fl_Android_Graphics_Driver.H @@ -26,6 +26,7 @@ #define FL_ANDROID_GRAPHICS_DRIVER_H #include <FL/Fl_Graphics_Driver.H> +#include "Fl_Android_Graphics_Clipping.H" #include <limits.h> @@ -33,138 +34,6 @@ class Fl_Android_Window_Driver; /** - * The Fl_Rect_Region describes a rectangular clipping region. - * - * Contrary to common FLTK convention, rectangles are stored with coordinates - * instead of their width and height to accelerate calculations. The discreet - * constructor however uses the old convention for convenience. - */ -class Fl_Rect_Region -{ -public: - enum Type { - EMPTY = 0, SAME, LESS, MORE, INFINITE - }; - - Fl_Rect_Region(); - Fl_Rect_Region(int x, int y, int w, int h); - Fl_Rect_Region(const Fl_Rect_Region&); - Fl_Rect_Region(enum Type what); - virtual ~Fl_Rect_Region() { } - - int x() const { return pLeft; } - int y() const { return pTop; } - int w() const { return pRight - pLeft; } - int h() const { return pBottom - pTop; } - - int left() const { return pLeft; } - int top() const { return pTop; } - int right() const { return pRight; } - int bottom() const { return pBottom; } - - bool is_empty() const; - bool is_infinite() const; - - void set_empty(); - void set(int x, int y, int w, int h); - void set_ltrb(int l, int t, int r, int b); - virtual void set(const Fl_Rect_Region &r); - virtual int intersect_with(const Fl_Rect_Region &r); - - virtual void print(const char*) const; - -protected: - int pLeft, pTop, pRight, pBottom; - -private: - Fl_Rect_Region& operator = (const Fl_Rect_Region& other); -}; - - -/** - * The Fl_Complex_Region represents a clipping region of any shape. - * - * This class is organized in a tree-like structure. If the region is - * rectangular, is_simple() returns 1 and the rectangle can be used just - * as in Fl_Rect_Region. - * - * If a more complex representation is needed, the first list of - * subregions is organizen in horizontal strips. The root region rect - * will contain the outline of all subregions, and the subregions - * will either be simple rectangles, or they will contain a second - * level of subregions, subdividing the horizontal region into vertical - * columns. - * - * When reading, the tree can be easily walked using recursion. - */ -class Fl_Complex_Region : public Fl_Rect_Region -{ - class Iterator { - public: - Iterator(Fl_Complex_Region *r); - bool operator!= (const Iterator& other) const; - const Iterator& operator++ (); - Fl_Complex_Region *operator* () const; - Fl_Complex_Region *pRegion; - }; - - class Overlapping { - class OverlappingIterator { - public: - OverlappingIterator(Overlapping *ov); - bool operator!= (const OverlappingIterator& other) const; - const OverlappingIterator& operator++ (); - Overlapping *operator* () const; - Overlapping *pOv; - }; - public: - Overlapping(Fl_Complex_Region *rgn, const Fl_Rect_Region &rect); - OverlappingIterator begin(); - OverlappingIterator end(); - Fl_Rect_Region &clipped_rect(); - bool intersects(); - bool find_intersecting(); - bool find_next(); - Fl_Complex_Region *pRegion; - Fl_Rect_Region pOriginalRect; - Fl_Rect_Region pClippedRect; - }; - -public: - Fl_Complex_Region(); - Fl_Complex_Region(const Fl_Rect_Region&); - virtual ~Fl_Complex_Region() override; - - virtual void set(const Fl_Rect_Region &r) override; - void set(const Fl_Complex_Region &r); - Fl_Complex_Region *subregion() const { return pSubregion; } - Fl_Complex_Region *next() const { return pNext; } - Fl_Complex_Region *parent() const { return pParent; } - char is_simple() const { return pSubregion==0; } - char is_complex() const { return pSubregion!=0; } - - virtual int intersect_with(const Fl_Rect_Region &r) override; - int subtract(const Fl_Rect_Region &r); - - virtual void print(const char*) const override; - - Iterator begin(); - Iterator end(); - - Overlapping overlapping(const Fl_Rect_Region &r); - -protected: - void print_data(int indent) const; - int subtract_smaller_region(const Fl_Rect_Region &r); - Fl_Complex_Region *add_subregion(); - - Fl_Complex_Region *pSubregion = 0L; - Fl_Complex_Region *pParent = 0L; - Fl_Complex_Region *pNext = 0L; -}; - - -/** \brief The Windows-specific graphics driver class. This class is implemented only on the Windows platform. |
