epoc32/include/mw/aknpictographdrawerinterface.h
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
parent 1 666f914201fb
child 4 837f303aceeb
permissions -rw-r--r--
Final list of Symbian^2 public API header files
williamr@2
     1
/*
williamr@2
     2
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     3
* All rights reserved.
williamr@2
     4
* This component and the accompanying materials are made available
williamr@2
     5
* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2
     6
* which accompanies this distribution, and is available
williamr@2
     7
* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2
     8
*
williamr@2
     9
* Initial Contributors:
williamr@2
    10
* Nokia Corporation - initial contribution.
williamr@2
    11
*
williamr@2
    12
* Contributors:
williamr@2
    13
*
williamr@2
    14
* Description:  Pictograph drawer interface.
williamr@2
    15
*
williamr@2
    16
*
williamr@2
    17
*/
williamr@2
    18
williamr@2
    19
williamr@2
    20
#ifndef AKN_PICTOGRAPH_DRAWER_INTERFACE_H
williamr@2
    21
#define AKN_PICTOGRAPH_DRAWER_INTERFACE_H
williamr@2
    22
williamr@2
    23
// INCLUDES
williamr@2
    24
#include <e32std.h>
williamr@2
    25
#include <gdi.h>
williamr@2
    26
williamr@2
    27
// CONSTANTS
williamr@2
    28
williamr@2
    29
enum TAknPictographHeight
williamr@2
    30
    {
williamr@2
    31
    EHeight12 = 0,
williamr@2
    32
    EHeight16 = 1,
williamr@2
    33
    EHeight18 = 2,
williamr@2
    34
    EHeight24 = 3,
williamr@2
    35
    EHeight30 = 4
williamr@2
    36
    };
williamr@2
    37
williamr@2
    38
enum TAknPictographDrawingMode
williamr@2
    39
    {
williamr@2
    40
    EDrawingModeNormal = 0,
williamr@2
    41
    EDrawingModeWhite  = 1
williamr@2
    42
    };
williamr@2
    43
williamr@2
    44
// FORWARD DECLARATIONS
williamr@2
    45
williamr@2
    46
class CBitmapContext;
williamr@2
    47
class CFont;
williamr@2
    48
williamr@2
    49
// CLASS DECLARATION
williamr@2
    50
williamr@2
    51
class MAknPictographAnimatorCallBack
williamr@2
    52
    {
williamr@2
    53
    public:
williamr@2
    54
        /**
williamr@2
    55
        * This function is called when a redraw is needed for drawing
williamr@2
    56
        * new frames of animated pictographs. It should
williamr@2
    57
        *
williamr@2
    58
        * 1) Draw or clear the background of pictographs
williamr@2
    59
        * 2) If the pictographs are amongst text, draw the text
williamr@2
    60
        * 3) Draw the pictographs using MAknPictographDrawer interface
williamr@2
    61
        *
williamr@2
    62
        * In many cases, it is sufficient to implement this simply by
williamr@2
    63
        * calling CCoeControl::DrawNow for the appropriate control.
williamr@2
    64
        */
williamr@2
    65
        virtual void DrawPictographArea() = 0;
williamr@2
    66
    };
williamr@2
    67
williamr@2
    68
/**
williamr@2
    69
* Pictograph drawer interface
williamr@2
    70
*
williamr@2
    71
*  @lib N/A
williamr@2
    72
*  @since 2.6
williamr@2
    73
*/
williamr@2
    74
