epoc32/include/mw/AknsItemID.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@4
     1
/*
williamr@4
     2
* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies).
williamr@4
     3
* All rights reserved.
williamr@4
     4
* This component and the accompanying materials are made available
williamr@4
     5
* under the terms of "Eclipse Public License v1.0"
williamr@4
     6
* which accompanies this distribution, and is available
williamr@4
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@4
     8
*
williamr@4
     9
* Initial Contributors:
williamr@4
    10
* Nokia Corporation - initial contribution.
williamr@4
    11
*
williamr@4
    12
* Contributors:
williamr@4
    13
*
williamr@4
    14
* Description:  Defines the item id class used to identify the skin items.
williamr@4
    15
*
williamr@4
    16
*/
williamr@4
    17
williamr@4
    18
williamr@4
    19
#ifndef AKNSITEMID_H
williamr@4
    20
#define AKNSITEMID_H
williamr@4
    21
williamr@4
    22
//  INCLUDES
williamr@4
    23
#include <e32std.h>
williamr@4
    24
#include <e32base.h>
williamr@4
    25
williamr@4
    26
// DATA TYPES
williamr@4
    27
williamr@4
    28
/**
williamr@4
    29
* Type enumeration for skin items.
williamr@4
    30
*
williamr@4
    31
* @since 2.0
williamr@4
    32
*/
williamr@4
    33
enum TAknsItemType
williamr@4
    34
    {
williamr@4
    35
    /**
williamr@4
    36
    * Unknown type, used by CAknsItemDef.
williamr@4
    37
    */
williamr@4
    38
    EAknsITUnknown      =0,
williamr@4
    39
williamr@4
    40
    /**
williamr@4
    41
    * Bitmap type, used by CAknsBitmapItemData and CAknsBitmapItemDef.
williamr@4
    42
    */
williamr@4
    43
    EAknsITBitmap       =1,
williamr@4
    44
williamr@4
    45
    /**
williamr@4
    46
    * Masked bitmap type, used by CAknsMaskedBitmapItemData and
williamr@4
    47
    * CAknsMaskedBitmapItemDef.
williamr@4
    48
    */
williamr@4
    49
    EAknsITMaskedBitmap =2,
williamr@4
    50
williamr@4
    51
    /**
williamr@4
    52
    * Color table type, used by CAknsColorTableItemData and
williamr@4
    53
    * CAknsColorTableItemDef.
williamr@4
    54
    */
williamr@4
    55
    EAknsITColorTable   =3,
williamr@4
    56
williamr@4
    57
    /**
williamr@4
    58
    * Image table type, used by CAknsImageTableItemData and
williamr@4
    59
    * CAknsImageTableItemDef.
williamr@4
    60
    */
williamr@4
    61
    EAknsITImageTable   =4,
williamr@4
    62
williamr@4
    63
    /**
williamr@4
    64
    * Image type, used by CAknsImageItemData and CAknsImageItemDef.
williamr@4
    65
    */
williamr@4
    66
    EAknsITImage        =5,
williamr@4
    67
williamr@4
    68
    /**
williamr@4
    69
    * Bitmap animation type, used by CAknsBmpAnimItemData and CAknsBmpAnimItemDef.
williamr@4
    70
    */
williamr@4
    71
    EAknsITBmpAnim      =6,
williamr@4
    72
williamr@4
    73
    /**
williamr@4
    74
    * String property type, used by CAknsStringItemData.
williamr@4
    75
    *
williamr@4
    76
    * @since 2.6
williamr@4
    77
    */
williamr@4
    78
    EAknsITString       =7,
williamr@4
    79
williamr@4
    80
    /**
williamr@4
    81
    * Scalable item effect queue type, used by CAknsEffectQueueItemData.
williamr@4
    82
    *
williamr@4
    83
    * @since 2.8
williamr@4
    84
    */
williamr@4
    85
    EAknsITEffectQueue  =8,
williamr@4
    86
williamr@4
    87
    /**
williamr@4
    88
    * Animation type, used by CAknsAnimationItemData
williamr@4
    89
    */
williamr@4
    90
    EAknsITAnimation    =9
williamr@4
    91
    };
