diff options
Diffstat (limited to 'filters/kword/libexport/KWEFBaseWorker.cpp')
-rw-r--r-- | filters/kword/libexport/KWEFBaseWorker.cpp | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/filters/kword/libexport/KWEFBaseWorker.cpp b/filters/kword/libexport/KWEFBaseWorker.cpp new file mode 100644 index 000000000..a47f647da --- /dev/null +++ b/filters/kword/libexport/KWEFBaseWorker.cpp @@ -0,0 +1,204 @@ +/* + This file is part of the KDE project + Copyright 2001, 2002, 2003, 2004 Nicolas GOUTTE <goutte@kde.org> + + 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. +*/ + +#include <tqbuffer.h> +#include <tqimage.h> + +#include <kdebug.h> + +#include <KoPicture.h> + +#include "KWEFStructures.h" +#include "KWEFBaseWorker.h" +#include "KWEFKWordLeader.h" + +void KWEFBaseWorker::registerKWordLeader(KWEFKWordLeader* leader) +{ + m_kwordLeader=leader; +} + +// +// At first, define all methods that do something real! +// + +bool KWEFBaseWorker::doAbortFile(void) +{ + // Mostly, aborting is the same than closing the file! + return doCloseFile(); +} + +bool KWEFBaseWorker::doFullDocument (const TQValueList<ParaData>& paraList) +{ + if (!doOpenTextFrameSet()) + return false; + if (!doFullAllParagraphs(paraList)) + return false; + if (!doCloseTextFrameSet()) + return false; + + return true; +} + +bool KWEFBaseWorker::doFullAllParagraphs (const TQValueList<ParaData>& paraList) +{ + TQValueList<ParaData>::ConstIterator it; + TQValueList<ParaData>::ConstIterator end(paraList.end()); + for (it=paraList.begin();it!=end;++it) + { + if (!doFullParagraph((*it).text,(*it).layout,(*it).formattingList)) + return false; + } + return true; +} + +bool KWEFBaseWorker::loadSubFile(const TQString& fileName, TQByteArray& array) const +// return value: +// true if the file is not empty +// false if the file is empty or if an error occurred +{ + bool flag=false; + if (m_kwordLeader) + { + flag=m_kwordLeader->loadSubFile(fileName,array); + } + else + { + kdWarning(30508) << "Leader is unknown! (KWEFBaseWorker::loadSubFile)" << endl; + } + return flag; +} + +TQIODevice* KWEFBaseWorker::getSubFileDevice(const TQString& fileName) const +{ + if (!m_kwordLeader) + { + kdWarning(30508) << "Leader is unknown! (KWEFBaseWorker::getSubFileDevice)" << endl; + return NULL; + } + return m_kwordLeader->getSubFileDevice(fileName); +} + +TQImage KWEFBaseWorker::loadAndConvertToImage(const TQString& strName, const TQString& inExtension) const +{ + TQIODevice* io=getSubFileDevice(strName); + if (!io) + { + // NO message error, as there must be already one + return TQImage(); + } + + kdDebug(30508) << "Picture " << strName << " has size: " << io->size() << endl; + + KoPicture picture; + if (!picture.load(io, inExtension)) // we do not care about KoPictureKey + { + kdWarning(30508) << "Could not read picture: " << strName << " (KWEFBaseWorker::loadAndConvertToImage)" << endl; + return TQImage(); + } + + return picture.generateImage(picture.getOriginalSize()); // ### TODO: KoPicture::getOriginalSize is bad for cliparts +} + +bool KWEFBaseWorker::loadAndConvertToImage(const TQString& strName, const TQString& inExtension, const TQString& outExtension, TQByteArray& image) const +{ + TQImage qimage(loadAndConvertToImage(strName,inExtension)); + + if (qimage.isNull()) + { + kdWarning(30508) << "Could not load image (KWEFBaseWorker::loadAndConvertToImage)" <<endl; + return false; + } + + TQImageIO imageIO; + imageIO.setImage(qimage); + + TQBuffer buffer(image); // A TQBuffer is a TQIODevice + if (!buffer.open(IO_WriteOnly)) + { + kdWarning(30508) << "Could not open buffer! (KWEFBaseWorker::loadAndConvertToImage)" << endl; + return false; + } + + imageIO.setIODevice(TQT_TQIODEVICE(&buffer)); + imageIO.setFormat(outExtension.utf8()); + + if (!imageIO.write()) + { + kdWarning(30508) << "Could not write converted image! (KWEFBaseWorker::loadAndConvertToImage)" << endl; + return false; + } + buffer.close(); + + return true; +} + + +// +// Secondly, define all methods returning false +// + +#define DO_FALSE_DEFINITION(string) \ + bool KWEFBaseWorker::string \ + {\ + kdWarning(30508) << "KWEFBaseWorker::" << #string << " was called (Worker not correctly defined?)" << endl; \ + return false;\ + } + +DO_FALSE_DEFINITION (doOpenFile (const TQString& , const TQString& )) +DO_FALSE_DEFINITION (doCloseFile (void)) +DO_FALSE_DEFINITION (doOpenDocument (void)) +DO_FALSE_DEFINITION (doCloseDocument (void)) + +// The following is not generated by the leader +DO_FALSE_DEFINITION (doFullParagraph(const TQString&, const LayoutData&, const ValueListFormatData&)) + +// +// Thirdly, define all methods returning true +// + +#define DO_TRUE_DEFINITION(string) \ + bool KWEFBaseWorker::string \ + {\ + return true;\ + } + +DO_TRUE_DEFINITION (doFullDocumentInfo (const KWEFDocumentInfo&)) +DO_TRUE_DEFINITION (doVariableSettings (const VariableSettingsData &)) +DO_TRUE_DEFINITION (doFullPaperFormat (const int, const double, const double, const int)) +DO_TRUE_DEFINITION (doFullPaperBorders (const double, const double, const double, const double)) +DO_TRUE_DEFINITION (doFullPaperFormatOther ( const int, const double, const int ) ) +DO_TRUE_DEFINITION (doPageInfo(int,int)) +DO_TRUE_DEFINITION (doOpenHead (void)) +DO_TRUE_DEFINITION (doCloseHead (void)) +DO_TRUE_DEFINITION (doOpenBody (void)) +DO_TRUE_DEFINITION (doCloseBody (void)) +DO_TRUE_DEFINITION (doOpenStyles (void)) +DO_TRUE_DEFINITION (doCloseStyles (void)) +DO_TRUE_DEFINITION (doFullDefineStyle (LayoutData&)) +DO_TRUE_DEFINITION (doOpenSpellCheckIgnoreList (void)) +DO_TRUE_DEFINITION (doCloseSpellCheckIgnoreList (void)) +DO_TRUE_DEFINITION (doFullSpellCheckIgnoreWord (const TQString&)) +DO_TRUE_DEFINITION (doHeader(const HeaderData&)) +DO_TRUE_DEFINITION (doFooter(const FooterData&)) +DO_TRUE_DEFINITION ( doDeclareNonInlinedFramesets( TQValueList<FrameAnchor>&, TQValueList<FrameAnchor>& ) ) + +// The following are not generated by the leader +DO_TRUE_DEFINITION (doOpenTextFrameSet (void)) +DO_TRUE_DEFINITION (doCloseTextFrameSet (void)) |