]>
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
)