Rapicorn - Experimental UI Toolkit - Source Code  13.07.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines
tableimpl.hh
Go to the documentation of this file.
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__ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines