<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="GENERATOR" content="cpp2html 1.2 by Lorenzo Bettini, bettini@gnu.org http://w3.newnet.it/bettini http://www.gnu.org/software/cpp2html/cpp2html.html"> <title>source file</title> <link rel="stylesheet" href="mono.css" type="text/css"> </head> <body> <pre> <tt> <span class="comment">/* * Copyright (C) 1999, 2000 Lorenzo Bettini, lorenzo.bettini@penteres.it * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */</span> <span class="comment">// decorators for html </span> <span class="keyword">#ifndef</span> _DECORATOR_H <span class="keyword">#define</span> _DECORATOR_H <span class="keyword">#include</span> <span class="string">"textgen.h"</span> <span class="keyword">#include</span> <span class="string">"tags.h"</span> <span class="keyword">#include</span> <span class="string">"colors.h"</span> <span class="keyword">class</span> TagDecorator : <span class="keyword">public</span> TextDecorator { <span class="keyword">protected</span> : <span class="type">char</span> *tag ; <span class="type">char</span> *attr ; <span class="type">char</span> *val ; <span class="keyword">public</span> : TagDecorator( TextGenerator *t, <span class="type">char</span> *ta, <span class="type">char</span> *a = NULL, <span class="type">char</span> *v = NULL ) : TextDecorator( t ), tag(ta), attr(a), val(v) {} <span class="keyword">virtual</span> <span class="type">void</span> startDecorate() <span class="keyword">const</span> { startTAG( tag, attr, val ) ; } <span class="keyword">virtual</span> <span class="type">void</span> endDecorate() <span class="keyword">const</span> { endTAG( tag ) ; } <span class="keyword">protected</span> : <span class="type">void</span> startTAG( <span class="type">char</span> *tag, <span class="type">char</span> *attr, <span class="type">char</span> *val ) <span class="keyword">const</span> { (*sout) << <span class="string">"<"</span> << tag ; <span class="keyword">if</span> ( attr && val ) (*sout) << <span class="string">" "</span> << attr << <span class="string">"="</span> << val ; (*sout) << <span class="string">">"</span> ; } <span class="type">void</span> endTAG( <span class="type">char</span> *tag ) <span class="keyword">const</span> { (*sout) << <span class="string">"</"</span> << tag << <span class="string">">"</span> ; } } ; <span class="keyword">class</span> ColorDecorator : <span class="keyword">public</span> TagDecorator { <span class="keyword">public</span> : ColorDecorator( TextGenerator *t, <span class="type">char</span> *color ) : TagDecorator( t, FONT_TAG, COLOR_TAG, color ) {} } ; <span class="keyword">class</span> SpanDecorator : <span class="keyword">public</span> TextDecorator { <span class="keyword">protected</span> : <span class="type">char</span> *span ; <span class="keyword">public</span> : SpanDecorator( TextGenerator *t, <span class="type">char</span> *ta) : TextDecorator( t ), span(ta) {} <span class="keyword">virtual</span> <span class="type">void</span> startDecorate() <span class="keyword">const</span> { startTAG( span ) ; } <span class="keyword">virtual</span> <span class="type">void</span> endDecorate() <span class="keyword">const</span> { endTAG( ) ; } <span class="keyword">protected</span> : <span class="type">void</span> startTAG( <span class="type">char</span> *span ) <span class="keyword">const</span> { (*sout) << <span class="string">"<span class=\""</span> << span << <span class="string">"\">"</span> ; } <span class="type">void</span> endTAG( ) <span class="keyword">const</span> { (*sout) << <span class="string">"</span>"</span> ; } } ; <span class="keyword">#endif</span> </tt> </pre> </body> </html>