+//-----------------------------------------------------------------------------
+// wxHtmlListCell
+//-----------------------------------------------------------------------------
+
+struct wxHtmlListItemStruct
+{
+ wxHtmlContainerCell *mark;
+ wxHtmlContainerCell *cont;
+ int minWidth;
+ int maxWidth;
+};
+
+class wxHtmlListCell : public wxHtmlContainerCell
+{
+ private:
+ wxBrush m_Brush;
+
+ int m_NumRows;
+ wxHtmlListItemStruct *m_RowInfo;
+ void ReallocRows(int rows);
+ void ComputeMinMaxWidths();
+ int m_ListmarkWidth;
+
+ public:
+ wxHtmlListCell(wxHtmlContainerCell *parent);
+ virtual ~wxHtmlListCell();
+ void AddRow(wxHtmlContainerCell *mark, wxHtmlContainerCell *cont);
+ virtual void Layout(int w);
+
+ DECLARE_NO_COPY_CLASS(wxHtmlListCell)
+};
+
+wxHtmlListCell::wxHtmlListCell(wxHtmlContainerCell *parent) : wxHtmlContainerCell(parent)
+{
+ m_NumRows = 0;
+ m_RowInfo = 0;
+ m_ListmarkWidth = 0;
+}
+
+wxHtmlListCell::~wxHtmlListCell()
+{
+ if (m_RowInfo) free(m_RowInfo);
+}
+
+void wxHtmlListCell::Layout(int w)
+{
+ wxHtmlCell::Layout(w);
+
+ ComputeMinMaxWidths();
+ m_Width = wxMax(m_Width, wxMin(w, GetMaxTotalWidth()));
+
+ int s_width = m_Width - m_IndentLeft;
+
+ int vpos = 0;
+ for (int r = 0; r < m_NumRows; r++)
+ {
+ m_RowInfo[r].mark->Layout(m_ListmarkWidth);
+ m_RowInfo[r].mark->SetPos(m_IndentLeft, vpos);
+ m_RowInfo[r].cont->Layout(s_width - m_ListmarkWidth);
+ m_RowInfo[r].cont->SetPos(m_IndentLeft + m_ListmarkWidth, vpos);
+ vpos += wxMax(m_RowInfo[r].cont->GetHeight(), m_RowInfo[r].mark->GetHeight());
+ }
+ m_Height = vpos;
+}
+
+void wxHtmlListCell::AddRow(wxHtmlContainerCell *mark, wxHtmlContainerCell *cont)
+{
+ ReallocRows(++m_NumRows);
+ m_RowInfo[m_NumRows - 1].mark = mark;
+ m_RowInfo[m_NumRows - 1].cont = cont;
+}
+
+void wxHtmlListCell::ReallocRows(int rows)
+{
+ m_RowInfo = (wxHtmlListItemStruct*) realloc(m_RowInfo, sizeof(wxHtmlListItemStruct) * rows);
+ m_RowInfo[rows - 1].mark = 0;
+ m_RowInfo[rows - 1].cont = 0;
+ m_RowInfo[rows - 1].minWidth = 0;
+ m_RowInfo[rows - 1].maxWidth = 0;