javauis/m2g_qt/inc/M2GUtils.h
author hgs
Fri, 23 Jul 2010 12:27:20 +0300
changeset 56 abc41079b313
permissions -rw-r--r--
v2.2.7_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     1
/*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     2
* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     3
* All rights reserved.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     8
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    11
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    12
* Contributors:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    13
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    14
* Description:  General functions
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    15
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    16
*/
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    17
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    18
#ifndef M2GUTILS_H
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    19
#define M2GUTILS_H
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    20
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    21
// INCLUDE FILES
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    22
#include <gdi.h> // DisplayMode, Draw, BitBlt
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    23
#include <fbs.h> // CFbsBitmap
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    24
#include "M2GGeneral.h"
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    25
#include <QPixmap>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    26
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    27
M2G_NS_START
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    28
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    29
// CONSTANTS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    30
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    31
// DATA TYPES
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    32
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    33
// MACROS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    34
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    35
// FORWARD DECLARATIONS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    36
class CFbsBitmapDevice;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    37
class CFbsBitGc;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    38
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    39
// FUNCTION PROTOTYPES
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    40
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    41
// CLASS DECLARATION
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    42
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    43
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    44
//For UI Thread Execution.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    45
#include "CSynchronization.h"
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    46
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    47
#define M2G_DO_LOCK CSynchronization::InstanceL()->Lock();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    48
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    49
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    50
//TODO Have to Raise Exception in case we find any error.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    51
#define M2G_DO_UNLOCK(aEnv) {\
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    52
                    TInt errorCode = CSynchronization::InstanceL()->GetErrorCode();\
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    53
                    CSynchronization::InstanceL()->Unlock();\
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    54
                    }\
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    55
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    56
/**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    57
 * @class M2GBitmapUtils
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    58
 * @brief Static methods for alpha blending and bitmaps
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    59
 */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    60
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    61
class M2GBitmapUtils
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    62
{
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    63
public: // STATIC METHODS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    64
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    65
     * Blits two bitmap
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    66
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    67
     * @param aTarget Target bitmap.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    68
     * @param aSource Source bitmap.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    69
     * @param aPoint Position for the top left corner of the bitmap.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    70
     * @param aRect  Rectangle defining the piece of the bitmap to be drawn.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    71
     * @param aSourceMask Mask.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    72
     * @return M2G_OK if ok
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    73
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    74
    static TInt BitBlt(CFbsBitmap& aTarget,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    75
                       const CFbsBitmap& aSource,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    76
                       const TPoint& aPoint,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    77
                       const TRect* aRect = NULL,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    78
                       const CFbsBitmap* aSourceMask = NULL);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    79
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    80
    static TInt BitBlt(CBitmapContext& aTargetContext,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    81
                       const CFbsBitmap& aSource,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    82
                       const TPoint& aPoint,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    83
                       const TRect* aRect,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    84
                       const CFbsBitmap* aSourceMask,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    85
                       /*MSwtClient* aClientHandle,*/
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    86
                       TBool aUseNativeClear = EFalse);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    87
    
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    88
    static TInt BitQBlt(QImage& aTargetQimage,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    89
                                const QImage& aSourceQimage,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    90
                                const TPoint& aPoint,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    91
                                const TRect* aRect,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    92
                                const CFbsBitmap* aSourceMask);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    93
    
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    94
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    95
     * Checks if two bitmap are equal.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    96
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    97
     * @param aLhs Left side bitmap
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    98
     * @param aRhs Right side bitmap
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    99
     * @return ETrue if bitmaps are equal.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   100
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   101
    inline static TBool Equals(const CFbsBitmap& aLhs, const CFbsBitmap& aRhs)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   102
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   103
        return (aLhs.SizeInPixels() == aRhs.SizeInPixels());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   104
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   105
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   106
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   107
     * Checks if a bitmap has same values as given values.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   108
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   109
     * @param aBitmap Bitmap
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   110
     * @param aSz Size in pixels.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   111
     * @param aMode Display mode.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   112
     * @return ETrue if bitmaps are equal.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   113
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   114
    inline static TBool Equals(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   115
        const CFbsBitmap& aBitmap,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   116
        const TSize& aSz,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   117
        const TDisplayMode* aMode)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   118
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   119
        return (((aBitmap.SizeInPixels() == aSz) &&
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   120
                 ((aMode == NULL) || (aBitmap.DisplayMode() == *aMode))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   121
                ) ? ETrue : EFalse);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   122
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   123
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   124
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   125
     * Return byte per pixel
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   126
     * @since Series S60 3.1
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   127
     * @param aBitmap
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   128
     * @param aRhs Right side bitmap
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   129
     * @return ETrue if bitmaps are equal.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   130
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   131
    inline static TInt BytesPerPixel(const CFbsBitmap& aBitmap)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   132
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   133
        switch (aBitmap.DisplayMode())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   134
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   135
        case EGray256 :
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   136
        case EColor256 :
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   137
            return 1;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   138
        case EColor64K :
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   139
            return 2;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   140
        case EColor16M :
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   141
        case EColor16MU :
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   142
        case EColor16MA :
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   143
            return 4;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   144
        default :
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   145
            return 0;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   146
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   147
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   148
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   149
};
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   150
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   151
/**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   152
 * @class TM2GRenderRect
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   153
 * @brief Class for handling rendering rectangle
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   154
 */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   155
