uiresources_pub/pictograph_api/inc/AknPictographDrawerInterface.h
changeset 0 05e9090e2422
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiresources_pub/pictograph_api/inc/AknPictographDrawerInterface.h	Thu Dec 17 09:14:12 2009 +0200
@@ -0,0 +1,302 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Pictograph drawer interface.
+*
+*
+*/
+
+
+#ifndef AKN_PICTOGRAPH_DRAWER_INTERFACE_H
+#define AKN_PICTOGRAPH_DRAWER_INTERFACE_H
+
+// INCLUDES
+#include <e32std.h>
+#include <gdi.h>
+
+// CONSTANTS
+
+enum TAknPictographHeight
+    {
+    EHeight12 = 0,
+    EHeight16 = 1,
+    EHeight18 = 2,
+    EHeight24 = 3,
+    EHeight30 = 4
+    };
+
+enum TAknPictographDrawingMode
+    {
+    EDrawingModeNormal = 0,
+    EDrawingModeWhite  = 1
+    };
+
+// FORWARD DECLARATIONS
+
+class CBitmapContext;
+class CFont;
+
+// CLASS DECLARATION
+
+class MAknPictographAnimatorCallBack
+    {
+    public:
+        /**
+        * This function is called when a redraw is needed for drawing
+        * new frames of animated pictographs. It should
+        *
+        * 1) Draw or clear the background of pictographs
+        * 2) If the pictographs are amongst text, draw the text
+        * 3) Draw the pictographs using MAknPictographDrawer interface
+        *
+        * In many cases, it is sufficient to implement this simply by
+        * calling CCoeControl::DrawNow for the appropriate control.
+        */
+        virtual void DrawPictographArea() = 0;
+    };
+
+/**
+* Pictograph drawer interface
+*
+*  @lib N/A
+*  @since 2.6
+*/
+NONSHARABLE_CLASS(MAknPictographDrawer) 
+	{
+    public:  // Constructors and destructor
+
+        /**
+        * Destructor.
+        */
+        inline virtual ~MAknPictographDrawer() {};
+
+    public: // New functions
+
+        /**
+        * Returns a heap descriptor filled with all supported
+        * pictograph codes.
+        * They are sorted in ascending pictograph code order.
+        * Ownership of the returned object is transferred to the caller.
+        *
+        * @since 2.6
+        * @return Heap descriptor filled with all supported
+        *         pictograph codes.
+        */
+        virtual HBufC* SupportedPictographCodesL() const = 0;
+
+        /**
+        * Tells whether the character is in the pictograph code range.
+        *
+        * @since 2.6
+        * @param aCode Character code in Unicode.
+        * @return ETrue if in pictograph code range, EFalse if not.
+        */
+        virtual TBool IsPictograph( TText aCode ) const = 0;
+
+        /**
+        * Tells whether the text contains any pictographs.
+        *
+        * @since 2.6
+        * @param aText Text.
+        * @return ETrue if the text contains any pictographs, EFalse if not.
+        */
+        virtual TBool ContainsPictographs( const TDesC& aText ) const = 0;
+
+        /**
+        * Draws pictograph bitmap in the given position.
+        * This method sets aGc to use CGraphicsContext::ENullBrush.
+        *
+        * @since 2.6
+        * @param aGc Graphics context.
+        * @param aTopLeft Top left coordinates of the rendering position .
+        * @param aCode Pictograph code in Unicode.
+        * @param aHeight Pictograph height.
+        */
+	    virtual void DrawPictograph(
+            CBitmapContext& aGc,
+            const TPoint& aTopLeft,
+            TText aCode,
+            TAknPictographHeight aHeight ) const = 0;
+
+        /**
+        * Draws pictograph bitmap centered in the given rect.
+        * This method sets aGc to use CGraphicsContext::ENullBrush.
+        *
+        * @since 2.6
+        * @param aGc Graphics context.
+        * @param aRect Rectangle, where the pictograph is centered in.
+        * @param aCode Pictograph code in Unicode.
+        * @param aHeight Pictograph height.
+        */
+	    virtual void DrawPictograph(
+            CBitmapContext& aGc,
+            const TRect& aRect,
+            TText aCode,
+            TAknPictographHeight aHeight ) const = 0;
+
+        /**
+        * Draws pictograph bitmap centered in the given rect,
+        * clipped with clipping rect.
+        * This method sets aGc to use CGraphicsContext::ENullBrush.
+        *
+        * @since 2.6
+        * @param aGc Graphics context.
+        * @param aRect Rectangle, where the pictograph is centered in.
+        * @param aClipRect Clipping rectangle.
+        * @param aCode Pictograph code in Unicode.
+        * @param aHeight Pictograph height.
+        */
+	    virtual void DrawPictograph(
+            CBitmapContext& aGc,
+            const TRect& aRect,
+            const TRect& aClipRect,
+            TText aCode,
+            TAknPictographHeight aHeight ) const = 0;
+
+        /**
+        * Draws text using CGraphicsContext::DrawText and then
+        * draws pictographs on top of that.
+        *
+        * Suitable pictograph height is chosen based on aFont.
+        *
+        * The graphics context aGc must be set to use font aFont
+        * before calling this method.
+        *
+        * This method sets aGc to use CGraphicsContext::ENullBrush.
+        *
+        * @since 2.6
+        * @param aGc Graphics context.
+        * @param aFont Used font.
+        * @param aText Text.
+        * @param aPosition Text baseline coordinates of the starting position.
+        */
+        virtual void DrawText(
+            CBitmapContext& aGc,
+            const CFont& aFont,
+            const TDesC& aText,
+            const TPoint& aPosition ) const = 0;
+
+        /**
+        * Draws text using CGraphicsContext::DrawText and then
+        * draws pictographs on top of that.
+        *
+        * Suitable pictograph height is chosen based on aFont.
+        *
+        * The graphics context aGc must be set to use font aFont
+        * before calling this method.
+        *
+        * This method sets aGc to use CGraphicsContext::ENullBrush.
+        *
+        * @since 2.6
+        * @param aGc Graphics context.
+        * @param aFont Used font.
+        * @param aText Text.
+        * @param aBox Rectangle, where the text is rendered.
+        * @param aBaselineOffset Offset from the top of the rectangle to
+        *   the baseline to the text.
+        * @param aAlignment Text alignment.
+        * @param aLeftMargin The left margin for left-aligned text, or the right
+        *   margin for right-aligned text
+        */
+        virtual void DrawText(
+            CBitmapContext& aGc,
+            const CFont& aFont,
+            const TDesC& aText,
+            const TRect& aBox,
+            TInt aBaselineOffset,
+            CGraphicsContext::TTextAlign aAlignment =
+                CGraphicsContext::ELeft,
+            TInt aLeftMargin = 0 ) const = 0;
+
+        /**
+        * Draws pictographs that are encountered in the text.
+        * Suitable pictograph height is chosen based on aFont.
+        * This method sets aGc to use CGraphicsContext::ENullBrush.
+        *
+        * @since 2.6
+        * @param aGc Graphics context.
+        * @param aFont Used font.
+        * @param aText Text.
+        * @param aPosition Text baseline coordinates of the starting position.
+        */
+        virtual void DrawPictographsInText(
+            CBitmapContext& aGc,
+            const CFont& aFont,
+            const TDesC& aText,
+            const TPoint& aPosition ) const = 0;
+
+        /**
+        * Draws pictographs that are encountered in the text.
+        * This method sets aGc to use CGraphicsContext::ENullBrush.
+        *
+        * @since 2.6
+        * @param aGc Graphics context.
+        * @param aFont Used font.
+        * @param aText Text.
+        * @param aBox Rectangle, where the text is rendered.
+        * @param aBaselineOffset Offset from the top of the rectangle to
+        *   the baseline to the text.
+        * @param aAlignment Text alignment.
+        * @param aLeftMargin The left margin for left-aligned text, or the right
+        *   margin for right-aligned text
+        */
+        virtual void DrawPictographsInText(
+            CBitmapContext& aGc,
+            const CFont& aFont,
+            const TDesC& aText,
+            const TRect& aBox,
+            TInt aBaselineOffset,
+            CGraphicsContext::TTextAlign aAlignment =
+                CGraphicsContext::ELeft,
+            TInt aLeftMargin = 0 ) const = 0;
+
+        /**
+        * Tells whether the given pictograph is animated or not.
+        *
+        * @since 2.6
+        * @param aCode Pictograph code in Unicode.
+        */
+        virtual TBool IsAnimated( TText aCode, TAknPictographHeight aHeight ) const = 0;
+
+        /**
+        * Tries to find a matching pictograph height for a given font.
+        *
+        * @since 2.8
+        * @param aFont Used font.
+        * @param aHeight Pictograph height.
+        * @return KErrNone if a supported pictograph height is found that matches
+        *         aFont otherwise returns KErrNotSupported
+        */
+        virtual TInt SelectPictographHeightForFont(
+            const CFont& aFont,
+            TAknPictographHeight& aHeight
+            ) const = 0;
+
+        /**
+        * Sets the pictograph drawing mode for DrawPictograph calls. Other functions e.g.
+        * DrawText, etc are unaffected by this function.
+        * The drawing mode is set to EDrawingModeNormal by default.
+        * Note: When drawing mode EDrawingModeWhite is set only a single DrawPictograph call
+        * is supported per component->Draw() call.
+        *
+        * @since 2.8
+        * @param aDrawingMode the new pictograph drawing mode to be used.
+        * @return the value of the previous pictograph drawing mode.
+        */
+        virtual TAknPictographDrawingMode SetPictographDrawingMode(
+            TAknPictographDrawingMode aDrawingMode) = 0;
+    };
+
+#endif // AKN_PICTOGRAPH_DRAWER_INTERFACE_H
+            
+// End of File