javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/graphics/qt/imageimpl.cpp
author hgs
Fri, 15 Oct 2010 12:29:39 +0300
changeset 80 d6dafc5d983f
permissions -rw-r--r--
v2.2.19_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     1
/*******************************************************************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     2
 * Copyright (c) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies).
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     3
 * All rights reserved. This program and the accompanying materials
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     4
 * are made available under the terms of the Eclipse Public License v1.0
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     5
 * which accompanies this distribution, and is available at
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     6
 * http://www.eclipse.org/legal/epl-v10.html
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     7
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     8
 * Contributors:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     9
 *     Nokia Corporation - initial API and implementation
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    10
 *******************************************************************************/
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    11
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    12
#include <QPixmap>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    13
#include "imageimpl.h"
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    14
#include "gfxlog.h"
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    15
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    16
namespace Java { namespace GFX {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    17
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    18
ImageImpl::ImageImpl() : ImageBase()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    19
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    20
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    21
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    22
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    23
ImageImpl::~ImageImpl()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    24
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    25
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    26
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    27
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    28
void ImageImpl::createBySize(int aWidth, int aHeight, int aFillColor, TImageFormat aFormat)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    29
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    30
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    31
    Q_ASSERT(mImage.isNull());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    32
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    33
    mImage = QImage(aWidth, aHeight, mapInternalFormatToQt(aFormat));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    34
    // Check if creation was successful
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    35
    if(mImage.isNull())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    36
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    37
        throw GfxException(EGfxErrorNoMemory, "Image (QImage) creation failed");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    38
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    39
    // Finally fill with given fillColor, also clears the image mem area
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    40
    // otherwise there might be some random coloured pixels in image
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    41
    mImage.fill(aFillColor);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    42
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    43
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    44
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    45
void ImageImpl::createFromQImage(const QImage& aImage)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    46
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    47
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    48
    Q_ASSERT(mImage.isNull());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    49
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    50
    mImage = QImage(aImage);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    51
    // Validate allocation
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    52
    if(mImage.isNull())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    53
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    54
        throw GfxException(EGfxErrorNoMemory, "Image (QImage) creation failed");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    55
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    56
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    57
    
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    58
void ImageImpl::createFromQPixmap(const QPixmap& aPixmap)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    59
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    60
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    61
    Q_ASSERT(mImage.isNull());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    62
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    63
    mImage = aPixmap.toImage();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    64
    // Validate allocation
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    65
    if(mImage.isNull())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    66
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    67
        throw GfxException(EGfxErrorNoMemory, "Image (QImage) creation failed");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    68
        }    
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    69
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    70
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    71
void ImageImpl::createFromImage(Image* aImage, int aX, int aY, int aWidth, int aHeight)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    72
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    73
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    74
    Q_ASSERT(mImage.isNull());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    75
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    76
    // Check if the copy should be exactly same as the original
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    77
    if((aImage->getWidth() == aWidth) && (aImage->getHeight() == aHeight) || 
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    78
        QRect(aX, aY, aWidth, aHeight).isEmpty())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    79
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    80
        mImage = aImage->toImage();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    81
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    82
    // it's needed to make partial copy of the original
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    83
    else
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    84
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    85
        switch(aImage->type())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    86
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    87
            case EImage:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    88
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    89
                mImage = aImage->getConstImage()->copy(aX, aY, aWidth, aHeight);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    90
                break;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    91
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    92
            case EPixmap:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    93
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    94
                mImage = (aImage->getConstPixmap()->copy(aX, aY, aWidth, aHeight)).toImage();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    95
                break;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    96
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    97
            default:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    98
                throw GfxException(EGfxErrorIllegalArgument, "Unsupported source image type");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    99
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   100
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   101
    if(mImage.isNull())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   102
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   103
        throw GfxException(EGfxErrorNoMemory, "Image (pixmap) creation failed");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   104
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   105
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   106
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   107
void ImageImpl::createFromImageData(ImageDataWrapper* aData)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   108
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   109
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   110
    Q_ASSERT(mImage.isNull());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   111
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   112
    mImage = imageDataToQImage(aData);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   113
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   114
    if(mImage.isNull())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   115
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   116
        throw GfxException(EGfxErrorNoMemory, "Image (QImage) creation failed");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   117
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   118
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   119
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   120
void ImageImpl::createFromRGB(int* aRgbdata, int aWidth, int aHeight, bool aHasAlpha) 
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   121
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   122
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   123
    Q_ASSERT(mImage.isNull());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   124
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   125
    // Create QImage from rgbdata 
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   126
    mImage = QImage(reinterpret_cast<unsigned char*>(aRgbdata), aWidth, aHeight,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   127
        (aHasAlpha ? QImage::Format_ARGB32 : QImage::Format_RGB32));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   128
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   129
    // Validate creation
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   130
    if(mImage.isNull())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   131
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   132
        throw GfxException(EGfxErrorNoMemory, "Image (QImage) creation failed");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   133
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   134
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   135
    
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   136
void ImageImpl::dispose()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   137
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   138
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   139
    delete this;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   140
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   141
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   142
QPaintDevice* ImageImpl::getBindable()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   143
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   144
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   145
    return static_cast<QPaintDevice*>(&mImage);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   146
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   147
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   148
TImageFormat ImageImpl::getFormat()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   149
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   150
    return mapQtFormatToInternal(mImage.format());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   151
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   152
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   153
int ImageImpl::getHeight()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   154
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   155
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   156
    return mImage.height();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   157
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   158
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   159
const QImage* ImageImpl::getConstImage()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   160
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   161
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   162
    return &mImage;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   163
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   164
        
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   165
        
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   166
QImage* ImageImpl::getImage()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   167
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   168
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   169
    return &mImage;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   170
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   171
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   172
const QPixmap* ImageImpl::getConstPixmap()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   173
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   174
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   175
    return NULL;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   176
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   177
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   178
QPixmap* ImageImpl::getPixmap()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   179
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   180
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   181
    return NULL;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   182
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   183
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   184
void ImageImpl::getRgb(int* aRgbdata, int aOffset, int aScanlength, int aX, int aY, int aWidth, int aHeight)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   185
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   186
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   187
    doGetRgb(mImage, aRgbdata, aOffset, aScanlength, aX, aY, aWidth, aHeight);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   188
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   189
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   190
void ImageImpl::getRgb(char* aRgbdata, char* aTransparencyMask,int aOffset, int aScanlength, int aX, int aY, int aWidth, int aHeight, int aFormat)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   191
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   192
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   193
    doGetRgb(mImage, aRgbdata, aTransparencyMask, aOffset, aScanlength, aX, aY, aWidth, aHeight, aFormat);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   194
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   195
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   196
void ImageImpl::getRgb(short* aRgbdata, int aOffset, int aScanlength, int aX, int aY, int aWidth, int aHeight, int aFormat)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   197
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   198
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   199
    doGetRgb(mImage, aRgbdata, aOffset, aScanlength, aX, aY, aWidth, aHeight, aFormat);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   200
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   201
int ImageImpl::getWidth()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   202
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   203
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   204
    return mImage.width();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   205
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   206
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   207
const QImage ImageImpl::toConstImage()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   208
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   209
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   210
    return QImage(mImage);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   211
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   212
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   213
QImage ImageImpl::toImage()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   214
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   215
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   216
    return QImage(mImage);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   217
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   218
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   219
QPixmap ImageImpl::toPixmap()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   220
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   221
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   222
    return QPixmap::fromImage(mImage);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   223
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   224
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   225
void ImageImpl::transform(TTransform aTransform) 
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   226
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   227
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   228
    mImage = mImage.transformed(generateTransformMatrix(aTransform), Qt::FastTransformation);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   229
    // Validate creation
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   230
    if(mImage.isNull())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   231
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   232
        throw GfxException(EGfxErrorNoMemory, "Image (QImage) creation failed");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   233
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   234
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   235
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   236
TImageType ImageImpl::type()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   237
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   238
    return EImage;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   239
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   240
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   241
bool ImageImpl::hasAlphaChannel()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   242
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   243
    GFX_LOG_FUNC_CALL();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   244
    return mImage.hasAlphaChannel();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   245
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   246
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   247
} // namespace GFX
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   248
} // namespace Java