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: m_hline.cpp 38788 2006-04-18 08:11:26Z ABX $
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 WXPRECOMP
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:
wxHtmlLineCell(int size,bool shading)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);
Layout(int w)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       DECLARE_NO_COPY_CLASS(wxHtmlLineCell)
50 };
51 
52 
Draw(wxDC & dc,int x,int y,int WXUNUSED (view_y1),int WXUNUSED (view_y2),wxHtmlRenderingInfo & WXUNUSED (info))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) ? wxTRANSPARENT : wxSOLID);
58     wxPen mypen(wxT("GREY"), 1, wxSOLID);
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")
TAG_HANDLER_CONSTR(HR)73     TAG_HANDLER_CONSTR(HR) { }
74 
TAG_HANDLER_PROC(tag)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
112