class TM2GRenderRect : public TRect
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   156
{
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   157
private:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   158
    // NOTE ELength should be always the last one and indexing
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   159
    // should start from 0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   160
    enum TArrayIndexes
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   161
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   162
        EAnchorX = 0,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   163
        EAnchorY = 1,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   164
        EClipX = 2,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   165
        EClipY = 3,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   166
        EClipW = 4,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   167
        EClipH = 5,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   168
        ELength
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   169
    };
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   170
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   171
public: // METHODS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   172
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   173
     * Ctor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   174
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   175
     * @param aAnchorX X anchor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   176
     * @param aAnchorY Y anchor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   177
     * @param aClipX Clip x
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   178
     * @param aClipY Clip y
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   179
     * @param aClipWidth Clip width
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   180
     * @param aClipHeight Clip height
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   181
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   182
    TM2GRenderRect(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   183
        TInt aAnchorX, TInt aAnchorY,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   184
        TInt aClipX, TInt aClipY,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   185
        TInt aClipW, TInt aClipH);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   186
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   187
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   188
     * Ctor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   189
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   190
     * @param aDimensions Dimensions. @see TArrayIndexes.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   191
     * @param aLength Array length
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   192
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   193
    TM2GRenderRect(TInt* aDimensions, TInt aLength);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   194
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   195
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   196
     * Copy ctor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   197
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   198
     * @param aRd
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   199
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   200
    TM2GRenderRect(const TM2GRenderRect& aRd);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   201
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   202
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   203
     * Assignment operator
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   204
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   205
     * @param aRd
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   206
     * @return TM2GRenderRect
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   207
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   208
    TM2GRenderRect& operator=(const TM2GRenderRect& aRd);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   209
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   210
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   211
     * Dtor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   212
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   213
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   214
    virtual ~TM2GRenderRect();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   215
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   216
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   217
     * Returns x anchor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   218
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   219
     * @return X anchor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   220
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   221
    inline TInt GetAnchorX()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   222
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   223
        return iAnchorX;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   224
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   225
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   226
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   227
     * Returns y anchor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   228
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   229
     * @return Y anchor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   230
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   231
    inline TInt GetAnchorY()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   232
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   233
        return iAnchorY;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   234
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   235
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   236
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   237
     * Returns clip height
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   238
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   239
     * @return Clip height
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   240
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   241
    inline TInt GetClipH()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   242
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   243
        return Height();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   244
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   245
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   246
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   247
     * Returns x clip
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   248
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   249
     * @return X clip
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   250
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   251
    inline TInt GetClipX()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   252
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   253
        return iTl.iX;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   254
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   255
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   256
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   257
     * Returns y clip
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   258
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   259
     * @return Y clip
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   260
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   261
    inline TInt GetClipY()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   262
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   263
        return iTl.iY;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   264
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   265
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   266
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   267
     * Returns clip width
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   268
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   269
     * @return Clip width
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   270
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   271
    inline TInt GetClipW()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   272
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   273
        return Width();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   274
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   275
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   276
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   277
     * Sets x anchor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   278
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   279
     * @param aX X anchor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   280
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   281
    inline void SetAnchorX(TInt aX)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   282
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   283
        iAnchorX = aX;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   284
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   285
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   286
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   287
     * Sets y anchor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   288
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   289
     * @param aY Y anchor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   290
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   291
    inline void SetAnchorY(TInt aY)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   292
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   293
        iAnchorY = aY;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   294
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   295
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   296
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   297
     * Sets clip height
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   298
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   299
     * @param aH Clip height
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   300
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   301
    inline void SetClipH(TInt aH)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   302
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   303
        SetHeight(aH);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   304
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   305
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   306
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   307
     * Sets x clip
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   308
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   309
     * @param aX X clip
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   310
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   311
    inline void SetClipX(TInt aX)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   312
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   313
        iTl.iX = aX;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   314
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   315
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   316
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   317
     * Sets y clip
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   318
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   319
     * @param aY Y clip
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   320
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   321
    inline void SetClipY(TInt aY)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   322
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   323
        iTl.iY = aY;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   324
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   325
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   326
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   327
     * Sets clip width
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   328
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   329
     * @param aW Clip width
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   330
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   331
    inline void SetClipW(TInt aW)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   332
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   333
        SetWidth(aW);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   334
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   335
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   336
public: // STATIC METHODS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   337
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   338
     * Gets region size
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   339
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   340
     * @param aRect Render dimensions
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   341
     * @param aSz Source surface size
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   342
     * @return Region size to be paint
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   343
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   344
    static TSize GetRegionSizeInPixels(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   345
        TM2GRenderRect& aRect,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   346
        const TSize& aSz);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   347
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   348
public: // VARIABLES
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   349
    TInt iAnchorX;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   350
    TInt iAnchorY;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   351
};
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   352
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   353
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   354
/**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   355
 * @class TM2GBitmapLock
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   356
 * @brief Bitmap autolocker
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   357
 */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   358
