svgtopt/SVG/SVGImpl/inc/SVGGlyphElementImpl.h
author hgs
Wed, 03 Nov 2010 18:56:10 +0200
changeset 46 88edb906c587
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  SVG Implementation header file
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef _INC_CSVGGLYPHELEMENTIMPL_
hgs
parents:
diff changeset
    20
#define _INC_CSVGGLYPHELEMENTIMPL_
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include "SVGElementImpl.h"
hgs
parents:
diff changeset
    23
#include "GfxFloatFixPt.h"
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include "GfxGeneralPath.h"
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
#ifdef SVG_FONTS_INCLUDE
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
class   CSvgDocumentImpl;
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
/**
hgs
parents:
diff changeset
    36
 * Class description goes here.
hgs
parents:
diff changeset
    37
 *
hgs
parents:
diff changeset
    38
 *  @lib SVGEngine.lib
hgs
parents:
diff changeset
    39
 *  @since 1.0
hgs
parents:
diff changeset
    40
 */
hgs
parents:
diff changeset
    41
class CSvgGlyphElementImpl : public CSvgElementImpl
hgs
parents:
diff changeset
    42
    {
hgs
parents:
diff changeset
    43
    public:
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
        // Constructor/deconstructor
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
		/**
hgs
parents:
diff changeset
    48
         * Need method description
hgs
parents:
diff changeset
    49
         *
hgs
parents:
diff changeset
    50
         * @since 1.0
hgs
parents:
diff changeset
    51
         * @param
hgs
parents:
diff changeset
    52
         * @return
hgs
parents:
diff changeset
    53
         */
hgs
parents:
diff changeset
    54
        static CSvgGlyphElementImpl*NewL(  const TUint8 aElemID,
hgs
parents:
diff changeset
    55
                                      CSvgDocumentImpl* aDoc );
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
		/**
hgs
parents:
diff changeset
    58
         * Need method description
hgs
parents:
diff changeset
    59
         *
hgs
parents:
diff changeset
    60
         * @since 1.0
hgs
parents:
diff changeset
    61
         * @param
hgs
parents:
diff changeset
    62
         * @return
hgs
parents:
diff changeset
    63
         */
hgs
parents:
diff changeset
    64
        static CSvgGlyphElementImpl*NewLC(  const TUint8 aElemID,
hgs
parents:
diff changeset
    65
                                       CSvgDocumentImpl* aDoc );
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
	private:
hgs
parents:
diff changeset
    68
		/**
hgs
parents:
diff changeset
    69
         * Need method description
hgs
parents:
diff changeset
    70
         *
hgs
parents:
diff changeset
    71
         * @since 1.0
hgs
parents:
diff changeset
    72
         * @param
hgs
parents:
diff changeset
    73
         * @return
hgs
parents:
diff changeset
    74
         */
hgs
parents:
diff changeset
    75
        void                            ConstructL(  const TUint8 aElemID  );
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
	public:
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
        /**
hgs
parents:
diff changeset
    83
         * Need method description
hgs
parents:
diff changeset
    84
         *
hgs
parents:
diff changeset
    85
         * @since 1.0
hgs
parents:
diff changeset
    86
         * @param
hgs
parents:
diff changeset
    87
         * @return
hgs
parents:
diff changeset
    88
         */
hgs
parents:
diff changeset
    89
        virtual                     ~CSvgGlyphElementImpl();
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
        // From SVG DOM
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
        /**
hgs
parents:
diff changeset
    94
         * Need method description
hgs
parents:
diff changeset
    95
         *
hgs
parents:
diff changeset
    96
         * @since 1.0
hgs
parents:
diff changeset
    97
         * @param
hgs
parents:
diff changeset
    98
         * @return
hgs
parents:
diff changeset
    99
         */
hgs
parents:
diff changeset
   100
        void                        GetUnicode( TDes& aUnicode );
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
hgs
parents:
diff changeset
   103
        /**
hgs
parents:
diff changeset
   104
         * Need method description
hgs
parents:
diff changeset
   105
         *
hgs
parents:
diff changeset
   106
         * @since 1.0
hgs
parents:
diff changeset
   107
         * @param
hgs
parents:
diff changeset
   108
         * @return
hgs
parents:
diff changeset
   109
         */
hgs
parents:
diff changeset
   110
        TFloatFixPt                      GetHorzAdvX();
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
        // SVG Implementation
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
        /**
hgs
parents:
diff changeset
   116
         * Need method description
hgs
parents:
diff changeset
   117
         *
hgs
parents:
diff changeset
   118
         * @since 1.0
hgs
parents:
diff changeset
   119
         * @param
hgs
parents:
diff changeset
   120
         * @return
hgs
parents:
diff changeset
   121
         */
hgs
parents:
diff changeset
   122
        void                        SetUnicodeL( const TDesC& aUnicode );
hgs
parents:
diff changeset
   123
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
        /**
hgs
parents:
diff changeset
   126
         * Need method description
hgs
parents:
diff changeset
   127
         *
hgs
parents:
diff changeset
   128
         * @since 1.0
hgs
parents:
diff changeset
   129
         * @param
hgs
parents:
diff changeset
   130
         * @return
hgs
parents:
diff changeset
   131
         */
hgs
parents:
diff changeset
   132
        void                        SetGlyphNameL( const TDesC& aGlyphName );
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
        /**
hgs
parents:
diff changeset
   136
         * Need method description
hgs
parents:
diff changeset
   137
         *
hgs
parents:
diff changeset
   138
         * @since 1.0
hgs
parents:
diff changeset
   139
         * @param
hgs
parents:
diff changeset
   140
         * @return
hgs
parents:
diff changeset
   141
         */
hgs
parents:
diff changeset
   142
        void                        SetLangCodeL( const TDesC& aLangCode );
hgs
parents:
diff changeset
   143
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
        /**
hgs
parents:
diff changeset
   146
         * Need method description
hgs
parents:
diff changeset
   147
         *
hgs
parents:
diff changeset
   148
         * @since 1.0
hgs
parents:
diff changeset
   149
         * @param
hgs
parents:
diff changeset
   150
         * @return
hgs
parents:
diff changeset
   151
         */
hgs
parents:
diff changeset
   152
        void                        SetPath( const TDesC& aPath );
hgs
parents:
diff changeset
   153
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
		 /**
hgs
parents:
diff changeset
   156
         * Need method description
hgs
parents:
diff changeset
   157
         *
hgs
parents:
diff changeset
   158
         * @since 1.0
hgs
parents:
diff changeset
   159
         * @param
hgs
parents:
diff changeset
   160
         * @return
hgs
parents:
diff changeset
   161
         */
hgs
parents:
diff changeset
   162
        TInt						SetAttributeFloatL(	const TInt aNameId,
hgs
parents:
diff changeset
   163
														const TFloatFixPt aValue );
hgs
parents:
diff changeset
   164
hgs
parents:
diff changeset
   165
		/**
hgs
parents:
diff changeset
   166
         * Need method description
hgs
parents:
diff changeset
   167
         *
hgs
parents:
diff changeset
   168
         * @since 1.0
hgs
parents:
diff changeset
   169
         * @param
hgs
parents:
diff changeset
   170
         * @return
hgs
parents:
diff changeset
   171
         */
hgs
parents:
diff changeset
   172
		TInt						SetAttributeDesL( const TInt aNameId, const TDesC& aValue );
hgs
parents:
diff changeset
   173
hgs
parents:
diff changeset
   174
hgs
parents:
diff changeset
   175
        // From MXmlElementOpt API
hgs
parents:
diff changeset
   176
hgs
parents:
diff changeset
   177
hgs
parents:
diff changeset
   178
        /**
hgs
parents:
diff changeset
   179
         * Need method description
hgs
parents:
diff changeset
   180
         *
hgs
parents:
diff changeset
   181
         * @since 1.0
hgs
parents:
diff changeset
   182
         * @param
hgs
parents:
diff changeset
   183
         * @return
hgs
parents:
diff changeset
   184
         */
hgs
parents:
diff changeset
   185
        TInt                        GetAttributeFloat( const TInt aNameId,
hgs
parents:
diff changeset
   186
                                                        TFloatFixPt& aValue );
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
        /**
hgs
parents:
diff changeset
   189
         * Need method description
hgs
parents:
diff changeset
   190
         *
hgs
parents:
diff changeset
   191
         * @since 1.0
hgs
parents:
diff changeset
   192
         * @param
hgs
parents:
diff changeset
   193
         * @return
hgs
parents:
diff changeset
   194
         */
hgs
parents:
diff changeset
   195
        TInt                        GetAttributePath( const TInt aNameId,
hgs
parents:
diff changeset
   196
                                                      CGfxGeneralPath*& aValue );
hgs
parents:
diff changeset
   197
hgs
parents:
diff changeset
   198
        /**
hgs
parents:
diff changeset
   199
         * Need method description
hgs
parents:
diff changeset
   200
         *
hgs
parents:
diff changeset
   201
         * @since 1.0
hgs
parents:
diff changeset
   202
         * @param
hgs
parents:
diff changeset
   203
         * @return
hgs
parents:
diff changeset
   204
         */
hgs
parents:
diff changeset
   205
        TInt                        SetAttributePathL( const TInt aNameId,
hgs
parents:
diff changeset
   206
                                                       CGfxGeneralPath* aValue );
hgs
parents:
diff changeset
   207
hgs
parents:
diff changeset
   208
		TInt                        SetAttributePathRef( const TInt aNameId,
hgs
parents:
diff changeset
   209
                                                       CGfxGeneralPath*& aValue );
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
hgs
parents:
diff changeset
   212
        /**
hgs
parents:
diff changeset
   213
         * Need method description
hgs
parents:
diff changeset
   214
         *
hgs
parents:
diff changeset
   215
         * @since 1.0
hgs
parents:
diff changeset
   216
         * @param
hgs
parents:
diff changeset
   217
         * @return
hgs
parents:
diff changeset
   218
         */
hgs
parents:
diff changeset
   219
        TInt                        GetAttributeDes( const TInt aNameId,
hgs
parents:
diff changeset
   220
                                                     TPtrC16& aValue );
hgs
parents:
diff changeset
   221
hgs
parents:
diff changeset
   222
        // From MXmlElement API
hgs
parents:
diff changeset
   223
hgs
parents:
diff changeset
   224
hgs
parents:
diff changeset
   225
        /**
hgs
parents:
diff changeset
   226
         * Need method description
hgs
parents:
diff changeset
   227
         *
hgs
parents:
diff changeset
   228
         * @since 1.0
hgs
parents:
diff changeset
   229
         * @param
hgs
parents:
diff changeset
   230
         * @return
hgs
parents:
diff changeset
   231
         */
hgs
parents:
diff changeset
   232
        TInt                        SetAttributeL( const TDesC& aName,
hgs
parents:
diff changeset
   233
                                                   const TDesC& aValue );
hgs
parents:
diff changeset
   234
        // From CSvgElementImpl
hgs
parents:
diff changeset
   235
hgs
parents:
diff changeset
   236
hgs
parents:
diff changeset
   237
        /**
hgs
parents:
diff changeset
   238
         * Need method description
hgs
parents:
diff changeset
   239
         *
hgs
parents:
diff changeset
   240
         * @since 1.0
hgs
parents:
diff changeset
   241
         * @param
hgs
parents:
diff changeset
   242
         * @return
hgs
parents:
diff changeset
   243
         */
hgs
parents:
diff changeset
   244
        MXmlElement*                CloneL(MXmlElement* aParentElement);
hgs
parents:
diff changeset
   245
hgs
parents:
diff changeset
   246
hgs
parents:
diff changeset
   247
        /**
hgs
parents:
diff changeset
   248
         * Need method description
hgs
parents:
diff changeset
   249
         *
hgs
parents:
diff changeset
   250
         * @since 1.0
hgs
parents:
diff changeset
   251
         * @param
hgs
parents:
diff changeset
   252
         * @return
hgs
parents:
diff changeset
   253
         */
hgs
parents:
diff changeset
   254
        TBool                       DrawL( CGfx2dGc* aGc,
hgs
parents:
diff changeset
   255
                                           CSvgElementImpl* aElement );
hgs
parents:
diff changeset
   256
hgs
parents:
diff changeset
   257
hgs
parents:
diff changeset
   258
        /**
hgs
parents:
diff changeset
   259
         * Need method description
hgs
parents:
diff changeset
   260
         *
hgs
parents:
diff changeset
   261
         * @since 1.0
hgs
parents:
diff changeset
   262
         * @param
hgs
parents:
diff changeset
   263
         * @return
hgs
parents:
diff changeset
   264
         */
hgs
parents:
diff changeset
   265
        void                        GetBBox( TGfxRectangle2D& aBbox );
hgs
parents:
diff changeset
   266
hgs
parents:
diff changeset
   267
        /**
hgs
parents:
diff changeset
   268
         * Need method description
hgs
parents:
diff changeset
   269
         *
hgs
parents:
diff changeset
   270
         * @since 1.0
hgs
parents:
diff changeset
   271
         * @param
hgs
parents:
diff changeset
   272
         * @return
hgs
parents:
diff changeset
   273
         */
hgs
parents:
diff changeset
   274
        virtual void GetUnscaledBBox( TGfxRectangle2D& /*aBbox*/ );
hgs
parents:
diff changeset
   275
hgs
parents:
diff changeset
   276
        CGfxGeneralPath* GetPathAttribute(TInt aAttributeId);
hgs
parents:
diff changeset
   277
        void SetPathAttribute(TInt aAttributeId, CGfxGeneralPath* aPathHandle);
hgs
parents:
diff changeset
   278
hgs
parents:
diff changeset
   279
		void Print( TBool aIsEncodeOn );
hgs
parents:
diff changeset
   280
		
hgs
parents:
diff changeset
   281
    private:
hgs
parents:
diff changeset
   282
hgs
parents:
diff changeset
   283
        HBufC*                      iUnicode;
hgs
parents:
diff changeset
   284
hgs
parents:
diff changeset
   285
        HBufC*                      iGlyphName;
hgs
parents:
diff changeset
   286
hgs
parents:
diff changeset
   287
        TFloatFixPt                      iHorzAdvX;
hgs
parents:
diff changeset
   288
hgs
parents:
diff changeset
   289
        HBufC*                      iLangCode;
hgs
parents:
diff changeset
   290
hgs
parents:
diff changeset
   291
        //    TInt16 iPathLength;
hgs
parents:
diff changeset
   292
hgs
parents:
diff changeset
   293
        CGfxGeneralPath*            iShape;
hgs
parents:
diff changeset
   294
hgs
parents:
diff changeset
   295
		TBool	iOwnedPath;
hgs
parents:
diff changeset
   296
hgs
parents:
diff changeset
   297
hgs
parents:
diff changeset
   298
        /**
hgs
parents:
diff changeset
   299
         * Need method description
hgs
parents:
diff changeset
   300
         *
hgs
parents:
diff changeset
   301
         * @since 1.0
hgs
parents:
diff changeset
   302
         * @param
hgs
parents:
diff changeset
   303
         * @return
hgs
parents:
diff changeset
   304
         */
hgs
parents:
diff changeset
   305
                                    CSvgGlyphElementImpl( CSvgDocumentImpl* aDoc );
hgs
parents:
diff changeset
   306
    };
hgs
parents:
diff changeset
   307
hgs
parents:
diff changeset
   308
#endif /* SVG_FONTS_INCLUDE */
hgs
parents:
diff changeset
   309
hgs
parents:
diff changeset
   310
#endif /* _INC_CSVGGLYPHELEMENTIMPL_ */