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