javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/graphics/qt/imagebase.h
author hgs
Fri, 15 Oct 2010 12:29:39 +0300
changeset 80 d6dafc5d983f
permissions -rw-r--r--
v2.2.19_1

/*******************************************************************************
 * Copyright (c) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Nokia Corporation - initial API and implementation
 *******************************************************************************/

#ifndef IMAGEBASE_H_
#define IMAGEBASE_H_

#include "graphics.h"
#include <QImage>
#include <QTransform>

namespace Java { namespace GFX {

class ImageBase: public Image
    {
public:
    ImageBase(); 
    virtual ~ImageBase();
    
    /**
     * from Image
     * @see Image
     */
    virtual void createBySize(int aWidth, int aHeight, int aFillColor, TImageFormat aFormat) = 0;
    virtual void createFromQImage(const QImage& aImage) = 0;
    virtual void createFromQPixmap(const QPixmap& aPixmap) = 0;
    virtual void createFromImage(Image* aImage, int aX, int aY, int aWidth, int aHeight) = 0;
    virtual void createFromImageData(ImageDataWrapper* aData) = 0;
    virtual void createFromRGB(int* aRgbdata, int aWidth, int aHeight, bool aHasAlpha) = 0;
    virtual void dispose() = 0;
    virtual QPaintDevice* getBindable() = 0;
    virtual TImageFormat getFormat() = 0;
    virtual int getHeight() = 0;
    virtual const QImage* getConstImage() = 0;
    virtual QImage* getImage() = 0;
    virtual const QPixmap* getConstPixmap() = 0;
    virtual QPixmap* getPixmap() = 0;
    virtual void getRgb(int* aRgbdata, int aOffset, int aScanlength, int aX, int aY, int aWidth, int aHeight) = 0;
    virtual void getRgb(char* aRgbdata, char* aTransparencyMask,int aOffset, int aScanlength, int aX, int aY, int aWidth, int aHeight, int aFormat) = 0;
    virtual void getRgb(short* aRgbdata, int aOffset, int aScanlength, int aX, int aY, int aWidth, int aHeight, int aFormat) = 0;
    virtual int getWidth() = 0;
    virtual const QImage toConstImage() = 0;
    virtual QImage toImage() = 0;
    virtual QPixmap toPixmap() = 0;
    virtual void transform(TTransform aTransform) = 0;
    virtual TImageType type() = 0;
    virtual int getAlpha();
    virtual bool hasMask();
    virtual bool hasAlphaChannel() = 0;
    
protected:
    /**
     * Writes RGB to given int type data array.
     */
    void doGetRgb(QImage& image, int* aRgbdata, int aOffset, int aScanlength, int aX, int aY, 
                  int aWidth, int aHeight);
    
    /**
     * Writes RGB to given char type data array.
     */
    void doGetRgb(QImage& image, char* aRgbdata, char* aTransparencyMask,int aOffset, int aScanlength, 
                   int aX, int aY, int aWidth, int aHeight, int aFormat);
    
    /**
     * Writes RGB to given short type data array.
     */ 
    void doGetRgb(QImage& image, short* aRgbdata, int aOffset, int aScanlength, int aX, int aY, 
                  int aWidth, int aHeight, int aFormat);
    
    /**
     * Creates transform matrix for given transformation.
     * @param aTransform the transform type to be created
     */
    QTransform generateTransformMatrix(TTransform aTransform);
    
    /**
     * Processes image data and creates QImage with properties
     * defined in the image data.
     * 
     * @param aData Image data to be processed
     */
    QImage imageDataToQImage(ImageDataWrapper* aData);
    
    /**
     * Maps given QImage based image format to those defined in TImageFormat.
     * @param qtImageFormat the image format in Qt defitions
     * @return format in internal type
     */
    TImageFormat mapQtFormatToInternal(QImage::Format qtImageFormat);
    
    /**
     * Maps given internal (TImageFormat) image format to Qt format.
     * @param internalImageFormat the image format in internal type
     * @return format in Qt type
     */
    QImage::Format mapInternalFormatToQt(TImageFormat internalImageFormat);
    
    /**
     * Level of alpha
     */
    int      mAlpha;
    
    /**
     * Mask flag
     */
    bool     mHasMask;
    
    
    };

} // namespace GFX
} // namespace Java

#endif /* IMAGEBASE_H_ */