summaryrefslogtreecommitdiffstats
path: root/filters/karbon/applixgraphics/applixgraphicimport.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filters/karbon/applixgraphics/applixgraphicimport.cpp')
-rw-r--r--filters/karbon/applixgraphics/applixgraphicimport.cpp832
1 files changed, 832 insertions, 0 deletions
diff --git a/filters/karbon/applixgraphics/applixgraphicimport.cpp b/filters/karbon/applixgraphics/applixgraphicimport.cpp
new file mode 100644
index 000000000..fd81b108c
--- /dev/null
+++ b/filters/karbon/applixgraphics/applixgraphicimport.cpp
@@ -0,0 +1,832 @@
+/* This file is part of the KDE project
+ Copyright (C) 2001 Enno Bartels <ebartels@nwn.de>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+#define FAKTOR 39.4 // 1000 dots/inch / 2.54 cm/inch = 394 dots/cm = 39.4 dots/mm
+
+#include <config.h>
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <kdebug.h>
+#include <tqfile.h>
+#include <tqtextstream.h>
+#include <tqmessagebox.h>
+#include <KoFilterChain.h>
+#include <kgenericfactory.h>
+#include <math.h>
+
+#include <applixgraphicimport.h>
+
+typedef KGenericFactory<APPLIXGRAPHICImport, KoFilter> APPLIXGRAPHICImportFactory;
+K_EXPORT_COMPONENT_FACTORY( libapplixgraphicimport, APPLIXGRAPHICImportFactory( "kofficefilters" ) )
+
+int s_area = 30517;
+
+/******************************************************************************
+ * class: applixGraphicsLine function: constructor *
+ ******************************************************************************
+ * *
+ * Short description : - Initialize all variables *
+ * *
+ * *
+ ******************************************************************************/
+applixGraphicsLine::applixGraphicsLine()
+{
+ offX = 0;
+ offY = 0;
+ reColor = 0;
+ thickNess = 1; // ??
+
+ for (int i=0; i<5; i++)
+ {
+ ptX[0] = 0;
+ ptY[0] = 0;
+ }
+}
+
+
+
+
+
+/******************************************************************************
+ * class: applixGraphicsRect function: constructor *
+ ******************************************************************************
+ * *
+ * Short description : - Initialize all variables *
+ * *
+ * *
+ ******************************************************************************/
+applixGraphicsRect::applixGraphicsRect() : applixGraphicsLine()
+{
+ for (int i=0; i<7;i++)
+ {
+ bf[i] = 0;
+ lf[i] = 0;
+ }
+
+ for (int i=0; i<5;i++)
+ {
+ sh[i] = 0;
+ }
+
+ for (int i=0; i<8;i++)
+ {
+ pa[i] = 0;
+ }
+
+ for (int i=0; i<3;i++)
+ {
+ vs[i] = 0;
+ }
+
+ for (int i=0; i<2;i++)
+ {
+ xr[i] = 0;
+ }
+
+}
+
+
+
+
+
+/******************************************************************************
+ * class: APPLIXGRAPHICImport function: constructor *
+ ******************************************************************************
+ * *
+ * Short description : constructor *
+ * *
+ * *
+ ******************************************************************************/
+APPLIXGRAPHICImport::APPLIXGRAPHICImport (KoFilter *, const char *, const TQStringList&) :
+ KoFilter ()
+{
+
+}
+
+
+
+/******************************************************************************
+ * class: APPLIXGRAPHICImport function: filter *
+ ******************************************************************************
+ * *
+ * Short description : - Read inputfile, *
+ * - convert it to kontour fileformat and *
+ * - save it *
+ * *
+ * *
+ ******************************************************************************/
+KoFilter::ConversionStatus APPLIXGRAPHICImport::convert( const TQCString& from, const TQCString& to )
+{
+
+ // Check MIME Types
+ if (to!="application/x-karbon" || from!="application/x-applixgraphic")
+ return KoFilter::NotImplemented;
+
+ // Open Inputfile
+ TQFile in (m_chain->inputFile());
+ if (!in.open (IO_ReadOnly) )
+ {
+ kdError(30502) << "Unable to open input file!" << endl;
+ in.close ();
+ return KoFilter::FileNotFound;
+ }
+
+ TQString str;
+
+ // Create karbon header
+ str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ str += "<!DOCTYPE karbon>\n";
+ str += " <karbon mime=\"application/x-karbon\" version=\"2\" editor=\"APPLIXGRAPHICS import filter\">\n";
+// str += " <head>\n";
+// str += " <layout width=\"210\" lmargin=\"0\" format=\"a4\" bmargin=\"0\" height=\"297\" rmargin=\"0\" tmargin=\"0\" orientation=\"portrait\"/>\n";
+// str += " <grid dx=\"20\" dy=\"20\" align=\"0\">\n";
+// str += " <helplines align=\"0\"/>\n";
+// str += " </grid>\n";
+// str += " </head>\n";
+ str += " <layer name=\"ag-layer\" visible=\"1\">\n";
+
+ TQTextStream stream(&in);
+ int step = in.size()/50;
+ int value = 0;
+ int i = 0;
+ int picture_rememberer = 0;
+ int pos = 0;
+ int vers[3] = { 0, 0, 0 };
+ int rueck; // Check scanf inputs
+ TQString mystr;
+
+ // Read Headline
+ mystr = stream.readLine ();
+ rueck = sscanf ((const char *) mystr.latin1() ,
+ "*BEGIN GRAPHICS VERSION=%d/%d ENCODING=%dBIT",
+ &vers[0], &vers[1], &vers[2]);
+ kdDebug (s_area) << "Versions info: " << vers[0] << vers[1] << vers[2] << endl;
+
+ // Check the headline
+ if (rueck <= 0)
+ {
+ kdDebug (s_area) << "Header not correkt - May be it is not an applixgraphics file" << endl;
+ kdDebug (s_area) << "Headerline: " << mystr << endl;
+
+ TQMessageBox::critical (0L, "Applixgraphics header problem",
+ TQString ("The Applixgraphics header is not correct. "
+ "May be it is not an applixgraphics file! <BR>"
+ "This is the header line I did read:<BR><B>%1</B>").arg(mystr.latin1()),
+ "Comma");
+
+ // i18n( "What is the separator used in this file ? First line is \n%1" ).arg(firstLine),
+ return KoFilter::StupidError;
+ }
+
+ while (!stream.atEnd ())
+ {
+ ++i;
+
+ // Read one line
+ mystr = stream.readLine ();
+ kdDebug (s_area) << "<<" << mystr << ">>" << endl;
+
+ if (mystr == "PICTURE") picture_rememberer = 1;
+ else if (mystr == "END PICTURE") picture_rememberer = 0;
+
+
+ // Detect a point at the first place of the ascii_linie
+ else if ((mystr[0] == '.') && (picture_rememberer == 1))
+ {
+ // Delete point at the first place of the ascii_linie
+ mystr.remove (0, 1);
+ kdDebug (s_area) << "StartPoint recognized <" << mystr << ">" << endl;
+
+
+ /********************************************************************
+ * Element "LINE" *
+ ********************************************************************/
+ if (mystr.startsWith ("LINE AT") )
+ {
+ // Define
+ applixGraphicsLine agLine;
+
+ //str += agLine.read (int, mystr);
+
+ kdDebug (s_area) << " Linie recognized: " << endl;
+ mystr.remove (0, 8);
+ //mystr.remove (0, 7);
+
+
+ //remove_pos = mystr.find ('(');
+ //mystr.remove (0, remove_pos);
+ //agLine.offX= mystr.toInt();
+
+ //remove_pos = mystr.find (',');
+ //mystr.remove (0, remove_pos);
+ //agLine.offY= mystr.toInt();
+ rueck = sscanf ((const char *) mystr.latin1(), "(%d,%d)",
+ &agLine.offX, &agLine.offY);
+ kdDebug (s_area) << " Offset -> x:" << agLine.offX << " y:" << agLine.offY << endl;
+ if (rueck <= 0)
+ {
+ kdDebug (s_area) << "LINE tag not correkt" << endl;
+ kdDebug (s_area) << "LINE: <" << mystr << ">" << endl;
+ return KoFilter::StupidError;
+ }
+
+ do
+ {
+ // Get acutal position
+ pos = in.at ();
+ // Read one line
+ mystr = stream.readLine ();
+
+ if (mystr.startsWith (" RECOLOR ") )
+ {
+ kdDebug (s_area) << " Recolor ";
+ mystr.remove (0, 9);
+ if (mystr == "ON")
+ {
+ kdDebug (s_area) << "On" << endl;
+ agLine.reColor = true;
+ }
+ else if (mystr == "OFF")
+ {
+ kdDebug (s_area) << "Off" << endl;
+ agLine.reColor = false;
+ }
+ else
+ {
+ kdDebug (s_area) << "!!!!! Unknown RECOLOR item <" << mystr << ">" << endl;
+ }
+ }
+ else if (mystr.startsWith (" THICKNESS ") )
+ {
+ kdDebug (s_area) << " Thickness: ";
+ mystr.remove (0, 11);
+ sscanf ((const char *) mystr.latin1(), "%d", &agLine.thickNess);
+ //
+ kdDebug (s_area) << agLine.thickNess << endl;
+ }
+ else if (mystr.startsWith (" PNTS ") )
+ {
+ kdDebug (s_area) << " Pnts : ";
+ mystr.remove (0, 6);
+ sscanf ((const char *) mystr.latin1(), "(%d,%d)(%d,%d)",
+ &agLine.ptX[0], &agLine.ptY[0], &agLine.ptX[1], &agLine.ptY[1]);
+ kdDebug (s_area) << agLine.ptX[0] << " " << agLine.ptY[0] << " " << agLine.ptX[1] << " " << agLine.ptY[1] << endl;
+ }
+
+ }
+ while ((mystr[0] != '.') && (mystr[0] != 'E'));
+
+ // An die Position zurueckspringen
+ in.at (pos);
+
+ // Werte in die Struktur einlagern
+ str += " <polyline arrow1=\"0\" arrow2=\"0\" >\n";
+// str += " <point x=\"" + agLine.ptX[0] + "\" y=\"" + agLine.ptY[0] + "\" />";
+ str += " <point x=\"" ;
+ str += TQString::number ((agLine.ptX[0] + agLine.offX)/FAKTOR);
+ str += "\" y=\"";
+ str += TQString::number ((agLine.ptY[0] + agLine.offY)/FAKTOR);
+ str += "\" />\n";
+
+// str += " <point x=\"" + agLine.ptX[1] + "\" y=\"" + agLine.ptY[1] + "\" />";
+ str += " <point x=\"";
+ str += TQString::number ((agLine.ptX[1] + agLine.offX)/FAKTOR);
+ str += "\" y=\"";
+ str += TQString::number ((agLine.ptY[1] + agLine.offY)/FAKTOR);
+ str += "\" />\n";
+ str += " <gobject fillstyle=\"0\" linewidth=\"1\" strokecolor=\"#000000\" strokestyle=\"1\" >\n";
+ str += " <matrix dx=\"0\" dy=\"0\" m21=\"0\" m22=\"1\" m11=\"1\" m12=\"0\" />\n";
+ str += " </gobject>\n";
+
+
+
+ str += " </polyline>\n";
+
+
+ }
+ /********************************************************************
+ * Element RPOL Vieleck *
+ ********************************************************************/
+ if (mystr.startsWith ("RPOL AT") )
+ {
+ // Define
+ applixGraphicsLine agLine;
+ int nsides;
+
+ //str += agLine.read (int, mystr);
+
+ kdDebug (s_area) << " RPOL recognized: " << endl;
+ mystr.remove (0, 8);
+
+ rueck = sscanf ((const char *) mystr.latin1(), "(%d,%d)",
+ &agLine.offX, &agLine.offY);
+ kdDebug (s_area) << " Offset -> x:" << agLine.offX << " y:" << agLine.offY << endl;
+ if (rueck <= 0)
+ {
+ kdDebug (s_area) << "RPOL tag not correkt " << endl;
+ kdDebug (s_area) << "RPOL: <" << mystr << ">" << endl;
+ return KoFilter::StupidError;
+ }
+
+ do
+ {
+ // Akutelle Position bestimmen
+ pos = in.at ();
+ // Zeile einlesen
+ mystr = stream.readLine ();
+//checkSubElement (mystr, subelements)
+ if (mystr.startsWith (" RECOLOR ") )
+ {
+ kdDebug (s_area) << " Recolor " ;
+ mystr.remove (0, 9);
+ if (mystr == "ON")
+ {
+ kdDebug (s_area) << "On" << endl;
+ agLine.reColor = true;
+ }
+ else if (mystr == "OFF")
+ {
+ kdDebug (s_area) << "Off" << endl;
+ agLine.reColor = false;
+ }
+ else
+ {
+ kdDebug (s_area) << "!!!!! Whats that <" << mystr << ">" << endl;
+ }
+ }
+ else if (mystr.startsWith (" NSIDES") )
+ {
+ kdDebug (s_area) << " NSIDES: " ;
+ mystr.remove (0, 8);
+ pos = sscanf ((const char *) mystr.latin1(), "%d", &nsides);
+ kdDebug (s_area) << nsides << "(" << pos << ")" << endl;
+ }
+ else if (mystr.startsWith (" PNTS ") )
+ {
+ kdDebug (s_area) << " Pnts : ";
+ mystr.remove (0, 6);
+ sscanf ((const char *) mystr.latin1(), "(%d,%d)(%d,%d)(%d,%d)(%d,%d)(%d,%d)",
+ &agLine.ptX[0], &agLine.ptY[0], &agLine.ptX[1], &agLine.ptY[1],
+ &agLine.ptX[2], &agLine.ptY[2], &agLine.ptX[3], &agLine.ptY[3],
+ &agLine.ptX[4], &agLine.ptY[4]);
+ kdDebug (s_area) << agLine.ptX[0] << " " << agLine.ptY[0] << " " <<
+ agLine.ptX[1] << " " << agLine.ptY[1] << " " <<
+ agLine.ptX[2] << " " << agLine.ptY[2] << " " <<
+ agLine.ptX[3] << " " << agLine.ptY[3] << " " <<
+ agLine.ptX[4] << " " << agLine.ptY[4] << endl;
+ }
+//checkSubElement() ende
+
+ }
+ while ((mystr[0] != '.') && (mystr[0] != 'E'));
+
+
+
+ // An die Position zurueckspringen
+ in.at (pos);
+
+ int a, b;
+ float wink=0.0;
+ int *x = new int[nsides];
+ int *y = new int[nsides];
+ a = agLine.ptX[2] / 2;
+ b = agLine.ptY[2] / 2;
+ for (int i=0; i<nsides; i++)
+ {
+ x[i] = tqRound (a * cos (wink*M_PI/180));
+ y[i] = tqRound (b * sin (wink*M_PI/180));
+ wink += (360/nsides);
+ }
+
+ // Werte in die Struktur einlagern
+ str += " <polyline arrow1=\"0\" arrow2=\"0\" >\n";
+ for (int i=0; i<nsides; i++)
+ {
+ str += " <point x=\"" ;
+ str += TQString::number ((x[i] + agLine.offX)/FAKTOR);
+ str += "\" y=\"";
+ str += TQString::number ((y[i] + agLine.offY)/FAKTOR);
+ str += "\" />\n";
+ }
+
+ str += " <gobject fillstyle=\"0\" linewidth=\"1\" strokecolor=\"#000000\" strokestyle=\"1\" >\n";
+ str += " <matrix dx=\"0\" dy=\"0\" m21=\"0\" m22=\"1\" m11=\"1\" m12=\"0\" />\n";
+ str += " </gobject>\n";
+
+
+
+ str += " </polyline>\n";
+
+
+ }
+ /********************************************************************
+ * Element TXT - Text *
+ ********************************************************************/
+ else if (mystr.startsWith ("TXT AT") )
+ {
+ // Define
+ //applixGraphicsText agText;
+ applixGraphicsLine agText;
+
+ kdDebug (s_area) << " Habe Text erkannt (keine Werte uebernommen)" << endl;
+ mystr.remove (0, 7);
+ sscanf ((const char *) mystr.latin1(), "(%d,%d)",
+ &agText.offX, &agText.offY);
+ kdDebug (s_area) << " Offset -> x:" << agText.offX << " y:" << agText.offY << endl;
+
+
+ do
+ {
+ // Aktuelle Position bestimmen
+ pos = in.at ();
+ // Zeile einlesen
+ mystr = stream.readLine ();
+//checkSubElement()
+ if (mystr.startsWith (" RECOLOR ") )
+ {
+ kdDebug (s_area) << " Recolor : ";
+ mystr.remove (0, 9);
+ if (mystr == "ON")
+ {
+ kdDebug (s_area) << "On" << endl;
+ agText.reColor = true;
+ }
+ else if (mystr == "OFF")
+ {
+ kdDebug (s_area) << "Off" << endl;
+ agText.reColor = false;
+ }
+ else
+ {
+ kdDebug (s_area) << "!!!!! Whats that <" << mystr << ">" << endl;
+ }
+ }
+ else if (mystr.startsWith (" .STR") )
+ {
+ kdDebug (s_area) << " Textstring: ";
+
+ // Zeile einlesen
+ agText.str = stream.readLine ();
+ agText.str.remove (0, 3); // delete ront part
+ kdDebug (s_area) << agText.str;
+ }
+ else if (mystr.startsWith (" THICKNESS ") )
+ {
+ kdDebug (s_area) << " Thickness: ";
+ mystr.remove (0, 11);
+ sscanf ((const char *) mystr.latin1(), "%d", &agText.thickNess);
+ kdDebug (s_area) << agText.thickNess << endl;
+ }
+ else if (mystr.startsWith (" PNTS ") )
+ {
+ kdDebug (s_area) << " Pnts : ";
+ mystr.remove (0, 6);
+ sscanf ((const char *) mystr.latin1(), "(%d,%d)(%d,%d)",
+ &agText.ptX[0], &agText.ptY[0], &agText.ptX[1], &agText.ptY[1]);
+ kdDebug (s_area) << agText.ptX[0] << " " << agText.ptY[0] << " " << agText.ptX[1] << " " << agText.ptY[1];
+ }
+//checkSubElement() ende
+
+ }
+ while ((mystr[0] != '.') && (mystr[0] != 'E'));
+
+ // An die Position zurueckspringen
+ in.at (pos);
+
+ // Werte in die Struktur einlagern
+ str += " <text ";
+ str += "x=\"" ;
+ str += TQString::number (agText.offX);
+ str += "\" y=\"" ;
+ str += TQString::number (agText.offY);
+ str += "\" >\n";
+ str += " <![CDATA[" + agText.str;
+ str += "]]>\n";
+ str += " <gobject fillstyle=\"0\" linewidth=\"1\" strokecolor=\"#000000\" strokestyle=\"1\" >\n";
+ str += " <matrix dx=\"119\" dy=\"310\" m21=\"0\" m22=\"1\" m11=\"1\" m12=\"0\" />\n";
+ str += " </gobject>\n";
+ str += " </text>\n";
+
+ }
+
+ /********************************************************************
+ * Element rectangle *
+ ********************************************************************/
+ else if (mystr.startsWith ("RECT AT"))
+ {
+ applixGraphicsRect agRect;
+
+ kdDebug (s_area) << " Habe Rectangle erkannt " << endl;
+ mystr.remove (0, 8);
+ rueck = sscanf ((const char *)mystr.latin1(), "(%d,%d)", &agRect.offX, &agRect.offY);
+ if (rueck < 1) kdDebug (s_area) <<"Fehler im String <" << mystr.latin1() << ">" << endl;
+ kdDebug (s_area) << " Offset -> x:" << agRect.offX << " y:" << agRect.offY << endl;
+
+
+ do
+ {
+ // Akutelle Position bestimmen
+ pos = in.at ();
+ // read one line
+ mystr = stream.readLine ();
+
+//checkSubElement()
+ // option RECOLOR
+ if (mystr.startsWith (" RECOLOR ") )
+ {
+ kdDebug (s_area) <<(" Recolor : ");
+ mystr.remove (0, 9);
+ if (mystr == "ON")
+ { kdDebug (s_area) << "On" << endl; agRect.reColor = true;}
+ else if (mystr == "OFF")
+ { kdDebug (s_area) << "Off" << endl; agRect.reColor = false;}
+ else
+ {
+ kdDebug (s_area) << "!!!!! Whats that <" << mystr << ">" << endl;
+ }
+ }
+ // option BACKFILL
+ else if (mystr.startsWith (" BACKFILL ") )
+ {
+ kdDebug (s_area) <<(" Backfill: ");
+ mystr.remove (0, 12);
+ sscanf ((const char *)mystr.latin1(), "<%d %d %d %d %d %d %d>",
+ &agRect.bf[0], &agRect.bf[1], &agRect.bf[2],
+ &agRect.bf[3], &agRect.bf[4], &agRect.bf[5],
+ &agRect.bf[6]);
+ kdDebug (s_area) << agRect.bf[0] << " " << agRect.bf[1] << " " <<
+ agRect.bf[2] << " " << agRect.bf[3] << " " <<
+ agRect.bf[4] << " " << agRect.bf[5] << " " <<
+ agRect.bf[6];
+
+ }
+ // option LINEFILL
+ else if (mystr.startsWith (" LINEFILL ") )
+ {
+ kdDebug (s_area) << " Linefill: ";
+ mystr.remove (0, 12);
+ sscanf ((const char *)mystr.latin1(), "<%d %d %d %d %d %d %d>",
+ &agRect.lf[0], &agRect.lf[1], &agRect.lf[2],
+ &agRect.lf[3], &agRect.lf[4], &agRect.lf[5],
+ &agRect.lf[6]);
+ kdDebug (s_area) << agRect.lf[0] << " " << agRect.lf[1] << " " <<
+ agRect.lf[2] << " " << agRect.lf[3] << " " <<
+ agRect.lf[4] << " " << agRect.lf[5] << " " <<
+ agRect.lf[6];
+
+ }
+ // option SHADOW
+ else if (mystr.startsWith (" SHADOW ") )
+ {
+ kdDebug (s_area) << " Shadow : ";
+ mystr.remove (0, 12);
+ sscanf ((const char *)mystr.latin1(), "<%d %d %d %d %d>",
+ &agRect.sh[0], &agRect.sh[1], &agRect.sh[2],
+ &agRect.sh[3], &agRect.sh[4]);
+ kdDebug (s_area) << agRect.sh[0] << " " << agRect.sh[1] << " " <<
+ agRect.sh[2] << " " << agRect.sh[3] << " " <<
+ agRect.sh[4];
+ }
+ // option PARA
+ else if (mystr.startsWith (" PARA ") )
+ {
+ kdDebug (s_area) << " Para : ";
+ mystr.remove (0, 12);
+ sscanf ((const char *)mystr.latin1(), "<%d %d %d %d %d %d %d %d>",
+ &agRect.pa[0], &agRect.pa[1], &agRect.pa[2],
+ &agRect.pa[3], &agRect.pa[4], &agRect.pa[5],
+ &agRect.pa[6], &agRect.pa[7]);
+ kdDebug (s_area) << agRect.pa[0] << " " << agRect.pa[1] << " " <<
+ agRect.pa[2] << " " << agRect.pa[3] << " " <<
+ agRect.pa[4] << " " << agRect.pa[5] << " " <<
+ agRect.pa[6] << " " << agRect.pa[7] ;
+
+ }
+ // option THICKNESS
+ else if (mystr.startsWith (" THICKNESS ") )
+ {
+ kdDebug (s_area) << " Thickness: ";
+ mystr.remove (0, 11);
+ sscanf ((const char *) mystr.latin1(), "%d", &agRect.thickNess);
+ kdDebug (s_area) << agRect.thickNess << endl;
+ }
+ // option V_SPACE
+ else if (mystr.startsWith (" V_SPACE ") )
+ {
+ kdDebug (s_area) << " V_Space : ";
+ mystr.remove (0, 9);
+ sscanf ((const char *)mystr.latin1(), "(%d %d %d)",
+ &agRect.vs[0], &agRect.vs[1], &agRect.vs[2]);
+ kdDebug (s_area) << agRect.vs[0] << " " << agRect.vs[1] << " " << agRect.vs[2];
+ }
+ // option XYRAD
+ else if (mystr.startsWith (" XYRAD ") )
+ {
+ kdDebug (s_area) << " XYRad : ";
+ mystr.remove (0, 7);
+ sscanf ((const char *)mystr.latin1(), "<%d %d>",
+ &agRect.xr[0], &agRect.xr[1]);
+ kdDebug (s_area) << agRect.xr[0] << " " << agRect.xr[1];
+ }
+ // option PNTS
+ else if (mystr.startsWith (" PNTS ") )
+ {
+ kdDebug (s_area) << " Pnts : ";
+ mystr.remove (0, 6);
+ sscanf ((const char *)mystr.latin1(), "(%d,%d)(%d,%d)(%d,%d)(%d,%d)(%d,%d)",
+ &agRect.ptX[0], &agRect.ptY[0], &agRect.ptX[1], &agRect.ptY[1],
+ &agRect.ptX[2], &agRect.ptY[2], &agRect.ptX[3], &agRect.ptY[3],
+ &agRect.ptX[4], &agRect.ptY[4]);
+ kdDebug (s_area) << agRect.ptX[0] << " " << agRect.ptY[0] << " " <<
+ agRect.ptX[1] << " " << agRect.ptY[1] << " " <<
+ agRect.ptX[2] << " " << agRect.ptY[2] << " " <<
+ agRect.ptX[3] << " " << agRect.ptY[3] << " " <<
+ agRect.ptX[4] << " " << agRect.ptY[4] << endl;
+ }
+
+//checkSubElement() ende
+ }
+ while ((mystr[0] != '.') && (mystr[0] != 'E'));
+
+ // An die Position zurueckspringen
+ in.at (pos);
+
+ // Werte in die Struktur einlagern
+ str += " <rectangle ";
+ str += "x=\"" ;
+ str += TQString::number ((agRect.offX)/FAKTOR);
+ str += "\" y=\"";
+ str += TQString::number ((agRect.offY)/FAKTOR);
+ str += "\" width=\"" ;
+ str += TQString::number ((agRect.ptX[2])/FAKTOR);
+ str += "\" height=\"";
+ str += TQString::number ((agRect.ptY[2])/FAKTOR);
+ str += "\" >\n";
+ str += " <polyline arrow1=\"0\" arrow2=\"0\" >\n";
+
+ str += " <point x=\"" ;
+ str += TQString::number ((agRect.ptX[0] + agRect.offX)/FAKTOR) ;
+ str += "\" y=\"" ;
+ str += TQString::number ((agRect.ptY[0] + agRect.offY)/FAKTOR) ;
+ str += "\" />\n";
+
+ str += " <point x=\"" ;
+ str += TQString::number ((agRect.ptX[0] + agRect.ptX[2] + agRect.offX)/FAKTOR) ;
+ str += "\" y=\"" ;
+ str += TQString::number ((agRect.ptY[0] + agRect.offY)/FAKTOR) ;
+ str += "\" />\n";
+
+ str += " <point x=\"" ;
+ str += TQString::number ((agRect.ptX[0] + agRect.ptX[2] + agRect.offX)/FAKTOR) ;
+ str += "\" y=\"" ;
+ str += TQString::number ((agRect.ptY[0] + agRect.ptY[2] + agRect.offY)/FAKTOR) ;
+ str += "\" />\n";
+
+ str += " <point x=\"" ;
+ str += TQString::number ((agRect.ptX[0] + agRect.offX)/FAKTOR) ;
+ str += "\" y=\"" ;
+ str += TQString::number ((agRect.ptY[0] + agRect.ptY[2] + agRect.offY)/FAKTOR) ;
+ str += "\" />\n";
+
+
+ str += " <gobject fillstyle=\"0\" linewidth=\"1\" strokecolor=\"#000000\" strokestyle=\"1\" >\n";
+ str += " <matrix dx=\"0\" dy=\"0\" m21=\"0\" m22=\"1\" m11=\"1\" m12=\"0\" />\n";
+ str += " </gobject>\n";
+ str += " </polyline>\n";
+ str += " </rectangle>\n";
+
+
+
+
+
+
+ }
+ /********************************************************************
+ * Element ELL - Ellipse *
+ ********************************************************************/
+ else if (mystr.startsWith ("ELL AT"))
+ {
+ applixGraphicsRect agEll;
+
+ kdDebug (s_area) << " Habe ELL erkannt (keine Werte uebernommen " << endl;
+ mystr.remove (0, 7);
+ sscanf ((const char *)mystr.latin1(), "(%d,%d)",
+ &agEll.offX, &agEll.offY);
+ kdDebug (s_area) << " Offset -> x:" << agEll.offX << " y:" << agEll.offY << endl;
+
+ do
+ {
+ // Aktuelle Position bestimmen
+ pos = in.at ();
+ // read one line
+ mystr = stream.readLine ();
+
+//checkSubElement()
+ // option RECOLOR
+ if (mystr.startsWith (" RECOLOR ") )
+ {
+ kdDebug (s_area) << " Recolor: ";
+ mystr.remove (0, 9);
+ if (mystr == "ON")
+ {
+ kdDebug (s_area) << "On" << endl;
+ agEll.reColor = true;
+ }
+ else if (mystr == "OFF")
+ {
+ kdDebug (s_area) << "Off" << endl;
+ agEll.reColor = false;
+ }
+ else
+ {
+ kdDebug (s_area) << "!!!!! Whats that <" << mystr << ">" << endl;
+ }
+ }
+ else if (mystr.startsWith (" PNTS ") )
+ {
+ kdDebug (s_area) <<(" Pnts : ");
+ mystr.remove (0, 6);
+ //
+ sscanf ((const char *)mystr.latin1(), "(%d,%d)(%d,%d)(%d,%d)(%d,%d)(%d,%d)",
+ &agEll.ptX[0], &agEll.ptY[0], &agEll.ptX[1], &agEll.ptY[1],
+ &agEll.ptX[2], &agEll.ptY[2], &agEll.ptX[3], &agEll.ptY[3],
+ &agEll.ptX[4], &agEll.ptY[4]);
+ kdDebug (s_area) << agEll.ptX[0] << " " << agEll.ptY[0] << " " <<
+ agEll.ptX[1] << " " << agEll.ptY[1] << " " <<
+ agEll.ptX[2] << " " << agEll.ptY[2] << " " <<
+ agEll.ptX[3] << " " << agEll.ptY[3] << " " <<
+ agEll.ptX[4] << " " << agEll.ptY[4] << endl;
+
+ }
+//checkSubElement() ende
+ }
+ while ((mystr[0] != '.') && (mystr[0] != 'E'));
+
+ // An die Position zurueckspringen
+ in.at (pos);
+
+ // Werte in die Struktur einlagern
+ // ???
+
+ }
+ else
+ {
+ kdDebug (s_area) << "Unbekannt : " << mystr << endl;
+ }
+
+ }
+
+
+ if (i>step)
+ {
+ i=0;
+ value+=2;
+ emit sigProgress (value);
+ }
+ }
+ emit sigProgress(100);
+
+ str += " </layer>\n";
+ str += " </karbon>\n";
+// str += "</DOC>\n";
+
+ kdDebug (s_area) << "Text " << str.utf8() << endl;
+
+ KoStoreDevice* out= m_chain->storageFile( "root", KoStore::Write );
+ if (!out)
+ {
+ kdError(s_area) << "Unable to open output file!" << endl;
+ in.close ();
+ return KoFilter::StorageCreationError;
+ }
+
+ TQCString cstring = str.utf8();
+ out->writeBlock ( (const char*)cstring, cstring.size() - 1 );
+
+ in.close ();
+ return KoFilter::OK;
+}
+
+#include <applixgraphicimport.moc>
+
+
+
+