Example #1
0
void FgfUtil::WriteRing(FdoIRing* ring, FdoByteArray ** outputStream)
{
	if ( (NULL == ring) ||
		(NULL == outputStream) )
        throw FdoException::Create(FdoException::NLSGetMessage(FDO_NLSID(FDO_1_INVALID_INPUT_ON_CLASS_FUNCTION),
                                                               L"FgfUtil::WriteRing",
                                                               L"ring/outputSream"));

	// StartPoint
	FdoPtr<FdoICurveSegmentAbstract> curveSeg = ring->GetItem(0);
	FdoPtr<FdoIDirectPosition> startPos = curveSeg->GetStartPosition();
	WriteDirectPosition(outputStream, startPos);

    // NumElements (segments)
	FdoInt32 numCurveSegs = ring->GetCount();
	FGFUTIL_WRITE_INT32(outputStream, numCurveSegs);

	// CurveSegs
	for (FdoInt32 i=0; i<numCurveSegs; i++)
	{
		FdoPtr<FdoICurveSegmentAbstract> curveSeg = ring->GetItem(i);
		WriteCurveSegment(curveSeg, outputStream);
	} 

}
Example #2
0
FdoFgfCurveString::FdoFgfCurveString(
    FdoFgfGeometryFactory * factory,
    FdoFgfGeometryPools * pools,
    FdoCurveSegmentCollection* curveSegs
    )
    : FdoFgfGeometryImpl<FdoICurveString>(factory, pools)
{
	if ( (NULL == curveSegs) ||
          (0 == curveSegs->GetCount()) )
		 throw FdoException::Create(FdoException::NLSGetMessage(FDO_NLSID(FDO_1_INVALID_INPUT_ON_CLASS_CREATION),
                                                                L"FdoFgfCurveString",
                                                                L"curveSegs/factory"));

    FdoByteArray * newByteArray = FgfUtil::GetPoolsNoRef(m_pools)->GetByteArray();

	// Geometrytype
	FGFUTIL_WRITE_INT32(&newByteArray, FdoGeometryType_CurveString);

	// Coordtype - from 1st element in curveSegs array
    FdoPtr<FdoICurveSegmentAbstract> firstCurve = curveSegs->GetItem(0);
	FdoInt32 dimensionality = firstCurve->GetDimensionality();
	FGFUTIL_WRITE_INT32(&newByteArray, dimensionality);

	// Startpoint - from 1st element in curveSegs array
	FdoPtr<FdoIDirectPosition> startPos = firstCurve->GetStartPosition();
	FgfUtil::WriteDirectPosition(&newByteArray, startPos);

	// Number of curveSegs
	FGFUTIL_WRITE_INT32(&newByteArray, curveSegs->GetCount());

	// CurveSegs
	for (FdoInt32 i=0; i<curveSegs->GetCount(); i++)
	{
        FdoPtr<FdoICurveSegmentAbstract> curveSeg = curveSegs->GetItem(i);
		FgfUtil::WriteCurveSegment(curveSeg, &newByteArray);
	} 

    SetFgf(newByteArray, NULL, 0);
    FDO_SAFE_RELEASE(newByteArray);
}