/////////////////////////////////////////////////////////////////////////////
-// Name: mod_list.cpp
+// Name: m_list.cpp
// Purpose: wxHtml module for lists
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation
#endif
#include "wx/defs.h"
-#if wxUSE_HTML
+#if wxUSE_HTML && wxUSE_STREAMS
-#ifdef __BORDLANDC__
+#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
-#include <wx/wx.h>
+ #include "wx/brush.h"
+ #include "wx/dc.h"
#endif
-
#include "wx/html/forcelnk.h"
#include "wx/html/m_templ.h"
#include "wx/html/htmlcell.h"
-FORCE_LINK_ME(mod_list)
+FORCE_LINK_ME(m_list)
//-----------------------------------------------------------------------------
wxBrush m_Brush;
public:
wxHtmlListmarkCell(wxDC *dc, const wxColour& clr);
- void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
+ void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2,
+ wxHtmlRenderingInfo& info);
+
+ DECLARE_NO_COPY_CLASS(wxHtmlListmarkCell)
};
wxHtmlListmarkCell::wxHtmlListmarkCell(wxDC* dc, const wxColour& clr) : wxHtmlCell(), m_Brush(clr, wxSOLID)
{
- m_Width = dc -> GetCharWidth();
- m_Height = dc -> GetCharHeight();
+ m_Width = dc->GetCharHeight();
+ m_Height = dc->GetCharHeight();
m_Descent = 0;
}
-void wxHtmlListmarkCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2)
+void wxHtmlListmarkCell::Draw(wxDC& dc, int x, int y,
+ int WXUNUSED(view_y1), int WXUNUSED(view_y2),
+ wxHtmlRenderingInfo& WXUNUSED(info))
{
dc.SetBrush(m_Brush);
- dc.DrawEllipse(x + m_PosX + m_Width / 4, y + m_PosY + m_Height / 4, m_Width / 2, m_Width / 2);
- wxHtmlCell::Draw(dc, x, y, view_y1, view_y2);
+ dc.DrawEllipse(x + m_PosX + m_Width / 3, y + m_PosY + m_Height / 3,
+ (m_Width / 3), (m_Width / 3));
}
wxHtmlContainerCell *c;
// List Item:
- if (tag.GetName() == "LI") {
- if (!tag.IsEnding()) {
- m_WParser -> CloseContainer();
- m_WParser -> CloseContainer();
-
- c = m_WParser -> OpenContainer();
- c -> SetWidthFloat(2 * m_WParser -> GetCharWidth(), wxHTML_UNITS_PIXELS);
- c -> SetAlignHor(wxHTML_ALIGN_RIGHT);
- if (m_Numbering == 0)
- c -> InsertCell(new wxHtmlListmarkCell(m_WParser -> GetDC(), m_WParser -> GetActualColor()));
- else {
- wxString mark;
- mark.Printf(wxT("%i."), m_Numbering);
- c -> InsertCell(new wxHtmlWordCell(mark, *(m_WParser -> GetDC())));
- }
- m_WParser -> CloseContainer();
-
- c = m_WParser -> OpenContainer();
- c -> SetIndent(m_WParser -> GetCharWidth() / 4, wxHTML_INDENT_LEFT);
- c -> SetWidthFloat(-2 * m_WParser -> GetCharWidth(), wxHTML_UNITS_PIXELS);
-
- m_WParser -> OpenContainer();
-
- if (m_Numbering != 0) m_Numbering++;
+ if (tag.GetName() == wxT("LI"))
+ {
+ m_WParser->GetContainer()->SetIndent(0, wxHTML_INDENT_TOP);
+ // this is to prevent indetation in <li><p> case
+ m_WParser->CloseContainer();
+ m_WParser->CloseContainer();
+
+ c = m_WParser->OpenContainer();
+ c->SetWidthFloat(2 * m_WParser->GetCharWidth(), wxHTML_UNITS_PIXELS);
+ if (m_Numbering == 0)
+ {
+ // Centering gives more space after the bullet
+ c->SetAlignHor(wxHTML_ALIGN_CENTER);
+ c->InsertCell(new wxHtmlListmarkCell(m_WParser->GetDC(), m_WParser->GetActualColor()));
}
+ else
+ {
+ c->SetAlignHor(wxHTML_ALIGN_RIGHT);
+ wxString mark;
+ mark.Printf(wxT("%i."), m_Numbering);
+ c->InsertCell(new wxHtmlWordCell(mark, *(m_WParser->GetDC())));
+ }
+ m_WParser->CloseContainer();
+
+ c = m_WParser->OpenContainer();
+ c->SetIndent(m_WParser->GetCharWidth() / 4, wxHTML_INDENT_LEFT);
+ c->SetWidthFloat(-2 * m_WParser->GetCharWidth(), wxHTML_UNITS_PIXELS);
+
+ m_WParser->OpenContainer();
+
+ if (m_Numbering != 0) m_Numbering++;
+
return FALSE;
}
// Begin of List (not-numbered): "UL", "OL"
- else {
+ else
+ {
int oldnum = m_Numbering;
- if (tag.GetName() == "UL") m_Numbering = 0;
+ if (tag.GetName() == wxT("UL")) m_Numbering = 0;
else m_Numbering = 1;
- c = m_WParser -> GetContainer();
- if (c -> GetFirstCell() != NULL) {
- m_WParser -> CloseContainer();
- m_WParser -> OpenContainer();
- c = m_WParser -> GetContainer();
+ c = m_WParser->GetContainer();
+ if (c->GetFirstChild() != NULL)
+ {
+ m_WParser->CloseContainer();
+ m_WParser->OpenContainer();
+ c = m_WParser->GetContainer();
}
- c -> SetAlignHor(wxHTML_ALIGN_LEFT);
- c -> SetIndent(2 * m_WParser -> GetCharWidth(), wxHTML_INDENT_LEFT);
- m_WParser -> OpenContainer() -> SetAlignVer(wxHTML_ALIGN_TOP);
+ c->SetAlignHor(wxHTML_ALIGN_LEFT);
+ c->SetIndent(2 * m_WParser->GetCharWidth(), wxHTML_INDENT_LEFT);
+ m_WParser->OpenContainer()->SetAlignVer(wxHTML_ALIGN_TOP);
- m_WParser -> OpenContainer();
- m_WParser -> OpenContainer();
+ m_WParser->OpenContainer();
+ m_WParser->OpenContainer();
ParseInner(tag);
- m_WParser -> CloseContainer();
- m_WParser -> CloseContainer();
- m_WParser -> CloseContainer();
- m_WParser -> CloseContainer();
- m_WParser -> OpenContainer();
+ m_WParser->GetContainer()->SetIndent(0, wxHTML_INDENT_TOP);
+ // this is to prevent indetation in <li><p> case
+ m_WParser->CloseContainer();
+
+ m_WParser->CloseContainer();
+ m_WParser->CloseContainer();
+ m_WParser->CloseContainer();
+ m_WParser->OpenContainer();
m_Numbering = oldnum;
return TRUE;