]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/html/m_list.cpp
Updated depricated stuff
[wxWidgets.git] / src / html / m_list.cpp
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: m_list.cpp
3// Purpose: wxHtml module for lists
4// Author: Vaclav Slavik
5// RCS-ID: $Id$
6// Copyright: (c) 1999 Vaclav Slavik
7// Licence: wxWindows Licence
8/////////////////////////////////////////////////////////////////////////////
9#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
10#pragma implementation
11#endif
12
13#include "wx/wxprec.h"
14
15
16#include "wx/defs.h"
17#if wxUSE_HTML && wxUSE_STREAMS
18
19#ifdef __BORLANDC__
20#pragma hdrstop
21#endif
22
23#ifndef WXPRECOMP
24 #include "wx/brush.h"
25 #include "wx/dc.h"
26#endif
27
28#include "wx/html/forcelnk.h"
29#include "wx/html/m_templ.h"
30
31#include "wx/html/htmlcell.h"
32
33FORCE_LINK_ME(m_list)
34
35
36//-----------------------------------------------------------------------------
37// wxHtmlListmarkCell
38//-----------------------------------------------------------------------------
39
40class wxHtmlListmarkCell : public wxHtmlCell
41{
42 private:
43 wxBrush m_Brush;
44 public:
45 wxHtmlListmarkCell(wxDC *dc, const wxColour& clr);
46 void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2,
47 wxHtmlRenderingInfo& info);
48
49 DECLARE_NO_COPY_CLASS(wxHtmlListmarkCell)
50};
51
52wxHtmlListmarkCell::wxHtmlListmarkCell(wxDC* dc, const wxColour& clr) : wxHtmlCell(), m_Brush(clr, wxSOLID)
53{
54 m_Width = dc->GetCharHeight();
55 m_Height = dc->GetCharHeight();
56 m_Descent = 0;
57}
58
59
60
61void wxHtmlListmarkCell::Draw(wxDC& dc, int x, int y,
62 int WXUNUSED(view_y1), int WXUNUSED(view_y2),
63 wxHtmlRenderingInfo& WXUNUSED(info))
64{
65 dc.SetBrush(m_Brush);
66 dc.DrawEllipse(x + m_PosX + m_Width / 3, y + m_PosY + m_Height / 3,
67 (m_Width / 3), (m_Width / 3));
68}
69
70
71
72
73//-----------------------------------------------------------------------------
74// The list handler:
75//-----------------------------------------------------------------------------
76
77
78TAG_HANDLER_BEGIN(OLULLI, "OL,UL,LI")
79
80 TAG_HANDLER_VARS
81 int m_Numbering;
82 // this is number of actual item of list or 0 for dots
83
84 TAG_HANDLER_CONSTR(OLULLI)
85 {
86 m_Numbering = 0;
87 }
88
89 TAG_HANDLER_PROC(tag)
90 {
91 wxHtmlContainerCell *c;
92
93 // List Item:
94 if (tag.GetName() == wxT("LI"))
95 {
96 m_WParser->GetContainer()->SetIndent(0, wxHTML_INDENT_TOP);
97 // this is to prevent indetation in <li><p> case
98 m_WParser->CloseContainer();
99 m_WParser->CloseContainer();
100
101 c = m_WParser->OpenContainer();
102 c->SetWidthFloat(2 * m_WParser->GetCharWidth(), wxHTML_UNITS_PIXELS);
103 if (m_Numbering == 0)
104 {
105 // Centering gives more space after the bullet
106 c->SetAlignHor(wxHTML_ALIGN_CENTER);
107 c->InsertCell(new wxHtmlListmarkCell(m_WParser->GetDC(), m_WParser->GetActualColor()));
108 }
109 else
110 {
111 c->SetAlignHor(wxHTML_ALIGN_RIGHT);
112 wxString mark;
113 mark.Printf(wxT("%i."), m_Numbering);
114 c->InsertCell(new wxHtmlWordCell(mark, *(m_WParser->GetDC())));
115 }
116 m_WParser->CloseContainer();
117
118 c = m_WParser->OpenContainer();
119 c->SetIndent(m_WParser->GetCharWidth() / 4, wxHTML_INDENT_LEFT);
120 c->SetWidthFloat(-2 * m_WParser->GetCharWidth(), wxHTML_UNITS_PIXELS);
121
122 m_WParser->OpenContainer();
123
124 if (m_Numbering != 0) m_Numbering++;
125
126 return FALSE;
127 }
128
129 // Begin of List (not-numbered): "UL", "OL"
130 else
131 {
132 int oldnum = m_Numbering;
133
134 if (tag.GetName() == wxT("UL")) m_Numbering = 0;
135 else m_Numbering = 1;
136
137 c = m_WParser->GetContainer();
138 if (c->GetFirstChild() != NULL)
139 {
140 m_WParser->CloseContainer();
141 m_WParser->OpenContainer();
142 c = m_WParser->GetContainer();
143 }
144 c->SetAlignHor(wxHTML_ALIGN_LEFT);
145 c->SetIndent(2 * m_WParser->GetCharWidth(), wxHTML_INDENT_LEFT);
146 m_WParser->OpenContainer()->SetAlignVer(wxHTML_ALIGN_TOP);
147
148 m_WParser->OpenContainer();
149 m_WParser->OpenContainer();
150 ParseInner(tag);
151
152 m_WParser->GetContainer()->SetIndent(0, wxHTML_INDENT_TOP);
153 // this is to prevent indetation in <li><p> case
154 m_WParser->CloseContainer();
155
156 m_WParser->CloseContainer();
157 m_WParser->CloseContainer();
158 m_WParser->CloseContainer();
159 m_WParser->OpenContainer();
160
161 m_Numbering = oldnum;
162 return TRUE;
163 }
164 }
165
166TAG_HANDLER_END(OLULLI)
167
168
169TAGS_MODULE_BEGIN(List)
170
171 TAGS_MODULE_ADD(OLULLI)
172
173TAGS_MODULE_END(List)
174
175#endif