williamr@4
    92
williamr@4
    93
/**
williamr@4
    94
* Image attribute enumeration for image skin items.
williamr@4
    95
*
williamr@4
    96
* @since 2.0
williamr@4
    97
*/
williamr@4
    98
enum TAknsImageAttribute
williamr@4
    99
    {
williamr@4
   100
    /**
williamr@4
   101
    * No attribute defined.
williamr@4
   102
    * @since 2.0
williamr@4
   103
    */
williamr@4
   104
    EAknsImageAttributeNone     =0x00,
williamr@4
   105
williamr@4
   106
    /**
williamr@4
   107
    * Image should be placed acording to the given coordinates.
williamr@4
   108
    * Currently unsupported.
williamr@4
   109
    * @since 2.0
williamr@4
   110
    */
williamr@4
   111
    EAknsImageAttributeCoords   =0x01,
williamr@4
   112
williamr@4
   113
    /**
williamr@4
   114
    * Image size should stretched to the given size.
williamr@4
   115
    * Currently used only with application icons as a search shortcut.
williamr@4
   116
    * @since 2.0
williamr@4
   117
    */
williamr@4
   118
    EAknsImageAttributeSize     =0x02,
williamr@4
   119
williamr@4
   120
    /**
williamr@4
   121
    * Image should be stretched to cover the entire layout area.
williamr@4
   122
    * Aspect ratio is not preserved.
williamr@4
   123
    * @since 2.0
williamr@4
   124
    */
williamr@4
   125
    EAknsImageAttributeStretch  =0x04,
williamr@4
   126
williamr@4
   127
    /**
williamr@4
   128
    * Image should be tiled (in both directions) to fill the area.
williamr@4
   129
    * @since 2.0
williamr@4
   130
    */
williamr@4
   131
    EAknsImageAttributeTile     =0x08,
williamr@4
   132
williamr@4
   133
    /**
williamr@4
   134
    * Image should be aligned according to the given parameter.
williamr@4
   135
    * @since 2.0
williamr@4
   136
    */
williamr@4
   137
    EAknsImageAttributeAlign    =0x10,
williamr@4
   138
williamr@4
   139
    /**
williamr@4
   140
    * Image should be scaled to fill the area maintaining the aspect
williamr@4
   141
    * ratio.
williamr@4
   142
    * Currently unsupported.
williamr@4
   143
    * @since 2.0
williamr@4
   144
    */
williamr@4
   145
    EAknsImageAttributeScale    =0x20,
williamr@4
   146
williamr@4
   147
    /**
williamr@4
   148
    * Image should be tiled in X-axis direction to fill the area.
williamr@4
   149
    * @since 2.8
williamr@4
   150
    */
williamr@4
   151
    EAknsImageAttributeTileX    =0x40,
williamr@4
   152
williamr@4
   153
    /**
williamr@4
   154
    * Image should be tiled in Y-axis direction to fill the area.
williamr@4
   155
    * @since 2.8
williamr@4
   156
    */
williamr@4
   157
    EAknsImageAttributeTileY    =0x80,
williamr@4
   158
williamr@4
   159
    /**
williamr@4
   160
    * The item is already scalability-aware and backward compatibility
williamr@4
   161
    * should not be applied to it.
williamr@4
   162
    * @internal
williamr@4
   163
    * @since 2.8
williamr@4
   164
    */
williamr@4
   165
    EAknsImageAttributeNBC     =0x100
williamr@4
   166
    };
williamr@4
   167
williamr@4
   168
/**
williamr@4
   169
* Image alignment enumeration for image skin items.
williamr@4
   170
*
williamr@4
   171
* @since 2.0
williamr@4
   172
*/
williamr@4
   173
