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>";
224 *m_streamOut <<
"<u>";
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>";
268 *m_streamOut <<
"</s>";
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);
359 *m_streamOut <<
"<body bgcolor=\"#FFFFFF\">\n";
363TQString HtmlBasicWorker::customCSSURL(
void)
const
virtual bool doOpenBody(void)
Like HTML's <BODY>.
TQString alignment
left, right, center, justify
TextFormatting is a container for data retrieved from the <FORMAT> tag and its subtags to be used in ...
bool underline
Any underline? (If true, we do not know if simple or double or what else).
bool strikeout
true if strikeout