Subversion Repositories Scribus

Rev

Rev 13957 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
For general Scribus (>=1.3.2) copyright and licensing information please refer
to the COPYING file provided with the program. Following this notice may exist
a copyright and/or license notice that predates the release of Scribus 1.3.2
for which a new license (GPL+exception) is in place.
*/

#ifndef SCIMGDATALOADER_H
#define SCIMGDATALOADER_H

#include "scribusapi.h"
#include <QByteArray>
#include <QImage>
#include <QStringList>

#include "colormgmt/sccolormgmtstructs.h"
#include "scimagestructs.h"
#include "rawimage.h"

class ScImgDataLoader
{
protected:
        ScImgDataLoader(void);

        QStringList m_supportedFormats;

        QImage          m_image;
        ImageInfoRecord m_imageInfoRecord;
        QByteArray      m_embeddedProfile;
        int             m_profileComponents;
        eColorFormat    m_pixelFormat;

        typedef enum {
                noMsg = 0,
                warningMsg = 1,
                errorMsg = 2
        } MsgType;
        MsgType m_msgType;
        QString m_message;

        void swapRGBA(void);
        void swapRGBA(QImage *img);

        QString getPascalString(QDataStream & s);
        double decodePSDfloat(uint data);
        void parseRessourceData( QDataStream & s, const PSDHeader & header, uint size );

public:
        virtual ~ScImgDataLoader(void) {};

        const QStringList& supportedFormats(void) const { return m_supportedFormats; }
        bool  supportFormat(const QString& fmt);

        RawImage    r_image;

        QImage&          image(void) { return m_image; }
        QByteArray&      embeddedProfile(void) { return m_embeddedProfile; }
        ImageInfoRecord& imageInfoRecord(void) { return m_imageInfoRecord; }
        eColorFormat     pixelFormat(void) { return m_pixelFormat; }
        void             setRequest(bool valid, QMap<int, ImageLoadRequest> req);

        bool  issuedErrorMsg(void)      const { return (m_msgType == errorMsg); }
        bool  issuedWarningMsg(void)    const { return (m_msgType == warningMsg); }
        const QString& getMessage(void) const { return m_message; }

        virtual void initialize(void);

//      virtual void preloadAlphaChannel(const QString& fn, int res) = 0;
        virtual bool preloadAlphaChannel(const QString& fn, int page, int res, bool& hasAlpha) = 0;
        virtual void loadEmbeddedProfile(const QString& fn, int page = 0) = 0;
        virtual bool loadPicture(const QString& fn, int page, int res, bool thumbnail) = 0;
        virtual bool useRawImage() { return false; }
};

#endif