preparing wxHtmlWindow for text selection (highlighting works, mouse input and clipbo...
[wxWidgets.git] / src / html / m_hline.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: 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 #ifdef __GNUG__
11 #pragma implementation
12 #endif
13
14 #include "wx/wxprec.h"
15
16
17 #include "wx/defs.h"
18 #if wxUSE_HTML && wxUSE_STREAMS
19 #ifdef __BORLANDC__
20 #pragma hdrstop
21 #endif
22
23 #ifndef WXPRECOMP
24 #include "wx/brush.h"
25 #include "wx/pen.h"
26 #include "wx/dc.h"
27 #endif
28
29 #include "wx/html/forcelnk.h"
30 #include "wx/html/m_templ.h"
31
32 #include "wx/html/htmlcell.h"
33
34 FORCE_LINK_ME(m_hline)
35
36
37 //-----------------------------------------------------------------------------
38 // wxHtmlLineCell
39 //-----------------------------------------------------------------------------
40
41 class wxHtmlLineCell : public wxHtmlCell
42 {
43 public:
44 wxHtmlLineCell(int size, bool shading) : wxHtmlCell() {m_Height = size; m_HasShading = shading;}
45 void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2,
46 wxHtmlRenderingState& state);
47 void Layout(int w)
48 { m_Width = w; wxHtmlCell::Layout(w); }
49
50 private:
51 // Should we draw 3-D shading or not
52 bool m_HasShading;
53 };
54
55
56 void wxHtmlLineCell::Draw(wxDC& dc, int x, int y,
57 int WXUNUSED(view_y1), int WXUNUSED(view_y2),
58 wxHtmlRenderingState& WXUNUSED(state))
59 {
60 wxBrush mybrush(wxT("GREY"), (m_HasShading) ? wxTRANSPARENT : wxSOLID);
61 wxPen mypen(wxT("GREY"), 1, wxSOLID);
62 dc.SetBrush(mybrush);
63 dc.SetPen(mypen);
64 dc.DrawRectangle(x + m_PosX, y + m_PosY, m_Width, m_Height);
65 }
66
67
68
69
70 //-----------------------------------------------------------------------------
71 // The list handler:
72 //-----------------------------------------------------------------------------
73
74
75 TAG_HANDLER_BEGIN(HR, "HR")
76
77 TAG_HANDLER_PROC(tag)
78 {
79 wxHtmlContainerCell *c;
80 int sz;
81 bool HasShading;
82
83 m_WParser->CloseContainer();
84 c = m_WParser->OpenContainer();
85
86 c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_VERTICAL);
87 c->SetAlignHor(wxHTML_ALIGN_CENTER);
88 c->SetAlign(tag);
89 c->SetWidthFloat(tag);
90 sz = 1;
91 tag.GetParamAsInt(wxT("SIZE"), &sz);
92 HasShading = !(tag.HasParam(wxT("NOSHADE")));
93 c->InsertCell(new wxHtmlLineCell((int)((double)sz * m_WParser->GetPixelScale()), HasShading));
94
95 m_WParser->CloseContainer();
96 m_WParser->OpenContainer();
97
98 return FALSE;
99 }
100
101 TAG_HANDLER_END(HR)
102
103
104
105
106
107 TAGS_MODULE_BEGIN(HLine)
108
109 TAGS_MODULE_ADD(HR)
110
111 TAGS_MODULE_END(HLine)
112
113 #endif