• Main Page
  • Classes
  • Files
  • File List
  • File Members

readerstorage.h

Go to the documentation of this file.
00001 /****************************************************************************
00002 **
00003 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
00004 ** Contact: Alexander Bokovoy <alexander.bokovoy@nokia.com>
00005 **
00006 ** This file is part of the Quill Image Filters package.
00007 **
00008 ** Commercial Usage
00009 ** Licensees holding valid Qt Commercial licenses may use this file in
00010 ** accordance with the Qt Commercial License Agreement provided with the
00011 ** Software or, alternatively, in accordance with the terms contained in
00012 ** a written agreement between you and Nokia.
00013 **
00014 ** GNU Lesser General Public License Usage
00015 ** Alternatively, this file may be used under the terms of the GNU Lesser
00016 ** General Public License version 2.1 as published by the Free Software
00017 ** Foundation and appearing in the file LICENSE.LGPL included in the
00018 ** packaging of this file.  Please review the following information to
00019 ** ensure the GNU Lesser General Public License version 2.1 requirements
00020 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
00021 **
00022 ** In addition, as a special exception, Nokia gives you certain
00023 ** additional rights. These rights are described in the Nokia Qt LGPL
00024 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
00025 ** package.
00026 **
00027 ** GNU General Public License Usage
00028 ** Alternatively, this file may be used under the terms of the GNU
00029 ** General Public License version 3.0 as published by the Free Software
00030 ** Foundation and appearing in the file LICENSE.GPL included in the
00031 ** packaging of this file.  Please review the following information to
00032 ** ensure the GNU General Public License version 3.0 requirements will be
00033 ** met: http://www.gnu.org/copyleft/gpl.html.
00034 **
00035 ** If you are unsure which license is appropriate for your use, please
00036 ** contact the sales department at qt-sales@nokia.com.
00037 **
00038 ****************************************************************************/
00039 
00052 #ifndef READERSTORAGE_H
00053 #define READERSTORAGE_H
00054 
00055 #include <QCache>
00056 #include <QLatin1String>
00057 #include "quillimagefilter.h"
00058 
00059 class QByteArray;
00060 class QBuffer;
00061 class QImageReader;
00062 
00063 class ReaderStorageItem
00064 {
00065 public:
00066     ReaderStorageItem();
00067     ~ReaderStorageItem();
00068 
00069     inline QBuffer* buffer();
00070     inline QByteArray* byteArray();
00071     inline QImageReader* reader();
00072     inline void setImageReader(QImageReader* imageReader);
00073     inline QuillImageFilter::ImageFilterError error();
00074     void setError(QuillImageFilter::ImageFilterError error);
00075 
00076 private:
00077     QByteArray                         *m_ByteArray;
00078     QBuffer                            *m_Buffer;
00079     QImageReader                       *m_reader;
00080     QuillImageFilter::ImageFilterError filterError;
00081 };
00082 
00083 class ReaderStorage
00084 {
00085 public:
00086     ReaderStorage();
00094     QImageReader* createImageReader(int uniqueKey, const QString& fileName, const QByteArray& format);
00095 
00097     static bool isJpeg(const QByteArray &format);
00098 
00103     QImageReader* getReaderFromStorage(int uniqueKey);
00104 
00109     QuillImageFilter::ImageFilterError error(int uniqueKey);
00110 
00113     void discardReader(int uniqueKey);
00114 
00115 private:
00116     bool loadStorageItemFromFile(const QString& fileName, ReaderStorageItem* readerStorageItem, const QByteArray& format);
00117 
00118 private:
00119     QCache<int,ReaderStorageItem> m_ReaderCache;
00120 
00121     static const QByteArray JpegFormatShort;
00122     static const QByteArray JpegFormatLong;
00123 };
00124 
00125 #endif // READERSTORAGE_H

Generated on Wed Jun 1 2011 13:17:23 for quillimagefilter by  doxygen 1.7.1