]>
git.saurik.com Git - wxWidgets.git/blob - src/html/m_pre.cpp
   1 ///////////////////////////////////////////////////////////////////////////// 
   2 // Name:        src/html/m_pre.cpp 
   3 // Purpose:     wxHtml module for <PRE> ... </PRE> tag (code citation) 
   4 // Author:      Vaclav Slavik 
   6 // Copyright:   (c) 1999 Vaclav Slavik 
   7 // Licence:     wxWindows licence 
   8 ///////////////////////////////////////////////////////////////////////////// 
  10 #include "wx/wxprec.h" 
  16 #if wxUSE_HTML && wxUSE_STREAMS 
  21 #include "wx/html/forcelnk.h" 
  22 #include "wx/html/m_templ.h" 
  24 #include "wx/html/htmlcell.h" 
  25 #include "wx/tokenzr.h" 
  26 #include "wx/encconv.h" 
  30 // replaces '\t', ' ' and '\n' with HTML markup: 
  31 static wxString LINKAGEMODE 
HtmlizeWhitespaces(const wxString
& str
) 
  34     size_t len 
= str
.Len(); 
  36     for (size_t i 
= 0; i 
< len
; i
++) 
  41                 while (i 
< len 
&& str
[i
] != wxT('>')) 
  59                     for (size_t j 
= 8 - linepos 
% 8; j 
> 0; j
--) 
  61                     linepos 
+= 8 - linepos 
% 8; 
  74 //----------------------------------------------------------------------------- 
  76 //----------------------------------------------------------------------------- 
  79 TAG_HANDLER_BEGIN(PRE
, "PRE") 
  80     TAG_HANDLER_CONSTR(PRE
) { } 
  84         wxHtmlContainerCell 
*c
; 
  86         int fixed 
= m_WParser
->GetFontFixed(), 
  87             italic 
= m_WParser
->GetFontItalic(), 
  88             underlined 
= m_WParser
->GetFontUnderlined(), 
  89             bold 
= m_WParser
->GetFontBold(), 
  90             fsize 
= m_WParser
->GetFontSize(); 
  92         c 
= m_WParser
->GetContainer(); 
  93         m_WParser
->SetFontUnderlined(false); 
  94         m_WParser
->SetFontBold(false); 
  95         m_WParser
->SetFontItalic(false); 
  96         m_WParser
->SetFontFixed(true); 
  97         m_WParser
->SetFontSize(3); 
  98         c
->InsertCell(new wxHtmlFontCell(m_WParser
->CreateCurrentFont())); 
 100         m_WParser
->CloseContainer(); 
 101         c 
= m_WParser
->OpenContainer(); 
 102         c
->SetWidthFloat(tag
); 
 103         c 
= m_WParser
->OpenContainer(); 
 104         c
->SetAlignHor(wxHTML_ALIGN_LEFT
); 
 105         c
->SetIndent(m_WParser
->GetCharHeight(), wxHTML_INDENT_TOP
); 
 107         wxString srcMid 
= m_WParser
->GetInnerSource(tag
); 
 108         ParseInnerSource(HtmlizeWhitespaces(srcMid
)); 
 110         m_WParser
->CloseContainer(); 
 111         m_WParser
->CloseContainer(); 
 112         c 
= m_WParser
->OpenContainer(); 
 114         m_WParser
->SetFontUnderlined(underlined
); 
 115         m_WParser
->SetFontBold(bold
); 
 116         m_WParser
->SetFontItalic(italic
); 
 117         m_WParser
->SetFontFixed(fixed
); 
 118         m_WParser
->SetFontSize(fsize
); 
 119         c
->InsertCell(new wxHtmlFontCell(m_WParser
->CreateCurrentFont())); 
 130 TAGS_MODULE_BEGIN(Pre
)