filters

kis_image_magick_converter.h

00001 /*
00002  *  Copyright (c) 2002 Patrick Julien <freak@codepimps.org>
00003  *
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License as published by
00006  *  the Free Software Foundation; either version 2 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  This program 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
00012  *  GNU General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU General Public License
00015  *  along with this program; if not, write to the Free Software
00016  *  Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017  * Boston, MA 02110-1301, USA.
00018  */
00019 #ifndef KIS_IMAGE_MAGICK_CONVERTER_H_
00020 #define KIS_IMAGE_MAGICK_CONVERTER_H_
00021 
00022 #include <qobject.h>
00023 #include <qvaluevector.h>
00024 
00025 #include <kio/job.h>
00026 
00027 #include "kis_types.h"
00028 #include "kis_global.h"
00029 #include "kis_progress_subject.h"
00030 
00031 class QString;
00032 class KURL;
00033 class KisDoc;
00034 class KisNameServer;
00035 class KisUndoAdapter;
00039 enum KisImageBuilder_Result {
00040         KisImageBuilder_RESULT_FAILURE = -400,
00041         KisImageBuilder_RESULT_NOT_EXIST = -300,
00042         KisImageBuilder_RESULT_NOT_LOCAL = -200,
00043         KisImageBuilder_RESULT_BAD_FETCH = -100,
00044         KisImageBuilder_RESULT_INVALID_ARG = -50,
00045         KisImageBuilder_RESULT_OK = 0,
00046         KisImageBuilder_RESULT_PROGRESS = 1,
00047         KisImageBuilder_RESULT_EMPTY = 100,
00048         KisImageBuilder_RESULT_BUSY = 150,
00049         KisImageBuilder_RESULT_NO_URI = 200,
00050         KisImageBuilder_RESULT_UNSUPPORTED = 300,
00051         KisImageBuilder_RESULT_INTR = 400,
00052         KisImageBuilder_RESULT_PATH = 500,
00053         KisImageBuilder_RESULT_UNSUPPORTED_COLORSPACE = 600
00054 };
00055 
00056 
00057 
00061 class KisImageMagickConverter : public KisProgressSubject {
00062     typedef QObject super;
00063     Q_OBJECT
00064 
00065 public:
00066     KisImageMagickConverter(KisDoc *doc, KisUndoAdapter *adapter);
00067     virtual ~KisImageMagickConverter();
00068 
00069 public slots:
00070     virtual void cancel();
00071 
00072 public:
00073     KisImageBuilder_Result buildImage(const KURL& uri);
00074     KisImageBuilder_Result buildFile(const KURL& uri, KisPaintLayerSP layer, vKisAnnotationSP_it annotationsStart, vKisAnnotationSP_it annotationsEnd);
00075     KisImageSP image();
00076 
00077 public:
00078     static QString readFilters();
00079     static QString writeFilters();
00080 
00081 private slots:
00082     void ioData(KIO::Job *job, const QByteArray& data);
00083     void ioResult(KIO::Job *job);
00084     void ioTotalSize(KIO::Job *job, KIO::filesize_t size);
00085 
00086 private:
00087     KisImageMagickConverter(const KisImageMagickConverter&);
00088     KisImageMagickConverter& operator=(const KisImageMagickConverter&);
00089     void init(KisDoc *doc, KisUndoAdapter *adapter);
00090     KisImageBuilder_Result decode(const KURL& uri, bool isBlob);
00091 
00092 private:
00093     KisImageSP m_img;
00094     KisDoc *m_doc;
00095     KisUndoAdapter *m_adapter;
00096     QValueVector<Q_UINT8> m_data;
00097     KIO::TransferJob *m_job;
00098     KIO::filesize_t m_size;
00099     bool m_stop;
00100 };
00101 
00102 #endif // KIS_IMAGE_MAGICK_CONVERTER_H_
00103 
KDE Home | KDE Accessibility Home | Description of Access Keys