enum TAknsImageAlignment
williamr@4
   174
    {
williamr@4
   175
    EAknsImageAlignNone     =0x00,
williamr@4
   176
    EAknsImageAlignVTop     =0x01,
williamr@4
   177
    EAknsImageAlignVBottom  =0x02,
williamr@4
   178
    EAknsImageAlignVCenter  =0x04,
williamr@4
   179
    EAknsImageAlignHLeft    =0x08,
williamr@4
   180
    EAknsImageAlignHRight   =0x10,
williamr@4
   181
    EAknsImageAlignHCenter  =0x20,
williamr@4
   182
    EAknsImageAlignTL       =EAknsImageAlignVTop|EAknsImageAlignHLeft,
williamr@4
   183
    EAknsImageAlignTR       =EAknsImageAlignVTop|EAknsImageAlignHRight,
williamr@4
   184
    EAknsImageAlignTC       =EAknsImageAlignVTop|EAknsImageAlignHCenter,
williamr@4
   185
    EAknsImageAlignBL       =EAknsImageAlignVBottom|EAknsImageAlignHLeft,
williamr@4
   186
    EAknsImageAlignBR       =EAknsImageAlignVBottom|EAknsImageAlignHRight,
williamr@4
   187
    EAknsImageAlignBC       =EAknsImageAlignVBottom|EAknsImageAlignHCenter,
williamr@4
   188
    EAknsImageAlignCL       =EAknsImageAlignVCenter|EAknsImageAlignHLeft,
williamr@4
   189
    EAknsImageAlignCR       =EAknsImageAlignVCenter|EAknsImageAlignHRight,
williamr@4
   190
    EAknsImageAlignCC       =EAknsImageAlignVCenter|EAknsImageAlignHCenter,
williamr@4
   191
    EAknsImageAlignVMask    =EAknsImageAlignVTop|EAknsImageAlignVBottom|
williamr@4
   192
                             EAknsImageAlignVCenter,
williamr@4
   193
    EAknsImageAlignHMask    =EAknsImageAlignHLeft|EAknsImageAlignHRight|
williamr@4
   194
                             EAknsImageAlignHCenter
williamr@4
   195
    };
williamr@4
   196
williamr@4
   197
williamr@4
   198
// FORWARD DECLARATIONS
williamr@4
   199
williamr@4
   200
class CFbsBitmap;
williamr@4
   201
williamr@4
   202
// CLASS DECLARATION
williamr@4
   203
williamr@4
   204
/**
williamr@4
   205
* Item identifier used to identify items supplied through skin interfaces.
williamr@4
   206
* Item ID consists of two integers: major and minor parts of the ID.
williamr@4
   207
*
williamr@4
   208
* Note that only LinearOrder() member function requires linking against
williamr@4
   209
* the library, all the other methods are inlined.
williamr@4
   210
*
williamr@4
   211
* @lib AknSkinSrv.lib
williamr@4
   212
*
williamr@4
   213
* @since 2.0
williamr@4
   214
*/
williamr@4
   215
