diff -r 1fc85118c3ae -r 870918037e16 mapnavproviderrefapp/src/mnrpcoordconverter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mapnavproviderrefapp/src/mnrpcoordconverter.cpp Wed Sep 01 12:31:27 2010 +0100 @@ -0,0 +1,97 @@ +/* +* Copyright (c) 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: CMnrpCoordConverter implementation +* +*/ + + +#include + +#include "debug.h" +#include "mnrpengine.h" +#include "mnrpmapmodel.h" +#include "mnrpcoordconverter.h" + +// ========================== MEMBER FUNCTIONS =============================== + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +CMnrpCoordConverter* CMnrpCoordConverter::NewL() + { + CMnrpCoordConverter* self = new (ELeave) CMnrpCoordConverter; + CleanupStack::PushL( self ); + + self->iEngine = CMnrpEngine::NewL(); + self->iModel = CMnrpMapModel::NewL( *self->iEngine ); + + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +CMnrpCoordConverter::CMnrpCoordConverter() + { + } + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +CMnrpCoordConverter::~CMnrpCoordConverter() + { + delete iModel; + delete iEngine; + } + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +TInt CMnrpCoordConverter::GetImageCoordinate( + const TCoordinate& aWorldCoordinate, + TPoint& aImagePoint ) + { + const TMnMapImageParams& params = MapImageParams(); + + if ( params.ImageType() == TMnMapImageParams::ETypeSatelliteImage ) + { + return KErrArgument; + } + + iModel->UpdateModel( params ); + + aImagePoint = iModel->AbsoluteToScreen( aWorldCoordinate ); + return KErrNone; + } + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +TInt CMnrpCoordConverter::GetWorldCoordinate( + const TPoint& aImagePoint, + TCoordinate& aWorldCoordinate ) + { + const TMnMapImageParams& params = MapImageParams(); + + if ( params.ImageType() == TMnMapImageParams::ETypeSatelliteImage ) + { + return KErrArgument; + } + + iModel->UpdateModel( params ); + + aWorldCoordinate = iModel->ScreenToAbsolute( aImagePoint ); + return KErrNone; + }