/* This file is part of the KDE project Copyright (C) 1999 Werner Trobin 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. */ // The OLEFilter class is the main filtering class. It manages the // correct handling of the input and output file and provides the // OLE 2 streams for the real filters (excel97, powerpoint97, winword97) #ifndef OLEFILTER_H #define OLEFILTER_H #include #include #include class KoStore; class OLEFilter : public KoEmbeddingFilter { TQ_OBJECT public: OLEFilter(KoFilter *parent, const char *name, const TQStringList&); virtual ~OLEFilter(); virtual KoFilter::ConversionStatus convert( const TQCString& from, const TQCString& to ); public slots: void commSlotDelayStream( const char* delay ); void commSlotShapeID( unsigned int& shapeID ); protected slots: // This slot saves the document informations to the KOffice tar storage. void slotSaveDocumentInformation( const TQString &fullName, const TQString &title, const TQString &company, const TQString &email, const TQString &telephone, const TQString &fax, const TQString &postalCode, const TQString &country, const TQString &city, const TQString &street, const TQString &docTitle, const TQString &docAbstract); // This slot saves an embedded Picture to the KOffice tar storage. void slotSavePic( const TQString &nameIN, TQString &storageId, const TQString &extension, unsigned int length, const char *data); // This slot saves an embedded object to the KOffice tar storage. Note that // this only applies to objects within an OLE stream (like embedded WMFs) // that we want to handle as parts rather than using slotSavePic() since OLE // objects are handled by us, and a filter need only call slotPart(). void slotSavePart( const TQString &nameIN, TQString &storageId, TQString &mimeType, const TQString &extension, unsigned int length, const char *data); // Generate a name for a new part to store it in the KOffice tar storage, // or find the name and type of an existing one. void slotPart( const TQString &nameIN, TQString &storageId, TQString &mimeType); // Get another OLE 2 stream for your filter. // Attention: You'll have to delete [] the stream.data ptr! void slotGetStream(const int &handle, myFile &stream); // Like above. Note: This method might return the wrong stream // as the stream names are NOT unique in the OLE 2 file!!! // (Therefore it's searching only in the current dir) // Attention: You'll have to delete [] the stream.data ptr! void slotGetStream(const TQString &name, myFile &stream); signals: // Forwarding signals for inter-filter communication void internalCommShapeID( unsigned int& shapeID ); void internalCommDelayStream( const char* delay ); private: // Don't copy or assign me >:) OLEFilter(const OLEFilter &); const OLEFilter &operator=(const OLEFilter &); // Template method, triggered by embedPart calls virtual void savePartContents( TQIODevice* file ); void convert( const TQCString& mimeTypeHint ); void connectCommon(FilterBase **myFilter); TQCString mimeTypeHelper(); TQMap imageMap; myFile olefile; int numPic; // for the "unique name generation" KLaola *docfile; // used to split up the OLE 2 file // Needed for the template method callback savePartContents const char* m_embeddeeData; unsigned int m_embeddeeLength; bool success; static const int s_area; }; #endif // OLEFILTER_H