diff -r 522cd55cc3d7 -r 13ae750350c9 mapnavproviderrefapp/src/mnrputils.cpp --- a/mapnavproviderrefapp/src/mnrputils.cpp Tue Feb 02 00:16:03 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,256 +0,0 @@ -/* -* Copyright (c) 2006-2007 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: MnrpUtils class implementation -* -*/ - - -#include -#include -#include - -#include "mnrputils.h" - -_LIT( KNan, "" ); -_LIT( KNeg, "" ); -_LIT( KOutOfBounds, "" ); - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -EXPORT_C void MnrpUtils::CoordinateToString( - TReal aCoord, - TDes& aStr, - TBool aFull, - TBool aMillis ) - { - const TChar KDegreeMark = 0xB0; - const TChar KMinuteMark = 0x27; - const TChar KSecondMark = 0x22; - const TChar KMilliSecondMark = 0x2E; - const TChar KMinus = '-'; - const TChar KPlus = '+'; - - _LIT( KCoordFormatFull, "%c%d%c%02d%c%02d%c" ); - _LIT( KCoordFormatPartMseconds, "%c%03d" ); - - if ( Math::IsNaN( aCoord ) ) - { - aStr.Copy( KNan ); - } - else if ( Abs( aCoord ) > 360 ) - { - aStr.Copy( KOutOfBounds ); - } - else - { - TBool negative = aCoord < 0; - aCoord = Abs( aCoord ); - - TInt degrees = TInt( aCoord ); - aCoord = ( aCoord - degrees ) * 60; - TInt minutes = TInt( aCoord ); - aCoord = ( aCoord - minutes ) * 60; - TInt seconds = TInt( aCoord ); - aCoord = ( aCoord - seconds ) * 100; - TInt mseconds = TInt( aCoord ); - - TChar sign = negative ? KMinus : KPlus; - - if ( aFull ) - { - aStr.Format( KCoordFormatFull, - TUint( sign ), degrees, TUint( KDegreeMark ), - minutes, TUint( KMinuteMark ), - seconds, TUint( KSecondMark ) ); - if ( aMillis ) - { - aStr.AppendFormat( KCoordFormatPartMseconds, TUint( KMilliSecondMark ), mseconds ); - } - } - else - { - aStr.Zero(); - if ( degrees ) - { - aStr.AppendNum( degrees ); - aStr.Append( KDegreeMark ); - } - if ( minutes ) - { - aStr.AppendNum( minutes ); - aStr.Append( KMinuteMark ); - } - if ( seconds ) - { - aStr.AppendNum( seconds ); - aStr.Append( KSecondMark ); - } - if ( mseconds && aMillis ) - { - if ( !seconds ) - { - aStr.AppendNum( 0 ); - aStr.Append( KSecondMark ); - } - aStr.AppendFormat( KCoordFormatPartMseconds, TUint( KMilliSecondMark ), mseconds ); - } - - if ( !aStr.Length() ) - { - aStr.AppendNum( degrees ); - aStr.Append( KDegreeMark ); - } - } - } - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -EXPORT_C void MnrpUtils::DistanceToString( TReal aDistance, TDes& aStr ) - { - _LIT( KSmall, "< 1 m" ); - _LIT( KMeters, "%d m" ); - _LIT( KKiloMeters, "%.1f Km" ); - _LIT( KThousandsKiloMeters, "%.1f tKm" ); - - const TInt KMeter = 1; - const TInt KKilometer = KMeter * 1000; - const TInt KThousandKilometer = KKilometer * 1000; - - if ( Math::IsNaN( aDistance ) ) - { - aStr.Copy( KNan ); - } - else if ( aDistance < 0 ) - { - aStr.Copy( KNeg ); - } - else if ( aDistance < KMeter ) - { - aStr.Copy( KSmall ); - } - else if ( aDistance < KKilometer ) - { - aStr.Format( KMeters, TInt( aDistance ) ); - } - else if ( aDistance < KThousandKilometer ) - { - aStr.Format( KKiloMeters, aDistance / KKilometer ); - } - else - { - aStr.Format( KThousandsKiloMeters, aDistance / KThousandKilometer ); - } - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -EXPORT_C void MnrpUtils::SpeedToString( TReal aSpeed, TDes& aStr ) - { - _LIT( KPerSecond, "/s" ); - - if ( Math::IsNaN( aSpeed ) ) - { - aStr.Copy( KNan ); - } - else if ( aSpeed < 0 ) - { - aStr.Copy( KNeg ); - } - else - { - DistanceToString( aSpeed, aStr ); - aStr.Append( KPerSecond ); - } - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -EXPORT_C void MnrpUtils::AngleToString( TReal aAngle, TDes& aStr ) - { - const TChar KMinus = '-'; - const TChar KPlus = '+'; - _LIT( KAngleFormat, "%S%c%.1f\xB0 / %.1f\xB0" ); - - _LIT( KNorth, "N" ); - _LIT( KSouth, "S" ); - _LIT( KWest, "W" ); - _LIT( KEast, "E" ); - - TPtrC side; - TReal angle; - - if ( Math::IsNaN( aAngle ) ) - { - aStr.Copy( KNan ); - } - else if ( aAngle > 360 ) - { - aStr.Copy( KOutOfBounds ); - } - else - { - if ( aAngle > 315 ) - { - side.Set( KNorth ); - angle = aAngle - 360; - } - else if ( aAngle > 225 ) - { - side.Set( KWest ); - angle = aAngle - 270; - } - else if ( aAngle > 135 ) - { - side.Set( KSouth ); - angle = aAngle - 180; - } - else if ( aAngle > 45 ) - { - side.Set( KEast ); - angle = aAngle - 90; - } - else // aAngle <= 45 - { - side.Set( KNorth ); - angle = aAngle; - } - - TChar sign = ( angle >= 0 ) ? KPlus : KMinus; - aStr.Format( KAngleFormat, &side, TUint( sign ), Abs( angle ), aAngle ); - } - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -EXPORT_C HBufC* MnrpUtils::PrintableStringLC( const TDesC& aStr ) - { - HBufC* buf = aStr.AllocLC(); - TPtr string( buf->Des() ); - for ( TInt i = 0; i < string.Length(); i++ ) - { - if ( !TChar( string[i] ).IsPrint() ) - { - string[i] = ' '; - } - } - return buf; - }