22#include <tqtextcodec.h>
28#include <KWEFBaseWorker.h>
30#include "ExportFilter.h"
31#include "ExportBasic.h"
33HtmlBasicWorker::HtmlBasicWorker(
const TQString &cssURL )
38TQString HtmlBasicWorker::textFormatToCss(
const TextFormatting& formatData)
const
43 TQString fontName = formatData.fontName;
44 if ( !fontName.isEmpty() )
46 strElement+=
"font-family: ";
47 strElement+=escapeHtmlText(fontName);
51 const int size=formatData.fontSize;
55 strElement+=
"font-size: ";
56 strElement+=TQString::number(size,10);
60 if ( formatData.fgColor.isValid() )
63 strElement+=
"color: ";
64 strElement+=formatData.fgColor.name();
70TQString HtmlBasicWorker::getStartOfListOpeningTag(
const CounterData::Style typeList,
bool& ordered)
75 case CounterData::STYLE_CUSTOMBULLET:
82 case CounterData::STYLE_NONE:
88 case CounterData::STYLE_CIRCLEBULLET:
91 strResult=
"<ul type=\"circle\">\n";
94 case CounterData::STYLE_SQUAREBULLET:
97 strResult=
"<ul type=\"square\">\n";
100 case CounterData::STYLE_DISCBULLET:
103 strResult=
"<ul type=\"disc\">\n";
106 case CounterData::STYLE_NUM:
109 strResult=
"<ol type=\"1\">\n";
112 case CounterData::STYLE_ALPHAB_L:
115 strResult=
"<ol type=\"a\">\n";
118 case CounterData::STYLE_ALPHAB_U:
121 strResult=
"<ol type=\"A\">\n";
124 case CounterData::STYLE_ROM_NUM_L:
127 strResult=
"<ol type=\"i\">\n";
130 case CounterData::STYLE_ROM_NUM_U:
133 strResult=
"<ol type=\"I\">\n";
136 case CounterData::STYLE_CUSTOM:
147void HtmlBasicWorker::writeDocType(
void)
150 *m_streamOut <<
"<!DOCTYPE ";
153 *m_streamOut <<
"html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"";
154 *m_streamOut <<
" \"DTD/xhtml1-transitional.dtd\">\n";
159 *m_streamOut <<
"HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"";
160 *m_streamOut <<
" \"http://www.w3.org/TR/html4/loose.dtd\">\n";
164void HtmlBasicWorker::openFormatData(
const FormatData& formatOrigin,
165 const FormatData& format,
const bool force,
const bool allowBold)
167 bool useCSS = !m_cssURL.isEmpty();
170 if( !useCSS && ( force || formatOrigin.text.fontName != format.text.fontName ) && !format.text.fontName.isEmpty() )
173 attr += escapeHtmlText(format.text.fontName);
177 if( !useCSS && ( force || formatOrigin.text.fontSize != format.text.fontSize ) && format.text.fontSize > 0 )
180 int size=format.text.fontSize;
186 attr += TQString::number(size,10);
190 if( ( force || formatOrigin.text.fgColor != format.text.fgColor ) &&
191 format.text.fgColor.isValid() )
195 attr += format.text.fgColor.name();
199 if( !attr.isEmpty() )
201 *m_streamOut <<
"<font" << attr <<
">";
204 if (force || ((formatOrigin.text.weight>=75)!=(format.text.weight>=75)))
206 if (allowBold && (format.text.weight>=75))
208 *m_streamOut <<
"<b>";
212 if (force || (formatOrigin.text.italic!=format.text.italic))
214 if (format.text.italic)
216 *m_streamOut <<
"<i>";
220 if (force || (formatOrigin.text.underline!=format.text.underline))
222 if (format.text.underline)
224 *m_streamOut <<
"<u>";
228 if (force || (formatOrigin.text.strikeout!=format.text.strikeout))
230 if (format.text.strikeout)
232 *m_streamOut <<
"<s>";
236 if (force || (formatOrigin.text.verticalAlignment!=format.text.verticalAlignment))
238 if (1==format.text.verticalAlignment)
240 *m_streamOut <<
"<sub>";
242 else if (2==format.text.verticalAlignment)
244 *m_streamOut <<
"<sup>";
249void HtmlBasicWorker::closeFormatData(
const FormatData& formatOrigin,
250 const FormatData& format,
const bool force,
const bool allowBold)
252 if (force || (formatOrigin.text.verticalAlignment!=format.text.verticalAlignment))
254 if (2==format.text.verticalAlignment)
256 *m_streamOut <<
"</sup>";
258 else if (1==format.text.verticalAlignment)
260 *m_streamOut <<
"</sub>";
264 if (force || (formatOrigin.text.strikeout!=format.text.strikeout))
266 if (format.text.strikeout)
268 *m_streamOut <<
"</s>";
272 if (force || (formatOrigin.text.underline!=format.text.underline))
274 if (format.text.underline)
276 *m_streamOut <<
"</u>";
280 if (force || (formatOrigin.text.italic!=format.text.italic))
282 if (format.text.italic)
284 *m_streamOut <<
"</i>";
288 if (force || ((formatOrigin.text.weight>=75)!=(format.text.weight>=75)))
290 if (allowBold && (format.text.weight >= 75))
292 *m_streamOut <<
"</b>";
296 bool fontName = ( force || formatOrigin.text.fontName != format.text.fontName ) &&
297 !format.text.fontName.isEmpty();
298 bool fontSize = ( force || formatOrigin.text.fontSize != format.text.fontSize ) &&
299 format.text.fontSize>0;
300 bool fontColor = ( force ||formatOrigin.text.fgColor != format.text.fgColor ) &&
301 format.text.fgColor.isValid();
303 if( ( m_cssURL.isEmpty() && ( fontName || fontSize ) ) || fontColor )
305 *m_streamOut <<
"</font>";
310void HtmlBasicWorker::openParagraph(
const TQString& strTag,
311 const LayoutData& layout, TQChar::Direction direction)
313 *m_streamOut <<
'<' << strTag;
318 *m_streamOut <<
" align=\"" << layout.
alignment <<
"\"";
319 if ( (direction == TQChar::DirRLE) || (direction == TQChar::DirRLO) )
320 *m_streamOut <<
" dir=\"rtl\"";
328 kdWarning(30503) <<
"Unknown alignment: " << layout.
alignment << endl;
334 openFormatData(layout.formatData,layout.formatData,
true,(strTag[0]!=
'h'));
337void HtmlBasicWorker::closeParagraph(
const TQString& strTag,
341 closeFormatData(layout.formatData,layout.formatData,
true,(strTag[0]!=
'h'));
343 *m_streamOut <<
"</" << strTag <<
">\n";
346void HtmlBasicWorker::openSpan(
const FormatData& formatOrigin,
const FormatData& format)
348 openFormatData(formatOrigin,format,
false,
true);
351void HtmlBasicWorker::closeSpan(
const FormatData& formatOrigin,
const FormatData& format)
353 closeFormatData(formatOrigin,format,
false,
true);
356bool HtmlBasicWorker::doOpenBody(
void)
359 *m_streamOut <<
"<body bgcolor=\"#FFFFFF\">\n";
363TQString HtmlBasicWorker::customCSSURL(
void)
const
TQString alignment
left, right, center, justify
TextFormatting is a container for data retrieved from the <FORMAT> tag and its subtags to be used in ...