filters

ai88handler.cc

00001 /* This file is part of the KDE project
00002    Copyright (C) 2002, Dirk Schönberger <dirk.schoenberger@sz-online.de>
00003 
00004    This library is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Library General Public
00006    License as published by the Free Software Foundation; either
00007    version 2 of the License, or (at your option) any later version.
00008 
00009    This library is distributed in the hope that it will be useful,
00010    but WITHOUT ANY WARRANTY; without even the implied warranty of
00011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012    Library General Public License for more details.
00013 
00014    You should have received a copy of the GNU Library General Public License
00015    along with this library; see the file COPYING.LIB.  If not, write to
00016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017  * Boston, MA 02110-1301, USA.
00018 */
00019 
00020 #include <kglobal.h>
00021 #include "ai88handler.h"
00022 
00023 AI88Handler::AI88Handler(AIParserBase *delegate){
00024   m_delegate = delegate;
00025 }
00026 AI88Handler::~AI88Handler(){
00027 }
00028 
00029 bool AI88Handler::handleAIOperation (AIOperation op) {
00030   PathElement pathElement;
00031   double fval;
00032   int ival;
00033 
00034   switch (op) {
00035     case AIO_SetFillColorCMYK :
00036       _handleSetFillColorCMYK();
00037       return true;
00038       break;
00039     case AIO_SetStrokeColorCMYK :
00040       _handleSetStrokeColorCMYK();
00041       return true;
00042       break;
00043     case AIO_SetFillColorGray :
00044       _handleSetFillColorGray();
00045       return true;
00046       break;
00047     case AIO_SetStrokeColorGray :
00048       _handleSetStrokeColorGray();
00049       return true;
00050       break;
00051     case AIO_SetFillColorCustom :
00052       _handleSetFillColorCustom();
00053       return true;
00054       break;
00055     case AIO_SetStrokeColorCustom :
00056       _handleSetStrokeColorCustom();
00057       return true;
00058       break;
00059     case AIO_SetFillPattern :
00060       _handleSetFillPattern();
00061       return true;
00062       break;
00063     case AIO_SetStrokePattern :
00064       _handleSetStrokePattern();
00065       return true;
00066       break;
00067     case AIO_SetFillOverprinting :
00068       if (m_delegate->m_miscGStateHandler) m_delegate->m_miscGStateHandler->gotFillOverprinting (m_delegate->getBoolValue());
00069       return true;
00070       break;
00071     case AIO_SetStrokeOverprinting :
00072       if (m_delegate->m_miscGStateHandler) m_delegate->m_miscGStateHandler->gotStrokeOverprinting (m_delegate->getBoolValue());
00073       return true;
00074       break;
00075     case AIO_LockElement :
00076       if (m_delegate->m_miscGStateHandler) m_delegate->m_miscGStateHandler->gotLockNextObject (m_delegate->getBoolValue());
00077       return true;
00078       break;
00079     case AIO_SetFlatness :
00080       fval = m_delegate->getDoubleValue();
00081       if (m_delegate->m_gstateHandler) m_delegate->m_gstateHandler->gotFlatness (fval);
00082       return true;
00083       break;
00084     case AIO_SetLineCap :
00085       ival = m_delegate->getIntValue();
00086       if (m_delegate->m_gstateHandler) m_delegate->m_gstateHandler->gotLineCaps (ival);
00087       return true;
00088       break;
00089     case AIO_SetLineJoin :
00090       ival = m_delegate->getIntValue();
00091       if (m_delegate->m_gstateHandler) m_delegate->m_gstateHandler->gotLineJoin (ival);
00092       return true;
00093       break;
00094     case AIO_SetLineWidth :
00095       fval = kMax(0.2, m_delegate->getDoubleValue()); // Use thinnest pen stroke possible for 0 (Rob)
00096       if (m_delegate->m_gstateHandler) m_delegate->m_gstateHandler->gotLineWidth (fval);
00097       return true;
00098       break;
00099     case AIO_SetMiterLimit :
00100       fval = m_delegate->getDoubleValue();
00101       if (m_delegate->m_gstateHandler) m_delegate->m_gstateHandler->gotMiterLimit (fval);
00102       return true;
00103       break;
00104     case AIO_SetDash :
00105       _handleSetDash();
00106       return true;
00107       break;
00108     case AIO_BeginGroupClip :
00109       if (m_delegate->m_structureHandler) m_delegate->m_structureHandler->gotBeginGroup (true);
00110       return true;
00111       break;
00112     case AIO_EndGroupClip :
00113       if (m_delegate->m_debug) qDebug ("got end group clip");
00114       if (m_delegate->m_structureHandler) m_delegate->m_structureHandler->gotEndGroup (true);
00115       if (m_delegate->m_debug) qDebug ("/got end group clip");
00116       return true;
00117 
00118       break;
00119     case AIO_MoveTo :
00120       pathElement.petype = PET_MoveTo;
00121       pathElement.pttype = PT_Corner;
00122       pathElement.pevalue.pointdata.y = m_delegate->getDoubleValue();
00123       pathElement.pevalue.pointdata.x = m_delegate->getDoubleValue();
00124       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotPathElement (pathElement);
00125       return true;
00126       break;
00127     case AIO_LineToCorner :
00128       pathElement.petype = PET_LineTo;
00129       pathElement.pttype = PT_Corner;
00130       pathElement.pevalue.pointdata.y = m_delegate->getDoubleValue();
00131       pathElement.pevalue.pointdata.x = m_delegate->getDoubleValue();
00132       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotPathElement (pathElement);
00133       return true;
00134       break;
00135     case AIO_LineToSmooth :
00136       pathElement.petype = PET_LineTo;
00137       pathElement.pttype = PT_Smooth;
00138       pathElement.pevalue.pointdata.y = m_delegate->getDoubleValue();
00139       pathElement.pevalue.pointdata.x = m_delegate->getDoubleValue();
00140       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotPathElement (pathElement);
00141       return true;
00142       break;
00143     case AIO_CurveToCorner :
00144       pathElement.petype = PET_CurveTo;
00145       pathElement.pttype = PT_Corner;
00146       pathElement.pevalue.bezierdata.y3 = m_delegate->getDoubleValue();
00147       pathElement.pevalue.bezierdata.x3 = m_delegate->getDoubleValue();
00148       pathElement.pevalue.bezierdata.y2 = m_delegate->getDoubleValue();
00149       pathElement.pevalue.bezierdata.x2 = m_delegate->getDoubleValue();
00150       pathElement.pevalue.bezierdata.y1 = m_delegate->getDoubleValue();
00151       pathElement.pevalue.bezierdata.x1 = m_delegate->getDoubleValue();
00152       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotPathElement (pathElement);
00153       return true;
00154       break;
00155     case AIO_CurveToSmooth :
00156       pathElement.petype = PET_CurveTo;
00157       pathElement.pttype = PT_Smooth;
00158       pathElement.pevalue.bezierdata.y3 = m_delegate->getDoubleValue();
00159       pathElement.pevalue.bezierdata.x3 = m_delegate->getDoubleValue();
00160       pathElement.pevalue.bezierdata.y2 = m_delegate->getDoubleValue();
00161       pathElement.pevalue.bezierdata.x2 = m_delegate->getDoubleValue();
00162       pathElement.pevalue.bezierdata.y1 = m_delegate->getDoubleValue();
00163       pathElement.pevalue.bezierdata.x1 = m_delegate->getDoubleValue();
00164       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotPathElement (pathElement);
00165       return true;
00166       break;
00167     case AIO_CurveToOmitC1Corner :
00168       pathElement.petype = PET_CurveTo;
00169       pathElement.pttype = PT_Corner;
00170       pathElement.pevalue.bezierdata.y3 = m_delegate->getDoubleValue();
00171       pathElement.pevalue.bezierdata.x3 = m_delegate->getDoubleValue();
00172       pathElement.pevalue.bezierdata.y2 = m_delegate->getDoubleValue();
00173       pathElement.pevalue.bezierdata.x2 = m_delegate->getDoubleValue();
00174       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotPathElement (pathElement);
00175       return true;
00176       break;
00177     case AIO_CurveToOmitC1Smooth :
00178       pathElement.petype = PET_CurveTo;
00179       pathElement.pttype = PT_Smooth;
00180       pathElement.pevalue.bezierdata.y3 = m_delegate->getDoubleValue();
00181       pathElement.pevalue.bezierdata.x3 = m_delegate->getDoubleValue();
00182       pathElement.pevalue.bezierdata.y2 = m_delegate->getDoubleValue();
00183       pathElement.pevalue.bezierdata.x2 = m_delegate->getDoubleValue();
00184       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotPathElement (pathElement);
00185       return true;
00186       break;
00187     case AIO_CurveToOmitC2Corner :
00188       pathElement.petype = PET_CurveTo;
00189       pathElement.pttype = PT_Corner;
00190       pathElement.pevalue.bezierdata.y3 = m_delegate->getDoubleValue();
00191       pathElement.pevalue.bezierdata.x3 = m_delegate->getDoubleValue();
00192       pathElement.pevalue.bezierdata.y1 = m_delegate->getDoubleValue();
00193       pathElement.pevalue.bezierdata.x1 = m_delegate->getDoubleValue();
00194       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotPathElement (pathElement);
00195       return true;
00196       break;
00197     case AIO_CurveToOmitC2Smooth :
00198       pathElement.petype = PET_CurveTo;
00199       pathElement.pttype = PT_Smooth;
00200       pathElement.pevalue.bezierdata.y3 = m_delegate->getDoubleValue();
00201       pathElement.pevalue.bezierdata.x3 = m_delegate->getDoubleValue();
00202       pathElement.pevalue.bezierdata.y1 = m_delegate->getDoubleValue();
00203       pathElement.pevalue.bezierdata.x1 = m_delegate->getDoubleValue();
00204       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotPathElement (pathElement);
00205       return true;
00206       break;
00207 
00208     case AIO_PathIgnoreReset :
00209       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotIgnorePath(false, true);
00210       return true;
00211       break;
00212     case AIO_PathIgnoreResetClose :
00213       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotIgnorePath(true, true);
00214       return true;
00215       break;
00216     case AIO_PathIgnoreNoReset :
00217       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotIgnorePath(false, false);
00218       return true;
00219       break;
00220     case AIO_PathIgnoreNoResetClose :
00221       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotIgnorePath(true, false);
00222       return true;
00223       break;
00224     case AIO_PathClipPath :
00225       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotClipPath(false);
00226       return true;
00227       break;
00228     case AIO_PathFillNonZero :
00229       if (m_delegate->m_pathHandler)
00230       {
00231         m_delegate->m_pathHandler->gotFillMode (FM_NonZero);
00232         m_delegate->m_pathHandler->gotFillPath(false, true);
00233       }
00234       return true;
00235       break;
00236     case AIO_PathFillNonZeroClose :
00237       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotFillPath(true, true);
00238       return true;
00239       break;
00240     case AIO_PathFillNoReset :
00241       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotFillPath(false, false);
00242       return true;
00243       break;
00244     case AIO_PathFillNoResetClose :
00245       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotFillPath(true, false);
00246       return true;
00247       break;
00248     case AIO_PathStroke :
00249       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotStrokePath(false);
00250       return true;
00251       break;
00252     case AIO_PathStrokeClose :
00253       if (m_delegate->m_pathHandler) m_delegate->m_pathHandler->gotStrokePath(true);
00254       return true;
00255       break;
00256     case AIO_PatternDefinition :
00257       _handlePatternDefinition();
00258       return true;
00259       break;
00260     case AIO_GsaveIncludeDocument :
00261       _handleGsaveIncludeDocument();
00262       return true;
00263       break;
00264     case AIO_Grestore :
00265       if (m_delegate->m_embeddedHandler) m_delegate->m_embeddedHandler->gotGrestore();
00266       return true;
00267       break;
00268     case AIO_FontEncoding :
00269       _handleFontEncoding();
00270       return true;
00271       break;
00272     case AIO_SetCurrentText :
00273       _handleSetCurrentText();
00274       return true;
00275       break;
00276     case AIO_TextBlockFillStroke :
00277       _handleTextBlock (TO_FillStroke);
00278       return true;
00279       break;
00280     case AIO_TextBlockFill :
00281       _handleTextBlock (TO_Fill);
00282       return true;
00283       break;
00284     case AIO_TextBlockAppend :
00285       _handleTextBlock (TO_Append);
00286       return true;
00287       break;
00288     case AIO_TextBlockIgnore :
00289       _handleTextBlock (TO_Ignore);
00290       return true;
00291       break;
00292     case AIO_TextBlockStroke :
00293       _handleTextBlock (TO_Stroke);
00294       return true;
00295       break;
00296     case AIO_TextOutput :
00297       _handleTextOutput ();
00298       return true;
00299       break;
00300     case AIO_TextBlockEnd :
00301       if (m_delegate->m_textHandler) m_delegate->m_textHandler->gotTextBlockEnd();
00302       return true;
00303       break;
00304     default :
00305       return false;
00306   }
00307   return false;
00308 }
00309 
00310 
00311 void AI88Handler::_handleSetFillColorCMYK()
00312 {
00313   double k = m_delegate->getDoubleValue();
00314   double y = m_delegate->getDoubleValue();
00315   double m = m_delegate->getDoubleValue();
00316   double c = m_delegate->getDoubleValue();
00317 
00318   if (m_delegate->m_debug) qDebug ("values 1 are %f %f %f %f",c,m,y,k);
00319   AIColor color (c,m,y,k);
00320 
00321   if (m_delegate->m_gstateHandler) m_delegate->m_gstateHandler->gotFillColor (color);
00322 }
00323 
00324 void AI88Handler::_handleSetFillPattern()
00325 {
00326   AIElement elem (m_delegate->m_stack.top());
00327   m_delegate->m_stack.pop();
00328 
00329   const QValueVector<AIElement> aval = elem.toElementArray();
00330 
00331   double ka = m_delegate->getDoubleValue();
00332   double k = m_delegate->getDoubleValue();
00333   double r = m_delegate->getDoubleValue();
00334   double rf = m_delegate->getDoubleValue();
00335   double angle = m_delegate->getDoubleValue();
00336   double sy = m_delegate->getDoubleValue();
00337   double sx = m_delegate->getDoubleValue();
00338   double py = m_delegate->getDoubleValue();
00339   double px = m_delegate->getDoubleValue();
00340 
00341   AIElement elem2 (m_delegate->m_stack.top());
00342   m_delegate->m_stack.pop();
00343 
00344   const QString &name = elem2.toString();
00345   if (m_delegate->m_gstateHandler) m_delegate->m_gstateHandler->gotFillPattern (name.latin1(), px, py, sx, sy, angle, rf, r, k, ka, aval);
00346 }
00347 
00348 void AI88Handler::_handleSetStrokePattern()
00349 {
00350   AIElement elem (m_delegate->m_stack.top());
00351   m_delegate->m_stack.pop();
00352 
00353   const QValueVector<AIElement> aval = elem.toElementArray();
00354 
00355   double ka = m_delegate->getDoubleValue();
00356   double k = m_delegate->getDoubleValue();
00357   double r = m_delegate->getDoubleValue();
00358   double rf = m_delegate->getDoubleValue();
00359   double angle = m_delegate->getDoubleValue();
00360   double sy = m_delegate->getDoubleValue();
00361   double sx = m_delegate->getDoubleValue();
00362   double py = m_delegate->getDoubleValue();
00363   double px = m_delegate->getDoubleValue();
00364 
00365   AIElement elem2 (m_delegate->m_stack.top());
00366   m_delegate->m_stack.pop();
00367 
00368   const QString &name = elem2.toString();
00369   if (m_delegate->m_gstateHandler) m_delegate->m_gstateHandler->gotStrokePattern (name.latin1(), px, py, sx, sy, angle, rf, r, k, ka, aval);
00370 }
00371 
00372 
00373 void AI88Handler::_handleSetStrokeColorCMYK()
00374 {
00375   double k = m_delegate->getDoubleValue();
00376   double y = m_delegate->getDoubleValue();
00377   double m = m_delegate->getDoubleValue();
00378   double c = m_delegate->getDoubleValue();
00379   if (m_delegate->m_debug) qDebug ("values 2 are %f %f %f %f",c,m,y,k);
00380 
00381   AIColor color (c,m,y,k);
00382 
00383   if (m_delegate->m_gstateHandler) m_delegate->m_gstateHandler->gotStrokeColor (color);
00384 }
00385 
00386 void AI88Handler::_handleSetFillColorGray()
00387 {
00388   double g = m_delegate->getDoubleValue();
00389   if (m_delegate->m_debug) qDebug ("values 3 are %f",g);
00390 
00391   AIColor color (g);
00392 
00393   if (m_delegate->m_gstateHandler) m_delegate->m_gstateHandler->gotFillColor (color);
00394 }
00395 
00396 void AI88Handler::_handleSetStrokeColorGray()
00397 {
00398   double g = m_delegate->getDoubleValue();
00399   if (m_delegate->m_debug) qDebug ("values 4 are %f",g);
00400 
00401   AIColor color (g);
00402 
00403   if (m_delegate->m_gstateHandler) m_delegate->m_gstateHandler->gotStrokeColor (color);
00404 }
00405 
00406 void AI88Handler::_handleSetFillColorCustom()
00407 {
00408   double g = m_delegate->getDoubleValue();
00409   const QString name = m_delegate->getStringValue();
00410   double k = m_delegate->getDoubleValue();
00411   double y = m_delegate->getDoubleValue();
00412   double m = m_delegate->getDoubleValue();
00413   double c = m_delegate->getDoubleValue();
00414   if (m_delegate->m_debug) qDebug ("values 5 are %f %f %f %f",c,m,y,k);
00415 
00416   AIColor color (c,m,y,k,name.latin1(),g);
00417 
00418   if (m_delegate->m_gstateHandler) m_delegate->m_gstateHandler->gotFillColor (color);
00419 }
00420 
00421 void AI88Handler::_handleSetDash()
00422 {
00423 //  qDebug ("found dash operation");
00424   double fval = m_delegate->getDoubleValue();
00425 
00426   AIElement elem (m_delegate->m_stack.top());
00427   m_delegate->m_stack.pop();
00428 
00429   const QValueVector<AIElement> aval = elem.toElementArray();
00430   if (m_delegate->m_gstateHandler) m_delegate->m_gstateHandler->gotDash (aval, fval);
00431 //  qDebug ("dash operation finished");
00432 }
00433 
00434 void AI88Handler::_handlePatternDefinition()
00435 {
00436   AIElement elem (m_delegate->m_stack.top());
00437   m_delegate->m_stack.pop();
00438 
00439   const QValueVector<AIElement> aval = elem.toElementArray();
00440 
00441   double ury = m_delegate->getDoubleValue();
00442   double urx = m_delegate->getDoubleValue();
00443   double lly = m_delegate->getDoubleValue();
00444   double llx = m_delegate->getDoubleValue();
00445 
00446   AIElement elem2 (m_delegate->m_stack.top());
00447   m_delegate->m_stack.pop();
00448 
00449   const QString &name = elem2.toString();
00450 
00451   if (m_delegate->m_documentHandler) m_delegate->m_documentHandler->gotPatternDefinition (name.latin1(), aval, llx, lly, urx, ury);
00452 }
00453 
00454 void AI88Handler::_handleGsaveIncludeDocument() {
00455   AIElement elem2 (m_delegate->m_stack.top());
00456   m_delegate->m_stack.pop();
00457 
00458   const QString &name = elem2.toString();
00459 
00460   int ury = m_delegate->getIntValue();
00461   int urx = m_delegate->getIntValue();
00462   int lly = m_delegate->getIntValue();
00463   int llx = m_delegate->getIntValue();
00464 
00465   AIElement elem (m_delegate->m_stack.top());
00466   m_delegate->m_stack.pop();
00467 
00468   const QValueVector<AIElement> aval = elem.toElementArray();
00469 
00470   if (m_delegate->m_embeddedHandler) m_delegate->m_embeddedHandler->gotGsaveIncludeDocument (aval, llx,lly,urx,ury,name.latin1());
00471 }
00472 
00473 void AI88Handler::_handleSetCurrentText() {
00474   int iAlign = m_delegate->getIntValue();
00475   TextAlign ta = TA_HLeft;
00476 
00477   switch (iAlign)
00478   {
00479     case 0 : ta = TA_HLeft; break;
00480     case 1 : ta = TA_HCenter; break;
00481     case 2 : ta = TA_HRight; break;
00482     case 3:  ta = TA_VTop; break;
00483     case 4 : ta = TA_VCenter; break;
00484     case 5 : ta = TA_VBottom; break;
00485   }
00486 
00487   double kerning = m_delegate->getDoubleValue();
00488   double leading = m_delegate->getDoubleValue();
00489   double size = m_delegate->getDoubleValue();
00490 
00491   AIElement elem2 (m_delegate->m_stack.top());
00492   m_delegate->m_stack.pop();
00493 
00494   const QString &fontname = elem2.toReference();
00495 
00496   if (m_delegate->m_textHandler) m_delegate->m_textHandler->gotFontDefinition (fontname.latin1(), size, leading, kerning, ta);
00497 
00498 }
00499 
00500 void AI88Handler::_handleTextBlock (TextOperation to) {
00501   AIElement elem (m_delegate->m_stack.top());
00502   qDebug ("to element is (%s)",elem.typeName());
00503   m_delegate->m_stack.pop();
00504 
00505   const QValueVector<AIElement> aval = elem.toElementArray();
00506 
00507   if (m_delegate->m_textHandler) m_delegate->m_textHandler->gotTextBlockBegin (aval, to);
00508 }
00509 
00510 void AI88Handler::_handleTextOutput () {
00511   AIElement elem (m_delegate->m_stack.top());
00512   m_delegate->m_stack.pop();
00513 
00514   const QString &text = elem.toString();
00515 
00516   int length = -1;
00517 
00518   if (m_delegate->m_stack.empty())
00519   {
00520     AIElement elem2 (m_delegate->m_stack.top());
00521     if (elem2.type() == AIElement::Int)
00522     {
00523       length = elem2.asInt();
00524       m_delegate->m_stack.pop();
00525     }
00526   }
00527   if (m_delegate->m_textHandler) m_delegate->m_textHandler->gotTextOutput (text.latin1(), length);
00528 }
00529 
00530 void AI88Handler::_handleFontEncoding()
00531 {
00532   while (m_delegate->m_stack.top().type() != AIElement::Reference) {
00533     m_delegate->m_stack.pop();
00534   }
00535 
00536   AIElement elem (m_delegate->m_stack.top());
00537   m_delegate->m_stack.pop();
00538   const QString &oldFont = elem.toReference();
00539 
00540   AIElement elem2 (m_delegate->m_stack.top());
00541   m_delegate->m_stack.pop();
00542   const QString &newFont = elem2.toReference();
00543 
00544   AIElement elem3 (m_delegate->m_stack.top());
00545   m_delegate->m_stack.pop();
00546   const QValueVector<AIElement> encodingData = elem3.toElementArray();
00547 
00548   if (m_delegate->m_textHandler) m_delegate->m_textHandler->gotFontEncoding (encodingData, oldFont.latin1(), newFont.latin1());
00549 }
00550 
00551 void AI88Handler::_handleSetStrokeColorCustom()
00552 {
00553   double g = m_delegate->getDoubleValue();
00554   const QString name = m_delegate->getStringValue();
00555   double k = m_delegate->getDoubleValue();
00556   double y = m_delegate->getDoubleValue();
00557   double m = m_delegate->getDoubleValue();
00558   double c = m_delegate->getDoubleValue();
00559   if (m_delegate->m_debug) qDebug ("values 6 are %f %f %f %f",c,m,y,k);
00560 
00561   AIColor color (c,m,y,k,name.latin1(),g);
00562 
00563   if (m_delegate->m_gstateHandler) m_delegate->m_gstateHandler->gotStrokeColor (color);
00564 }
KDE Home | KDE Accessibility Home | Description of Access Keys