20#include "conversion.h"
22#include <wv2/word97_generated.h>
23#include <wv2/functordata.h>
24#include <wv2/fields.h>
31TQColor Conversion::color(
int number,
int defaultcolor,
bool defaultWhite)
59 return TQt::darkGreen;
61 return TQt::darkMagenta;
65 return TQt::darkYellow;
69 return TQt::lightGray;
72 kdDebug(30513) <<
"Conversion::color: unknown color: " << number << endl;
73 if(defaultcolor == -1)
74 return TQColor(
"black");
76 return color(defaultcolor, -1);
80int Conversion::fillPatternStyle(
int ipat )
86 return TQt::SolidPattern;
90 return TQt::Dense7Pattern;
96 return TQt::Dense6Pattern;
105 return TQt::Dense5Pattern;
112 return TQt::Dense4Pattern;
120 return TQt::Dense3Pattern;
128 return TQt::Dense2Pattern;
133 return TQt::Dense1Pattern;
136 return TQt::HorPattern;
139 return TQt::VerPattern;
142 return TQt::FDiagPattern;
145 return TQt::BDiagPattern;
148 return TQt::CrossPattern;
151 return TQt::DiagCrossPattern;
153 kdWarning(30513) <<
"Unhandled undocumented SHD ipat value: " << ipat << endl;
159int Conversion::ditheringToGray(
int ipat,
bool* ok )
164 return 255 - tqRound(0.05 * 255);
166 return 255 - tqRound(0.025 * 255);
168 return 255 - tqRound(0.075 * 255);
170 return 255 - tqRound(0.1 * 255);
172 return 255 - tqRound(0.125 * 255);
174 return 255 - tqRound(0.15 * 255);
176 return 255 - tqRound(0.175 * 255);
178 return 255 - tqRound(0.2 * 255);
180 return 255 - tqRound(0.225 * 255);
182 return 255 - tqRound(0.25 * 255);
184 return 255 - tqRound(0.275 * 255);
186 return 255 - tqRound(0.3 * 255);
188 return 255 - tqRound(0.325 * 255);
190 return 255 - tqRound(0.35 * 255);
192 return 255 - tqRound(0.375 * 255);
194 return 255 - tqRound(0.4 * 255);
196 return 255 - tqRound(0.425 * 255);
198 return 255 - tqRound(0.45 * 255);
200 return 255 - tqRound(0.475 * 255);
202 return 255 - tqRound(0.5 * 255);
204 return 255 - tqRound(0.525 * 255);
206 return 255 - tqRound(0.55 * 255);
208 return 255 - tqRound(0.575 * 255);
210 return 255 - tqRound(0.6 * 255);
212 return 255 - tqRound(0.625 * 255);
214 return 255 - tqRound(0.65 * 255);
216 return 255 - tqRound(0.675 * 255);
218 return 255 - tqRound(0.7 * 255);
220 return 255 - tqRound(0.725 * 255);
222 return 255 - tqRound(0.75 * 255);
224 return 255 - tqRound(0.775 * 255);
226 return 255 - tqRound(0.8 * 255);
228 return 255 - tqRound(0.825 * 255);
230 return 255 - tqRound(0.85 * 255);
232 return 255 - tqRound(0.875 * 255);
234 return 255 - tqRound(0.9 * 255);
236 return 255 - tqRound(0.925 * 255);
238 return 255 - tqRound(0.95 * 255);
240 return 255 - tqRound(0.975 * 255);
242 return 255 - tqRound(0.97 * 255);
249TQString Conversion::alignment(
int jc ) {
250 TQString value(
"left" );
260TQString Conversion::lineSpacing(
const wvWare::Word97::LSPD& lspd )
262 TQString value(
"0" );
263 if ( lspd.fMultLinespace == 1 )
266 float proportionalLineSpacing = (float)lspd.dyaLine / 240.0;
267 if ( TQABS(proportionalLineSpacing - 1.5) <= 0.25 )
268 value =
"oneandhalf";
269 else if ( proportionalLineSpacing > 1.75)
272 else if ( lspd.fMultLinespace == 0 )
284 kdWarning(30513) <<
"Unhandled LSPD::fMultLinespace value: " << lspd.fMultLinespace << endl;
288void Conversion::setColorAttributes( TQDomElement& element,
int ico,
const TQString& prefix,
bool defaultWhite )
290 TQColor color = Conversion::color( ico, -1, defaultWhite );
291 element.setAttribute( prefix.isNull() ?
"red" : prefix+
"Red", color.red() );
292 element.setAttribute( prefix.isNull() ?
"blue" : prefix+
"Blue", color.blue() );
293 element.setAttribute( prefix.isNull() ?
"green" : prefix+
"Green", color.green() );
296void Conversion::setBorderAttributes( TQDomElement& borderElement,
const wvWare::Word97::BRC& brc,
const TQString& prefix )
298 setColorAttributes( borderElement, brc.cv, prefix,
false );
300 borderElement.setAttribute( prefix.isNull() ?
"width" : prefix+
"Width",
301 (
double)brc.dptLineWidth / 8.0 );
303 TQString style =
"0";
304 switch ( brc.brcType ) {
306 Q_ASSERT( brc.dptLineWidth == 0 );
330 borderElement.setAttribute( prefix.isNull() ?
"style" : prefix+
"Style", style );
334int Conversion::numberFormatCode(
int nfc )
353 kdWarning(30513) << k_funcinfo <<
"Unknown NFC: " << nfc << endl;
357int Conversion::headerTypeToFrameInfo(
unsigned char type )
360 case wvWare::HeaderData::HeaderEven:
362 case wvWare::HeaderData::HeaderOdd:
364 case wvWare::HeaderData::FooterEven:
366 case wvWare::HeaderData::FooterOdd:
368 case wvWare::HeaderData::HeaderFirst:
370 case wvWare::HeaderData::FooterFirst:
376TQString Conversion::headerTypeToFramesetName(
unsigned char type )
379 case wvWare::HeaderData::HeaderEven:
380 return i18n(
"Even Pages Header");
381 case wvWare::HeaderData::HeaderOdd:
382 return i18n(
"Odd Pages Header");
383 case wvWare::HeaderData::FooterEven:
384 return i18n(
"Even Pages Footer");
385 case wvWare::HeaderData::FooterOdd:
386 return i18n(
"Odd Pages Footer");
387 case wvWare::HeaderData::HeaderFirst:
388 return i18n(
"First Page Header");
389 case wvWare::HeaderData::FooterFirst:
390 return i18n(
"First Page Footer");
395bool Conversion::isHeader(
unsigned char type )
398 case wvWare::HeaderData::HeaderEven:
399 case wvWare::HeaderData::HeaderOdd:
400 case wvWare::HeaderData::HeaderFirst:
406int Conversion::headerMaskToHType(
unsigned char mask )
408 bool hasFirst = ( mask & wvWare::HeaderData::HeaderFirst );
410 bool hasEvenOdd = ( mask & wvWare::HeaderData::HeaderEven );
413 return hasEvenOdd ? 1 : 2;
414 return hasEvenOdd ? 3 : 0;
417int Conversion::headerMaskToFType(
unsigned char mask )
419 bool hasFirst = ( mask & wvWare::HeaderData::FooterFirst );
420 bool hasEvenOdd = ( mask & wvWare::HeaderData::FooterEven );
422 kdDebug(30513) << k_funcinfo <<
" hasEvenOdd=" << hasEvenOdd << endl;
424 return hasEvenOdd ? 1 : 2;
425 return hasEvenOdd ? 3 : 0;
428int Conversion::fldToFieldType(
const wvWare::FLD* fld )
431 int m_fieldType = -1;
434 if( !fld )
return -1;
438 case 15: m_fieldType = 10;
break;
439 case 17: m_fieldType = 2;
break;
440 case 18: m_fieldType = -1;
break;
441 case 19: m_fieldType = 11;
break;
442 case 21: m_fieldType = -1;
break;
443 case 22: m_fieldType = -1;
break;
444 case 23: m_fieldType = -1;
break;
445 case 25: m_fieldType = -1;
break;
446 case 29: m_fieldType = 0;
break;
447 case 32: m_fieldType = -1;
break;
448 case 60: m_fieldType = 2;
break;
449 case 61: m_fieldType = 16;
break;
450 case 62: m_fieldType = -1;
break;
451 default: m_fieldType = -1;
break;
454 if( m_fieldType < 0 )
455 kdDebug(30513) <<
"unhandled field: fld.ftl: " << (int)fld->flt << endl;