diff -r 000000000000 -r d46562c3d99d svgtopt/SVG/SVGImpl/src/SVGFontElementImpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/svgtopt/SVG/SVGImpl/src/SVGFontElementImpl.cpp Thu Jan 07 16:19:02 2010 +0200 @@ -0,0 +1,235 @@ +/* +* Copyright (c) 2003 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: SVG Implementation source file + * +*/ + + +#if !defined(__E32BASE_H__) +#include +#endif +#include "SVGFontElementImpl.h" +#include "SVGDocumentImpl.h" +#include "SVGSchemaData.h" + +#include "GfxAffineTransform.h" + +#ifdef SVG_FONTS_INCLUDE + + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +CSvgFontElementImpl* CSvgFontElementImpl::NewL( const TUint8 aElemID, + CSvgDocumentImpl* aDoc ) + { + CSvgFontElementImpl*self = new ( ELeave ) CSvgFontElementImpl( aDoc ); + CleanupStack::PushL( self ); + self->ConstructL(aElemID); + CleanupStack::Pop(); + + return self; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +CSvgFontElementImpl* CSvgFontElementImpl::NewLC( const TUint8 aElemID, + CSvgDocumentImpl* aDoc ) + { + CSvgFontElementImpl*self = new ( ELeave ) CSvgFontElementImpl( aDoc ); + CleanupStack::PushL( self ); + self->ConstructL(aElemID); + + return self; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +void CSvgFontElementImpl::ConstructL( const TUint8 aElemID ) + { + CSvgElementImpl::InitializeL( aElemID ); + + + #ifdef SVG_FLOAT_BUILD + iHorzAdvX = TFloatFixPt(0); + iHorzOrgX = TFloatFixPt(0); + iHorzOrgY = TFloatFixPt(0); + #else + iHorzAdvX = TFloatFixPt( 0 ,ETrue); + iHorzOrgX = TFloatFixPt( 0 ,ETrue); + iHorzOrgY = TFloatFixPt( 0 ,ETrue); + #endif + + iSvgStyleProperties = new(ELeave) RPointerArray(KCSS_MAX_ATTR); + + // This is required to allocate buffer up to granularity so that the + // following Insert calls cannot leave. + + User::LeaveIfError( iSvgStyleProperties->Append( NULL ) ); + iSvgStyleProperties->Remove( 0 ); + + } + + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +CSvgFontElementImpl::CSvgFontElementImpl( CSvgDocumentImpl* aDoc ) + { + SetOwnerDocument(aDoc); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +CSvgFontElementImpl::~CSvgFontElementImpl() + { + if(iSvgStyleProperties) + { + iSvgStyleProperties->Close(); + delete iSvgStyleProperties; + iSvgStyleProperties = NULL; + } + } + +// ******************************************************* +// From SVG DOM + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +TFloatFixPt CSvgFontElementImpl::GetHorzOrgX() + { + return iHorzOrgX; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +TFloatFixPt CSvgFontElementImpl::GetHorzOrgY() + { + return iHorzOrgY; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +TFloatFixPt CSvgFontElementImpl::GetHorzAdvX() + { + return iHorzAdvX; + } + +// ******************************************************* +// From MXmlElement + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +TInt CSvgFontElementImpl::SetAttributeL( const TDesC& aName, + const TDesC& aValue ) + { + + CSvgElementImpl::SetAttributeL(aName,aValue); + + return KErrNone; + } + + +// From MXmlElementOpt + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +TInt CSvgFontElementImpl::SetAttributeFloatL( const TInt aNameId, + const TFloatFixPt aValue ) + +{ + + switch ( aNameId ) + { + case KAtrHorizAdvX: + iHorzAdvX = aValue; + break; + case KAtrHorizOriginX: + iHorzOrgX = aValue; + break; + case KAtrHorizOriginY: + iHorzOrgY = aValue; + break; + default: + return CSvgElementImpl::SetAttributeFloatL( aNameId, aValue ); + } + return KErrNone; + +} + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +TInt CSvgFontElementImpl::GetAttributeFloat( const TInt aNameId, + TFloatFixPt& aValue ) + { + switch ( aNameId ) + { + case KAtrHorizOriginX: + aValue = GetHorzOrgX(); + break; + case KAtrHorizAdvX: + aValue = GetHorzAdvX(); + break; + default: + return CSvgElementImpl::GetAttributeFloat( aNameId, aValue ); + } + + return KErrNone; + } + +// ******************************************************* +// From CSvgElementImpl + +// perform a deep clone of this object +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +MXmlElement* CSvgFontElementImpl::CloneL(MXmlElement*) + { + return NULL; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +TBool CSvgFontElementImpl::DrawL( CGfx2dGc* /* aGc */, + CSvgElementImpl* /* aElement */ ) + { + return EFalse; + } + +void CSvgFontElementImpl::Print( TBool aIsEncodeOn ) +{ + if (!aIsEncodeOn) + { + #ifdef _DEBUG + RDebug::Printf("", (int)iHorzOrgX, (int)iHorzOrgY, (int)iHorzAdvX); + #endif + + /*vert-origin-x + vert-origin-y + vert-adv-y*/ + } +} + +#endif //ifdef SVG_FONTS_INCLUDE