class TM2GBitmapLock
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   359
{
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   360
public: // METHODS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   361
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   362
     * Ctor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   363
     * @param aBitmap Bitmap
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   364
     * @param aLock If ETrue then bitmap is locked by ctor.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   365
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   366
    TM2GBitmapLock(const CFbsBitmap* aBitmap, TBool aLock = ETrue);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   367
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   368
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   369
     * Dtor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   370
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   371
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   372
    virtual ~TM2GBitmapLock();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   373
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   374
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   375
     * Locks bitmap heap
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   376
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   377
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   378
    void Lock();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   379
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   380
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   381
     * Unlocks bitmap heap
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   382
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   383
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   384
    void Unlock();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   385
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   386
protected: // METHODS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   387
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   388
     * Copy ctor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   389
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   390
     * @param aRd
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   391
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   392
    TM2GBitmapLock(const TM2GBitmapLock& aRd);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   393
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   394
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   395
     * Assignment operator
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   396
     * @since Series S60 3.0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   397
     * @param aRd
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   398
     * @return TM2GBitmapLock
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   399
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   400
    TM2GBitmapLock& operator=(const TM2GBitmapLock& aRd);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   401
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   402
public: // VARIABLES
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   403
    const CFbsBitmap* iBitmap;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   404
    TBool iIsLocked;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   405
};
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   406
class TSWTBitBlt/*: public MSwtFunctor*/
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   407
{
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   408
public:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   409
    TSWTBitBlt(CBitmapContext& aTargetContext,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   410
               const TPoint& aPoint,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   411
               const CFbsBitmap* aBitmap,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   412
               const TRect* aSourceRect,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   413
               const CFbsBitmap* aMaskBitmap,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   414
               TBool aUseNativeClear);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   415
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   416
    void operator()() const;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   417
    CBitmapContext& iTargetContext;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   418
    const TPoint iPoint;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   419
    const CFbsBitmap* iBitmap;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   420
    const TRect* iRect;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   421
    const CFbsBitmap* iMaskBitmap;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   422
    TBool iUseNativeClear;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   423
};
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   424
M2G_NS_END
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   425
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   426
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   427
#endif // M2GUTILS_H