#ifndef _FGFCURVESTRING_H_
#define _FGFCURVESTRING_H_
/*
* Copyright (C) 2004-2006  Autodesk, Inc.
* 
* This library is free software; you can redistribute it and/or
* modify it under the terms of version 2.1 of the GNU Lesser
* General Public License as published by the Free Software Foundation.
* 
* This library 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 for more details.
* 
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

#ifdef _WIN32
#pragma once
#endif

#include <Geometry/ICurveString.h>
#include "GeometryImpl.h"


class FdoFgfCurveString : public FdoFgfGeometryImpl<FdoICurveString>
{
public:

	/*
     * Constructors matching public factory methods.
     */

	FdoFgfCurveString(FdoFgfGeometryFactory * factory, FdoFgfGeometryPools * pools, FdoCurveSegmentCollection* curveSegs);

    /*
     * Constructors supporting internal needs of this package.
     */

	FdoFgfCurveString(FdoFgfGeometryFactory * factory, FdoFgfGeometryPools * pools, FdoByteArray * byteArray, const FdoByte * data, FdoInt32 count);

    // Support object re-use, matching the constructor.
	void Reset(FdoByteArray * byteArray, const FdoByte * data, FdoInt32 count);

	virtual ~FdoFgfCurveString();

	// From FdoIGeometry
	virtual FdoIEnvelope* GetEnvelope() const;
	virtual FdoInt32 GetDimensionality() const;
	virtual FdoGeometryType GetDerivedType() const;

	// From FdoICurveAbstract
	virtual FdoIDirectPosition* GetStartPosition() const;
	virtual FdoIDirectPosition* GetEndPosition() const;
	virtual bool GetIsClosed() const;

	// From FdoICurveString
	virtual FdoInt32 GetCount() const;
	virtual FdoICurveSegmentAbstract* GetItem(FdoInt32 Index) const;
	virtual FdoCurveSegmentCollection* GetCurveSegments() const;


protected:

	FdoFgfCurveString() {}; // Default constructor to satisfy FdoPtr on Linux

	FdoIEnvelope* ComputeEnvelope() const;

	void Dispose();
};
#endif

