(Why the hell did I write wxHTML in so strange way -- it used recursion a la Lisp
instead of normal loop when it needed to iterate over cells...)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10905
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
wxHtmlCell::~wxHtmlCell()
{
if (m_Link) delete m_Link;
wxHtmlCell::~wxHtmlCell()
{
if (m_Link) delete m_Link;
- if (m_Next) delete m_Next;
m_PosY < *pagebreak && m_PosY + m_Height > *pagebreak)
{
*pagebreak = m_PosY;
m_PosY < *pagebreak && m_PosY + m_Height > *pagebreak)
{
*pagebreak = m_PosY;
- if (m_Next != NULL) m_Next->AdjustPagebreak(pagebreak);
- {
- if (m_Next != NULL) return m_Next->AdjustPagebreak(pagebreak);
- else return FALSE;
- }
void wxHtmlCell::Layout(int w)
{
SetPos(0, 0);
void wxHtmlCell::Layout(int w)
{
SetPos(0, 0);
- if (m_Next) m_Next->Layout(w);
-}
-
-
-void wxHtmlCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2)
-{
- if (m_Next) m_Next->Draw(dc, x, y, view_y1, view_y2);
-
-void wxHtmlCell::DrawInvisible(wxDC& dc, int x, int y)
-{
- if (m_Next) m_Next->DrawInvisible(dc, x, y);
-}
-
-
-
const wxHtmlCell* wxHtmlCell::Find(int condition, const void* param) const
{
const wxHtmlCell* wxHtmlCell::Find(int condition, const void* param) const
{
- if (m_Next) return m_Next->Find(condition, param);
- else return NULL;
void wxHtmlWordCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2)
{
dc.DrawText(m_Word, x + m_PosX, y + m_PosY);
void wxHtmlWordCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2)
{
dc.DrawText(m_Word, x + m_PosX, y + m_PosY);
- wxHtmlCell::Draw(dc, x, y, view_y1, view_y2);
wxHtmlContainerCell::~wxHtmlContainerCell()
{
wxHtmlContainerCell::~wxHtmlContainerCell()
{
- if (m_Cells) delete m_Cells;
+ if (m_Cells)
+ {
+ for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext())
+ delete cell;
+ }
- if (c->AdjustPagebreak(&pbrk)) rt = TRUE;
+ if (c->AdjustPagebreak(&pbrk))
+ rt = TRUE;
- if (rt) *pagebreak = pbrk + m_PosY;
+ if (rt)
+ *pagebreak = pbrk + m_PosY;
{
int l = (m_IndentLeft < 0) ? (-m_IndentLeft * m_Width / 100) : m_IndentLeft;
int r = (m_IndentRight < 0) ? (-m_IndentRight * m_Width / 100) : m_IndentRight;
{
int l = (m_IndentLeft < 0) ? (-m_IndentLeft * m_Width / 100) : m_IndentLeft;
int r = (m_IndentRight < 0) ? (-m_IndentRight * m_Width / 100) : m_IndentRight;
- m_Cells->Layout(m_Width - (l + r));
+ for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext())
+ cell->Layout(m_Width - (l + r));
dc.DrawLine(x + m_PosX, y + m_PosY + m_Height - 1, x + m_PosX + m_Width - 1, y + m_PosY + m_Height - 1);
}
dc.DrawLine(x + m_PosX, y + m_PosY + m_Height - 1, x + m_PosX + m_Width - 1, y + m_PosY + m_Height - 1);
}
- if (m_Cells) m_Cells->Draw(dc, x + m_PosX, y + m_PosY, view_y1, view_y2);
+ if (m_Cells)
+ {
+ for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext())
+ cell->Draw(dc, x + m_PosX, y + m_PosY, view_y1, view_y2);
+ }
}
// container invisible, just proceed font+color changing:
else
{
}
// container invisible, just proceed font+color changing:
else
{
- if (m_Cells) m_Cells->DrawInvisible(dc, x + m_PosX, y + m_PosY);
+ if (m_Cells)
+ {
+ for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext())
+ cell->DrawInvisible(dc, x + m_PosX, y + m_PosY);
+ }
-
- wxHtmlCell::Draw(dc, x, y, view_y1, view_y2);
}
void wxHtmlContainerCell::DrawInvisible(wxDC& dc, int x, int y)
{
}
void wxHtmlContainerCell::DrawInvisible(wxDC& dc, int x, int y)
{
- if (m_Cells) m_Cells->DrawInvisible(dc, x + m_PosX, y + m_PosY);
- wxHtmlCell::DrawInvisible(dc, x, y);
+ if (m_Cells)
+ {
+ for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext())
+ cell->DrawInvisible(dc, x + m_PosX, y + m_PosY);
+ }
const wxHtmlCell* wxHtmlContainerCell::Find(int condition, const void* param) const
{
const wxHtmlCell* wxHtmlContainerCell::Find(int condition, const void* param) const
{
- const wxHtmlCell *r = NULL;
-
- {
- r = m_Cells->Find(condition, param);
- if (r) return r;
- }
+ {
+ const wxHtmlCell *r = NULL;
- return wxHtmlCell::Find(condition, param);
+ for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext())
+ {
+ r = cell->Find(condition, param);
+ if (r) return r;
+ }
+ }
+ return NULL;
dc.SetBackground(wxBrush(m_Colour, wxSOLID));
dc.SetTextBackground(m_Colour);
}
dc.SetBackground(wxBrush(m_Colour, wxSOLID));
dc.SetTextBackground(m_Colour);
}
- wxHtmlCell::Draw(dc, x, y, view_y1, view_y2);
}
void wxHtmlColourCell::DrawInvisible(wxDC& dc, int x, int y)
}
void wxHtmlColourCell::DrawInvisible(wxDC& dc, int x, int y)
dc.SetBackground(wxBrush(m_Colour, wxSOLID));
dc.SetTextBackground(m_Colour);
}
dc.SetBackground(wxBrush(m_Colour, wxSOLID));
dc.SetTextBackground(m_Colour);
}
- wxHtmlCell::DrawInvisible(dc, x, y);
void wxHtmlFontCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2)
{
dc.SetFont(m_Font);
void wxHtmlFontCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2)
{
dc.SetFont(m_Font);
- wxHtmlCell::Draw(dc, x, y, view_y1, view_y2);
}
void wxHtmlFontCell::DrawInvisible(wxDC& dc, int x, int y)
{
dc.SetFont(m_Font);
}
void wxHtmlFontCell::DrawInvisible(wxDC& dc, int x, int y)
{
dc.SetFont(m_Font);
- wxHtmlCell::DrawInvisible(dc, x, y);
((wxScrolledWindow*)(m_Wnd->GetParent()))->GetViewStart(&stx, &sty);
m_Wnd->SetSize(absx - wxHTML_SCROLL_STEP * stx, absy - wxHTML_SCROLL_STEP * sty, m_Width, m_Height);
((wxScrolledWindow*)(m_Wnd->GetParent()))->GetViewStart(&stx, &sty);
m_Wnd->SetSize(absx - wxHTML_SCROLL_STEP * stx, absy - wxHTML_SCROLL_STEP * sty, m_Width, m_Height);
-
- wxHtmlCell::Draw(dc, x, y, view_y1, view_y2);
((wxScrolledWindow*)(m_Wnd->GetParent()))->GetViewStart(&stx, &sty);
m_Wnd->SetSize(absx - wxHTML_SCROLL_STEP * stx, absy - wxHTML_SCROLL_STEP * sty, m_Width, m_Height);
((wxScrolledWindow*)(m_Wnd->GetParent()))->GetViewStart(&stx, &sty);
m_Wnd->SetSize(absx - wxHTML_SCROLL_STEP * stx, absy - wxHTML_SCROLL_STEP * sty, m_Width, m_Height);
-
- wxHtmlCell::DrawInvisible(dc, x, y);
public:
wxHtmlLineCell(int size) : wxHtmlCell() {m_Height = size;}
void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
public:
wxHtmlLineCell(int size) : wxHtmlCell() {m_Height = size;}
void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
- void Layout(int w) {m_Width = w; if (m_Next) m_Next->Layout(w);}
+ void Layout(int w)
+ { m_Width = w; wxHtmlCell::Layout(w); }
dc.SetBrush(mybrush);
dc.SetPen(mypen);
dc.DrawRectangle(x + m_PosX, y + m_PosY, m_Width, m_Height);
dc.SetBrush(mybrush);
dc.SetPen(mypen);
dc.DrawRectangle(x + m_PosX, y + m_PosY, m_Width, m_Height);
- wxHtmlCell::Draw(dc, x, y, view_y1, view_y2);
(int) ((y + m_PosY) / m_Scale), TRUE);
dc.SetUserScale(us_x, us_y);
}
(int) ((y + m_PosY) / m_Scale), TRUE);
dc.SetUserScale(us_x, us_y);
}
- wxHtmlCell::Draw(dc, x, y, view_y1, view_y2);
}
wxHtmlLinkInfo *wxHtmlImageCell::GetLink( int x, int y ) const
}
wxHtmlLinkInfo *wxHtmlImageCell::GetLink( int x, int y ) const
{
dc.SetBrush(m_Brush);
dc.DrawEllipse(x + m_PosX + m_Width / 4, y + m_PosY + m_Height / 4, m_Width / 2, m_Width / 2);
{
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);