]>
git.saurik.com Git - wxWidgets.git/blob - src/html/m_pre.cpp
   1 ///////////////////////////////////////////////////////////////////////////// 
   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 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) 
  11 #pragma implementation 
  14 #include "wx/wxprec.h" 
  17 #if wxUSE_HTML && wxUSE_STREAMS 
  25 #include "wx/html/forcelnk.h" 
  26 #include "wx/html/m_templ.h" 
  28 #include "wx/html/htmlcell.h" 
  29 #include "wx/tokenzr.h" 
  30 #include "wx/encconv.h" 
  34 // replaces '\t', ' ' and '\n' with HTML markup: 
  35 static wxString LINKAGEMODE 
HtmlizeWhitespaces(const wxString
& str
) 
  38     size_t len 
= str
.Len(); 
  40     for (size_t i 
= 0; i 
< len
; i
++) 
  45                 while (i 
< len 
&& str
[i
] != wxT('>')) 
  63                     for (size_t j 
= 8 - linepos 
% 8; j 
> 0; j
--) 
  65                     linepos 
+= 8 - linepos 
% 8; 
  78 //----------------------------------------------------------------------------- 
  80 //----------------------------------------------------------------------------- 
  83 TAG_HANDLER_BEGIN(PRE
, "PRE") 
  84     TAG_HANDLER_CONSTR(PRE
) { } 
  88         wxHtmlContainerCell 
*c
; 
  90         int fixed 
= m_WParser
->GetFontFixed(), 
  91             italic 
= m_WParser
->GetFontItalic(), 
  92             underlined 
= m_WParser
->GetFontUnderlined(), 
  93             bold 
= m_WParser
->GetFontBold(), 
  94             fsize 
= m_WParser
->GetFontSize(); 
  96         c 
= m_WParser
->GetContainer(); 
  97         m_WParser
->SetFontUnderlined(false); 
  98         m_WParser
->SetFontBold(false); 
  99         m_WParser
->SetFontItalic(false); 
 100         m_WParser
->SetFontFixed(true); 
 101         m_WParser
->SetFontSize(3); 
 102         c
->InsertCell(new wxHtmlFontCell(m_WParser
->CreateCurrentFont())); 
 104         m_WParser
->CloseContainer(); 
 105         c 
= m_WParser
->OpenContainer(); 
 106         c
->SetWidthFloat(tag
); 
 107         c 
= m_WParser
->OpenContainer(); 
 108         c
->SetAlignHor(wxHTML_ALIGN_LEFT
); 
 109         c
->SetIndent(m_WParser
->GetCharHeight(), wxHTML_INDENT_TOP
); 
 112             m_WParser
->GetSource()->Mid(tag
.GetBeginPos(), 
 113                                         tag
.GetEndPos1() - tag
.GetBeginPos()); 
 114         // It is safe to temporarily change the source being parsed, 
 115         // provided we restore the state back after parsing 
 116         m_Parser
->SetSourceAndSaveState(HtmlizeWhitespaces(srcMid
)); 
 117         m_Parser
->DoParsing(); 
 118         m_Parser
->RestoreState(); 
 120         m_WParser
->CloseContainer(); 
 121         m_WParser
->CloseContainer(); 
 122         c 
= m_WParser
->OpenContainer(); 
 124         m_WParser
->SetFontUnderlined(underlined
); 
 125         m_WParser
->SetFontBold(bold
); 
 126         m_WParser
->SetFontItalic(italic
); 
 127         m_WParser
->SetFontFixed(fixed
); 
 128         m_WParser
->SetFontSize(fsize
); 
 129         c
->InsertCell(new wxHtmlFontCell(m_WParser
->CreateCurrentFont())); 
 140 TAGS_MODULE_BEGIN(Pre
)