]>
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(); 
  39     for (size_t i 
= 0; i 
< len
; i
++) 
  44                 while (i 
< len 
&& str
[i
] != wxT('>')) 
  56                     for (size_t j 
= 8 - i%8
; j 
> 0; j
--) 
  69 //----------------------------------------------------------------------------- 
  71 //----------------------------------------------------------------------------- 
  74 TAG_HANDLER_BEGIN(PRE
, "PRE") 
  75     TAG_HANDLER_CONSTR(PRE
) { } 
  79         wxHtmlContainerCell 
*c
; 
  81         int fixed 
= m_WParser
->GetFontFixed(), 
  82             italic 
= m_WParser
->GetFontItalic(), 
  83             underlined 
= m_WParser
->GetFontUnderlined(), 
  84             bold 
= m_WParser
->GetFontBold(), 
  85             fsize 
= m_WParser
->GetFontSize(); 
  87         c 
= m_WParser
->GetContainer(); 
  88         m_WParser
->SetFontUnderlined(FALSE
); 
  89         m_WParser
->SetFontBold(FALSE
); 
  90         m_WParser
->SetFontItalic(FALSE
); 
  91         m_WParser
->SetFontFixed(TRUE
); 
  92         m_WParser
->SetFontSize(3); 
  93         c
->InsertCell(new wxHtmlFontCell(m_WParser
->CreateCurrentFont())); 
  95         m_WParser
->CloseContainer(); 
  96         c 
= m_WParser
->OpenContainer(); 
  97         c
->SetWidthFloat(tag
); 
  98         c 
= m_WParser
->OpenContainer(); 
  99         c
->SetAlignHor(wxHTML_ALIGN_LEFT
); 
 100         c
->SetIndent(m_WParser
->GetCharHeight(), wxHTML_INDENT_TOP
); 
 103             m_WParser
->GetSource()->Mid(tag
.GetBeginPos(), 
 104                                         tag
.GetEndPos1() - tag
.GetBeginPos()); 
 105         // It is safe to temporarily change the source being parsed, 
 106         // provided we restore the state back after parsing 
 107         m_Parser
->SetSourceAndSaveState(HtmlizeWhitespaces(srcMid
)); 
 108         m_Parser
->DoParsing(); 
 109         m_Parser
->RestoreState(); 
 111         m_WParser
->CloseContainer(); 
 112         m_WParser
->CloseContainer(); 
 113         c 
= m_WParser
->OpenContainer(); 
 115         m_WParser
->SetFontUnderlined(underlined
); 
 116         m_WParser
->SetFontBold(bold
); 
 117         m_WParser
->SetFontItalic(italic
); 
 118         m_WParser
->SetFontFixed(fixed
); 
 119         m_WParser
->SetFontSize(fsize
); 
 120         c
->InsertCell(new wxHtmlFontCell(m_WParser
->CreateCurrentFont())); 
 131 TAGS_MODULE_BEGIN(Pre
)