]> git.saurik.com Git - wxWidgets.git/blob - src/html/m_hline.cpp
Ensure there is valid context for DrawRectangle
[wxWidgets.git] / src / html / m_hline.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/html/m_hline.cpp
3 // Purpose: wxHtml module for horizontal line (HR tag)
4 // Author: Vaclav Slavik
5 // RCS-ID: $Id$
6 // Copyright: (c) 1999 Vaclav Slavik
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
9
10 #include "wx/wxprec.h"
11
12 #ifdef __BORLANDC__
13 #pragma hdrstop
14 #endif
15
16 #if wxUSE_HTML && wxUSE_STREAMS
17
18 #ifndef WX_PRECOMP
19 #include "wx/brush.h"
20 #include "wx/pen.h"
21 #include "wx/dc.h"
22 #endif
23
24 #include "wx/html/forcelnk.h"
25 #include "wx/html/m_templ.h"
26
27 #include "wx/html/htmlcell.h"
28
29 FORCE_LINK_ME(m_hline)
30
31
32 //-----------------------------------------------------------------------------
33 // wxHtmlLineCell
34 //-----------------------------------------------------------------------------
35
36 class wxHtmlLineCell : public wxHtmlCell
37 {
38 public:
39 wxHtmlLineCell(int size, bool shading) : wxHtmlCell() {m_Height = size; m_HasShading = shading;}
40 void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2,
41 wxHtmlRenderingInfo& info);
42 void Layout(int w)
43 { m_Width = w; wxHtmlCell::Layout(w); }
44
45 private:
46 // Should we draw 3-D shading or not
47 bool m_HasShading;
48
49 wxDECLARE_NO_COPY_CLASS(wxHtmlLineCell);
50 };
51
52
53 void wxHtmlLineCell::Draw(wxDC& dc, int x, int y,
54 int WXUNUSED(view_y1), int WXUNUSED(view_y2),
55 wxHtmlRenderingInfo& WXUNUSED(info))
56 {
57 wxBrush mybrush(wxT("GREY"), (m_HasShading) ? wxBRUSHSTYLE_TRANSPARENT : wxBRUSHSTYLE_SOLID);
58 wxPen mypen(wxT("GREY"), 1, wxPENSTYLE_SOLID);
59 dc.SetBrush(mybrush);
60 dc.SetPen(mypen);
61 dc.DrawRectangle(x + m_PosX, y + m_PosY, m_Width, m_Height);
62 }
63
64
65
66
67 //-----------------------------------------------------------------------------
68 // The list handler:
69 //-----------------------------------------------------------------------------
70
71
72 TAG_HANDLER_BEGIN(HR, "HR")
73 TAG_HANDLER_CONSTR(HR) { }
74
75 TAG_HANDLER_PROC(tag)
76 {
77 wxHtmlContainerCell *c;
78 int sz;
79 bool HasShading;
80
81 m_WParser->CloseContainer();
82 c = m_WParser->OpenContainer();
83
84 c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_VERTICAL);
85 c->SetAlignHor(wxHTML_ALIGN_CENTER);
86 c->SetAlign(tag);
87 c->SetWidthFloat(tag);
88 sz = 1;
89 tag.GetParamAsInt(wxT("SIZE"), &sz);
90 HasShading = !(tag.HasParam(wxT("NOSHADE")));
91 c->InsertCell(new wxHtmlLineCell((int)((double)sz * m_WParser->GetPixelScale()), HasShading));
92
93 m_WParser->CloseContainer();
94 m_WParser->OpenContainer();
95
96 return false;
97 }
98
99 TAG_HANDLER_END(HR)
100
101
102
103
104
105 TAGS_MODULE_BEGIN(HLine)
106
107 TAGS_MODULE_ADD(HR)
108
109 TAGS_MODULE_END(HLine)
110
111 #endif