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
29FORCE_LINK_ME(m_hline)
30
31
32//-----------------------------------------------------------------------------
33// wxHtmlLineCell
34//-----------------------------------------------------------------------------
35
36class 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      DECLARE_NO_COPY_CLASS(wxHtmlLineCell)
50};
51
52
53void 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
72TAG_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
99TAG_HANDLER_END(HR)
100
101
102
103
104
105TAGS_MODULE_BEGIN(HLine)
106
107    TAGS_MODULE_ADD(HR)
108
109TAGS_MODULE_END(HLine)
110
111#endif
112