class TAknsItemID
williamr@4
   216
    {
williamr@4
   217
    public: // New functions
williamr@4
   218
williamr@4
   219
        /**
williamr@4
   220
        * Sets specified major and minor parts.
williamr@4
   221
        *
williamr@4
   222
        * @param aMajor Major part of the item ID.
williamr@4
   223
        *
williamr@4
   224
        * @param aMinor Minor part of the item ID.
williamr@4
   225
        */
williamr@4
   226
        inline void Set( const TInt aMajor, const TInt aMinor );
williamr@4
   227
williamr@4
   228
        /**
williamr@4
   229
        * Sets specified major and minor parts
williamr@4
   230
        * where major part is given as a UID.
williamr@4
   231
        *
williamr@4
   232
        * @param aMajor Major part of the item ID as a UID.
williamr@4
   233
        *
williamr@4
   234
        * @param aMinor Minor part of the item ID.
williamr@4
   235
        */
williamr@4
   236
        inline void Set( const TUid aMajor, const TInt aMinor );
williamr@4
   237
williamr@4
   238
        /**
williamr@4
   239
        * Sets major and minor parts according to the given item ID.
williamr@4
   240
        *
williamr@4
   241
        * @param aID Item ID to be used to get the values.
williamr@4
   242
        */
williamr@4
   243
        inline void Set( const TAknsItemID& aID );
williamr@4
   244
williamr@4
   245
        /**
williamr@4
   246
        * Determines the order of two TAknsItemID objects.
williamr@4
   247
        * Implements an algorithm that determines the order of two item ID
williamr@4
   248
        * objects.
williamr@4
   249
        *
williamr@4
   250
        * @param aFirst Constant reference to the first object to be compared.
williamr@4
   251
        *
williamr@4
   252
        * @param aSecond Constant reference to the second object to be
williamr@4
   253
        *   compared.
williamr@4
   254
        *
williamr@4
   255
        * @return 0 if the two objects are equal, negative value if the first
williamr@4
   256
        *   object is less than the second and positive value if the first
williamr@4
   257
        *   object is greater than the second.
williamr@4
   258
        *
williamr@4
   259
        * @par Implementation details:
williamr@4
   260
        * To improve binary search, current implementation first compares minor
williamr@4
   261
        *   part and after that the major part of the item ID. Since most lists
williamr@4
   262
        *   have several objects with equal major parts this makes the algorithm
williamr@4
   263
        *   more efficient.
williamr@4
   264
        */
williamr@4
   265
        IMPORT_C static TInt LinearOrder(
williamr@4
   266
            const TAknsItemID& aFirst, const TAknsItemID& aSecond );
williamr@4
   267
williamr@4
   268
    public: // Data
williamr@4
   269
williamr@4
   270
        TInt iMajor;    //!< Major part of the item ID as an integer.
williamr@4
   271
        TInt iMinor;    //!< Minor part of the item ID as an integer.
williamr@4
   272
williamr@4
   273
    };
williamr@4
   274
williamr@4
   275
// DATA TYPES (continued)
williamr@4
   276
williamr@4
   277
/**
williamr@4
   278
* Simple array of item ID objects.
williamr@4
   279
*/
williamr@4
   280
typedef RArray<TAknsItemID> RAknsItemIDArray;
williamr@4
   281
williamr@4
   282
// FUNCTION PROTOTYPES
williamr@4
   283
williamr@4
   284
/**
williamr@4
   285
* C++ equal operator.
williamr@4
   286
* Checks whether two item ID objects (i.e. their major and minor parts)
williamr@4
   287
* have identical content.
williamr@4
   288
*
williamr@4
   289
* @param aFirst First object to be compared.
williamr@4
   290
*
williamr@4
   291
* @param aSecond Second object to be compared.
williamr@4
   292
*
williamr@4
   293
* @return true if objects have identical content, false otherwise.
williamr@4
   294
*/
williamr@4
   295
inline TBool operator==( const TAknsItemID& aFirst, const TAknsItemID& aSecond );
williamr@4
   296
williamr@4
   297
/**
williamr@4
   298
* C++ not equal operator.
williamr@4
   299
* Checks whether two item ID objects (i.e. their major and minor parts)
williamr@4
   300
* have identical content.
williamr@4
   301
*
williamr@4
   302
* @param aFirst First object to be compared.
williamr@4
   303
*
williamr@4
   304
* @param aSecond Second object to be compared.
williamr@4
   305
*
williamr@4
   306
* @return false if objects have identical content, true otherwise.
williamr@4
   307
*/
williamr@4
   308
inline TBool operator!=( const TAknsItemID& aFirst, const TAknsItemID& aSecond );
williamr@4
   309
williamr@4
   310
// INLINED MEMBERS
williamr@4
   311
williamr@4
   312
#include "AknsItemID.inl"
williamr@4
   313
williamr@4
   314
#endif // AKNSITEMID_H
williamr@4
   315
williamr@4
   316
// End of File