/*************************************************************************
 *
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 * 
 * Copyright 2008 by Sun Microsystems, Inc.
 *
 * OpenOffice.org - a multi-platform office productivity suite
 *
 * $RCSfile: vmldrawing.cxx,v $
 * $Revision: 1.5 $
 *
 * This file is part of OpenOffice.org.
 *
 * OpenOffice.org is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License version 3
 * only, as published by the Free Software Foundation.
 *
 * OpenOffice.org is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License version 3 for more details
 * (a copy is included in the LICENSE file that accompanied this code).
 *
 * You should have received a copy of the GNU Lesser General Public License
 * version 3 along with OpenOffice.org.  If not, see
 * <http://www.openoffice.org/license.html>
 * for a copy of the LGPLv3 License.
 *
 ************************************************************************/

#include "oox/vml/drawing.hxx"
#include "oox/core/namespaces.hxx"
#include "tokens.hxx"

namespace oox { namespace vml {

Drawing::Drawing()
{
}
Drawing::~Drawing()
{
}

ShapePtr Drawing::createShapeById( const rtl::OUString sId ) const
{
	ShapePtr pRet, pRef;
	std::vector< ShapePtr >::const_iterator aIter( maShapes.begin() );
	while( aIter != maShapes.end() )
	{
		if ( (*aIter)->msId == sId )
		{
			pRef = (*aIter);
			break;
		}
		aIter++;
	}
	if ( pRef )
	{
		pRet = ShapePtr( new Shape( pRef->msServiceName ) );
		if ( pRef->msType.getLength() )
		{
			std::vector< ShapePtr >::const_iterator aShapeTypeIter( maShapeTypes.begin() );
			while( aShapeTypeIter != maShapeTypes.end() )
			{
				if ( (*aShapeTypeIter)->msType == pRef->msType )
				{
					pRet->applyAttributes( *(*aShapeTypeIter).get() );
					break;
				}
				aShapeTypeIter++;
			}
		}
		pRet->applyAttributes( *pRef.get() );
	}
	return pRet;
}

rtl::OUString Drawing::getGraphicUrlById( const rtl::OUString sId ) const
{
	rtl::OUString sGraphicURL;
	std::vector< ShapePtr >::const_iterator aIter( maShapes.begin() );
	while( aIter != maShapes.end() )
	{
		if ( (*aIter)->msId == sId )
		{
			sGraphicURL = (*aIter)->msGraphicURL;
			break;
		}
		aIter++;
	}
	return sGraphicURL;
}

} }
