Rapicorn - Experimental UI Toolkit - Source Code
13.07.0
|
00001 // Licensed GNU LGPL v3 or later: http://www.gnu.org/licenses/lgpl.html 00002 #ifndef __RAPICORN_TABLE_IMPL_HH__ 00003 #define __RAPICORN_TABLE_IMPL_HH__ 00004 00005 #include <ui/table.hh> 00006 #include <ui/container.hh> 00007 #include <string.h> 00008 00009 namespace Rapicorn { 00010 00011 class TableImpl : public virtual MultiContainerImpl, public virtual Table { 00012 struct RowCol { 00013 uint requisition; 00014 uint allocation; 00015 uint16 spacing; 00016 uint need_expand : 1; 00017 uint need_shrink : 1; 00018 uint expand : 1; 00019 uint shrink : 1; 00020 uint empty : 1; 00021 explicit RowCol() { memset (this, 0, sizeof (*this)); } 00022 static bool lesser_allocation (const TableImpl::RowCol *const &v1, 00023 const TableImpl::RowCol *const &v2); 00024 }; 00025 vector<RowCol> rows, cols; 00026 uint16 default_row_spacing; 00027 uint16 default_col_spacing; 00028 uint homogeneous_widgets : 1; 00029 void size_request_init (); 00030 void size_request_pass1 (); 00031 void size_request_pass2 (); 00032 void size_request_pass3 (); 00033 void size_allocate_init (); 00034 void size_allocate_pass1 (); 00035 void size_allocate_pass2 (); 00036 void resize_table (uint n_cols, uint n_rows); 00037 protected: 00038 virtual ~TableImpl (); 00039 virtual void size_request (Requisition &requisition); 00040 virtual void size_allocate (Allocation area, bool changed); 00041 virtual void repack_child (WidgetImpl &widget, 00042 const PackInfo &orig, 00043 const PackInfo &pnew); 00044 public: 00045 explicit TableImpl (); 00046 virtual void resize (uint n_cols, uint n_rows) { resize (n_cols, n_rows); } 00047 virtual uint get_n_rows () { return rows.size(); } 00048 virtual uint get_n_cols () { return cols.size(); } 00049 virtual bool is_row_used (uint row); 00050 virtual bool is_col_used (uint col); 00051 virtual void insert_rows (uint first_row, uint n_rows); 00052 virtual void insert_cols (uint first_col, uint n_cols); 00053 virtual bool homogeneous () const { return homogeneous_widgets; } 00054 virtual void homogeneous (bool chomogeneous_widgets) { homogeneous_widgets = chomogeneous_widgets; invalidate(); } 00055 virtual uint col_spacing () const { return default_col_spacing; } 00056 virtual void col_spacing (uint cspacing); 00057 virtual uint row_spacing () const { return default_row_spacing; } 00058 virtual void row_spacing (uint rspacing); 00059 }; 00060 00061 } // Rapicorn 00062 00063 #endif /* __RAPICORN_TABLE_IMPL_HH__ */