]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/grid.h
Rebake from clean wx tree.
[wxWidgets.git] / include / wx / generic / grid.h
index 92d216bb7f021e3ee26507eae52bf7602cc4d05e..f98911e90ef422d3679de5f4101deeae2c27fd81 100644 (file)
@@ -388,8 +388,7 @@ public:
     {
         Init(attrDefault);
 
-        // MB: args used to be 0,0 here but wxALIGN_LEFT is 0
-        SetAlignment(-1, -1);
+        SetAlignment(wxALIGN_INVALID, wxALIGN_INVALID);
     }
 
     // VZ: considering the number of members wxGridCellAttr has now, this ctor
@@ -436,7 +435,10 @@ public:
     bool HasTextColour() const { return m_colText.Ok(); }
     bool HasBackgroundColour() const { return m_colBack.Ok(); }
     bool HasFont() const { return m_font.Ok(); }
-    bool HasAlignment() const { return (m_hAlign != -1 || m_vAlign != -1); }
+    bool HasAlignment() const
+    {
+        return m_hAlign != wxALIGN_INVALID || m_vAlign != wxALIGN_INVALID;
+    }
     bool HasRenderer() const { return m_renderer != NULL; }
     bool HasEditor() const { return m_editor != NULL; }
     bool HasReadWriteMode() const { return m_isReadOnly != Unset; }
@@ -447,6 +449,15 @@ public:
     const wxColour& GetBackgroundColour() const;
     const wxFont& GetFont() const;
     void GetAlignment(int *hAlign, int *vAlign) const;
+
+    // unlike GetAlignment() which always overwrites its output arguments with
+    // the alignment values to use, falling back on default alignment if this
+    // attribute doesn't have any, this function will preserve the values of
+    // parameters on entry if the corresponding alignment is not set in this
+    // attribute meaning that they can be initialized to default alignment (and
+    // also that they must be initialized, unlike with GetAlignment())
+    void GetNonDefaultAlignment(int *hAlign, int *vAlign) const;
+
     void GetSize(int *num_rows, int *num_cols) const;
     bool GetOverflow() const
         { return m_overflow != SingleCell; }
@@ -549,39 +560,15 @@ public:
     // get renderers for the given row/column header label and the corner
     // window: unlike cell renderers, these objects are not reference counted
     // and are never NULL so they are returned by reference
-    virtual const wxGridColumnHeaderRenderer&
-        GetColumnHeaderRenderer(int WXUNUSED(col))
-    {
-        return m_defaultHeaderRenderers.colRenderer;
-    }
-
-    virtual const wxGridRowHeaderRenderer&
-        GetRowHeaderRenderer(int WXUNUSED(row))
-    {
-        return m_defaultHeaderRenderers.rowRenderer;
-    }
-
-    virtual const wxGridCornerHeaderRenderer& GetCornerRenderer()
-    {
-        return m_defaultHeaderRenderers.cornerRenderer;
-    }
+    virtual const wxGridColumnHeaderRenderer& GetColumnHeaderRenderer(int col);
+    virtual const wxGridRowHeaderRenderer& GetRowHeaderRenderer(int row);
+    virtual const wxGridCornerHeaderRenderer& GetCornerRenderer();
 
 private:
     void InitData();
 
     wxGridCellAttrProviderData *m_data;
 
-    // this struct simply combines together the default header renderers
-    //
-    // FIXME-VC6: this struct must be named because of VC6 bug, it fails
-    //            with error C2639 on this struct declaration without it
-    struct
-    {
-        wxGridColumnHeaderRendererDefault colRenderer;
-        wxGridRowHeaderRendererDefault rowRenderer;
-        wxGridCornerHeaderRendererDefault cornerRenderer;
-    } m_defaultHeaderRenderers;
-
     wxDECLARE_NO_COPY_CLASS(wxGridCellAttrProvider);
 };
 
@@ -1314,7 +1301,24 @@ public:
     void     GetCellAlignment( int row, int col, int *horiz, int *vert ) const;
     bool     GetDefaultCellOverflow() const;
     bool     GetCellOverflow( int row, int col ) const;
-    void     GetCellSize( int row, int col, int *num_rows, int *num_cols ) const;
+
+    // this function returns 1 in num_rows and num_cols for normal cells,
+    // positive numbers for a cell spanning multiple columns/rows (as set with
+    // SetCellSize()) and _negative_ numbers corresponding to the offset of the
+    // top left cell of the span from this one for the other cells covered by
+    // this cell
+    //
+    // the return value is CellSpan_None, CellSpan_Main or CellSpan_Inside for
+    // each of these cases respectively
+    enum CellSpan
+    {
+        CellSpan_Inside = -1,
+        CellSpan_None = 0,
+        CellSpan_Main
+    };
+
+    CellSpan GetCellSize( int row, int col, int *num_rows, int *num_cols ) const;
+
     wxSize GetCellSize(const wxGridCellCoords& coords)
     {
         wxSize s;
@@ -1699,9 +1703,9 @@ public:
     void SetLabelAlignment( int orientation, int align )
         {
             if ( orientation == wxHORIZONTAL )
-                SetColLabelAlignment( align, -1 );
+                SetColLabelAlignment( align, wxALIGN_INVALID );
             else
-                SetRowLabelAlignment( align, -1 );
+                SetRowLabelAlignment( align, wxALIGN_INVALID );
         }
 
     int GetLabelAlignment( int orientation, int WXUNUSED(align) ) const