NONSHARABLE_CLASS(MAknPictographDrawer) 
williamr@2
    75
	{
williamr@2
    76
    public:  // Constructors and destructor
williamr@2
    77
williamr@2
    78
        /**
williamr@2
    79
        * Destructor.
williamr@2
    80
        */
williamr@2
    81
        inline virtual ~MAknPictographDrawer() {};
williamr@2
    82
williamr@2
    83
    public: // New functions
williamr@2
    84
williamr@2
    85
        /**
williamr@2
    86
        * Returns a heap descriptor filled with all supported
williamr@2
    87
        * pictograph codes.
williamr@2
    88
        * They are sorted in ascending pictograph code order.
williamr@2
    89
        * Ownership of the returned object is transferred to the caller.
williamr@2
    90
        *
williamr@2
    91
        * @since 2.6
williamr@2
    92
        * @return Heap descriptor filled with all supported
williamr@2
    93
        *         pictograph codes.
williamr@2
    94
        */
williamr@2
    95
        virtual HBufC* SupportedPictographCodesL() const = 0;
williamr@2
    96
williamr@2
    97
        /**
williamr@2
    98
        * Tells whether the character is in the pictograph code range.
williamr@2
    99
        *
williamr@2
   100
        * @since 2.6
williamr@2
   101
        * @param aCode Character code in Unicode.
williamr@2
   102
        * @return ETrue if in pictograph code range, EFalse if not.
williamr@2
   103
        */
williamr@2
   104
        virtual TBool IsPictograph( TText aCode ) const = 0;
williamr@2
   105
williamr@2
   106
        /**
williamr@2
   107
        * Tells whether the text contains any pictographs.
williamr@2
   108
        *
williamr@2
   109
        * @since 2.6
williamr@2
   110
        * @param aText Text.
williamr@2
   111
        * @return ETrue if the text contains any pictographs, EFalse if not.
williamr@2
   112
        */
williamr@2
   113
        virtual TBool ContainsPictographs( const TDesC& aText ) const = 0;
williamr@2
   114
williamr@2
   115
        /**
williamr@2
   116
        * Draws pictograph bitmap in the given position.
williamr@2
   117
        * This method sets aGc to use CGraphicsContext::ENullBrush.
williamr@2
   118
        *
williamr@2
   119
        * @since 2.6
williamr@2
   120
        * @param aGc Graphics context.
williamr@2
   121
        * @param aTopLeft Top left coordinates of the rendering position .
williamr@2
   122
        * @param aCode Pictograph code in Unicode.
williamr@2
   123
        * @param aHeight Pictograph height.
williamr@2
   124
        */
williamr@2
   125
	    virtual void DrawPictograph(
williamr@2
   126
            CBitmapContext& aGc,
williamr@2
   127
            const TPoint& aTopLeft,
williamr@2
   128
            TText aCode,
williamr@2
   129
            TAknPictographHeight aHeight ) const = 0;
williamr@2
   130
williamr@2
   131
        /**
williamr@2
   132
        * Draws pictograph bitmap centered in the given rect.
williamr@2
   133
        * This method sets aGc to use CGraphicsContext::ENullBrush.
williamr@2
   134
        *
williamr@2
   135
        * @since 2.6
williamr@2
   136
        * @param aGc Graphics context.
williamr@2
   137
        * @param aRect Rectangle, where the pictograph is centered in.
williamr@2
   138
        * @param aCode Pictograph code in Unicode.
williamr@2
   139
        * @param aHeight Pictograph height.
williamr@2
   140
        */
williamr@2
   141
	    virtual void DrawPictograph(
williamr@2
   142
            CBitmapContext& aGc,
williamr@2
   143
            const TRect& aRect,
williamr@2
   144
            TText aCode,
williamr@2
   145
            TAknPictographHeight aHeight ) const = 0;
williamr@2
   146
williamr@2
   147
        /**
williamr@2
   148
        * Draws pictograph bitmap centered in the given rect,
williamr@2
   149
        * clipped with clipping rect.
williamr@2
   150
        * This method sets aGc to use CGraphicsContext::ENullBrush.
williamr@2
   151
        *
williamr@2
   152
        * @since 2.6
williamr@2
   153
        * @param aGc Graphics context.
williamr@2
   154
        * @param aRect Rectangle, where the pictograph is centered in.
williamr@2
   155
        * @param aClipRect Clipping rectangle.
williamr@2
   156
        * @param aCode Pictograph code in Unicode.
williamr@2
   157
        * @param aHeight Pictograph height.
williamr@2
   158
        */
williamr@2
   159
	    virtual void DrawPictograph(
williamr@2
   160
            CBitmapContext& aGc,
williamr@2
   161
            const TRect& aRect,
williamr@2
   162
            const TRect& aClipRect,
williamr@2
   163
            TText aCode,
williamr@2
   164
            TAknPictographHeight aHeight ) const = 0;
williamr@2
   165
williamr@2
   166
        /**
williamr@2
   167
        * Draws text using CGraphicsContext::DrawText and then
williamr@2
   168
        * draws pictographs on top of that.
williamr@2
   169
        *
williamr@2
   170
        * Suitable pictograph height is chosen based on aFont.
williamr@2
   171
        *
williamr@2
   172
        * The graphics context aGc must be set to use font aFont
williamr@2
   173
        * before calling this method.
williamr@2
   174
        *
williamr@2
   175
        * This method sets aGc to use CGraphicsContext::ENullBrush.
williamr@2
   176
        *
williamr@2
   177
        * @since 2.6
williamr@2
   178
        * @param aGc Graphics context.
williamr@2
   179
        * @param aFont Used font.
williamr@2
   180
        * @param aText Text.
williamr@2
   181
        * @param aPosition Text baseline coordinates of the starting position.
williamr@2
   182
        */
williamr@2
   183
        virtual void DrawText(
williamr@2
   184
            CBitmapContext& aGc,
williamr@2
   185
            const CFont& aFont,
williamr@2
   186
            const TDesC& aText,
williamr@2
   187
            const TPoint& aPosition ) const = 0;
williamr@2
   188
williamr@2
   189
        /**
williamr@2
   190
        * Draws text using CGraphicsContext::DrawText and then
williamr@2
   191
        * draws pictographs on top of that.
williamr@2
   192
        *
williamr@2
   193
        * Suitable pictograph height is chosen based on aFont.
williamr@2
   194
        *
williamr@2
   195
        * The graphics context aGc must be set to use font aFont
williamr@2
   196
        * before calling this method.
williamr@2
   197
        *
williamr@2
   198
        * This method sets aGc to use CGraphicsContext::ENullBrush.
williamr@2
   199
        *
williamr@2
   200
        * @since 2.6
williamr@2
   201
        * @param aGc Graphics context.
williamr@2
   202
        * @param aFont Used font.
williamr@2
   203
        * @param aText Text.
williamr@2
   204
        * @param aBox Rectangle, where the text is rendered.
williamr@2
   205
        * @param aBaselineOffset Offset from the top of the rectangle to
williamr@2
   206
        *   the baseline to the text.
williamr@2
   207
        * @param aAlignment Text alignment.
williamr@2
   208
        * @param aLeftMargin The left margin for left-aligned text, or the right
williamr@2
   209
        *   margin for right-aligned text
williamr@2
   210
        */
williamr@2
   211
        virtual void DrawText(
williamr@2
   212
            CBitmapContext& aGc,
williamr@2
   213
            const CFont& aFont,
williamr@2
   214
            const TDesC& aText,
williamr@2
   215
            const TRect& aBox,
williamr@2
   216
            TInt aBaselineOffset,
williamr@2
   217
            CGraphicsContext::TTextAlign aAlignment =
williamr@2
   218
                CGraphicsContext::ELeft,
williamr@2
   219
            TInt aLeftMargin = 0 ) const = 0;
williamr@2
   220
williamr@2
   221
        /**
williamr@2
   222
        * Draws pictographs that are encountered in the text.
williamr@2
   223
        * Suitable pictograph height is chosen based on aFont.
williamr@2
   224
        * This method sets aGc to use CGraphicsContext::ENullBrush.
williamr@2
   225
        *
williamr@2
   226
        * @since 2.6
williamr@2
   227
        * @param aGc Graphics context.
williamr@2
   228
        * @param aFont Used font.
williamr@2
   229
        * @param aText Text.
williamr@2
   230
        * @param aPosition Text baseline coordinates of the starting position.
williamr@2
   231
        */
williamr@2
   232
        virtual void DrawPictographsInText(
williamr@2
   233
            CBitmapContext& aGc,
williamr@2
   234
            const CFont& aFont,
williamr@2
   235
            const TDesC& aText,
williamr@2
   236
            const TPoint& aPosition ) const = 0;
williamr@2
   237
williamr@2
   238
        /**
williamr@2
   239
        * Draws pictographs that are encountered in the text.
williamr@2
   240
        * This method sets aGc to use CGraphicsContext::ENullBrush.
williamr@2
   241
        *
williamr@2
   242
        * @since 2.6
williamr@2
   243
        * @param aGc Graphics context.
williamr@2
   244
        * @param aFont Used font.
williamr@2
   245
        * @param aText Text.
williamr@2
   246
        * @param aBox Rectangle, where the text is rendered.
williamr@2
   247
        * @param aBaselineOffset Offset from the top of the rectangle to
williamr@2
   248
        *   the baseline to the text.
williamr@2
   249
        * @param aAlignment Text alignment.
williamr@2
   250
        * @param aLeftMargin The left margin for left-aligned text, or the right
williamr@2
   251
        *   margin for right-aligned text
williamr@2
   252
        */
williamr@2
   253
        virtual void DrawPictographsInText(
williamr@2
   254
            CBitmapContext& aGc,
williamr@2
   255
            const CFont& aFont,
williamr@2
   256
            const TDesC& aText,
williamr@2
   257
            const TRect& aBox,
williamr@2
   258
            TInt aBaselineOffset,
williamr@2
   259
            CGraphicsContext::TTextAlign aAlignment =
williamr@2
   260
                CGraphicsContext::ELeft,
williamr@2
   261
            TInt aLeftMargin = 0 ) const = 0;
williamr@2
   262
williamr@2
   263
        /**
williamr@2
   264
        * Tells whether the given pictograph is animated or not.
williamr@2
   265
        *
williamr@2
   266
        * @since 2.6
williamr@2
   267
        * @param aCode Pictograph code in Unicode.
williamr@2
   268
        */
williamr@2
   269
        virtual TBool IsAnimated( TText aCode, TAknPictographHeight aHeight ) const = 0;
williamr@2
   270
williamr@2
   271
        /**
williamr@2
   272
        * Tries to find a matching pictograph height for a given font.
williamr@2
   273
        *
williamr@2
   274
        * @since 2.8
williamr@2
   275
        * @param aFont Used font.
williamr@2
   276
        * @param aHeight Pictograph height.
williamr@2
   277
        * @return KErrNone if a supported pictograph height is found that matches
williamr@2
   278
        *         aFont otherwise returns KErrNotSupported
williamr@2
   279
        */
williamr@2
   280
        virtual TInt SelectPictographHeightForFont(
williamr@2
   281
            const CFont& aFont,
williamr@2
   282
            TAknPictographHeight& aHeight
williamr@2
   283
            ) const = 0;
williamr@2
   284
williamr@2
   285
        /**
williamr@2
   286
        * Sets the pictograph drawing mode for DrawPictograph calls. Other functions e.g.
williamr@2
   287
        * DrawText, etc are unaffected by this function.
williamr@2
   288
        * The drawing mode is set to EDrawingModeNormal by default.
williamr@2
   289
        * Note: When drawing mode EDrawingModeWhite is set only a single DrawPictograph call
williamr@2
   290
        * is supported per component->Draw() call.
williamr@2
   291
        *
williamr@2
   292
        * @since 2.8
williamr@2
   293
        * @param aDrawingMode the new pictograph drawing mode to be used.
williamr@2
   294
        * @return the value of the previous pictograph drawing mode.
williamr@2
   295
        */
williamr@2
   296
        virtual TAknPictographDrawingMode SetPictographDrawingMode(
williamr@2
   297
            TAknPictographDrawingMode aDrawingMode) = 0;
williamr@2
   298
    };
williamr@2
   299
williamr@2
   300
#endif // AKN_PICTOGRAPH_DRAWER_INTERFACE_H
williamr@2
   301
            
williamr@2
   302
// End of File