ReadPolarCoordinates
(
ExcelTableReader.ExcelTableRow oRow,
IVertex oVertex
)
{
Debug.Assert(oRow != null);
Debug.Assert(oVertex != null);
AssertValid();
String sR;
Boolean bHasR = oRow.TryGetNonEmptyStringFromCell(
VertexTableColumnNames.PolarR, out sR);
String sAngle;
Boolean bHasAngle = oRow.TryGetNonEmptyStringFromCell(
VertexTableColumnNames.PolarAngle, out sAngle);
if (bHasR != bHasAngle)
{
// R or Angle alone won't do.
goto Error;
}
if (!bHasR && !bHasAngle)
{
return (false);
}
Single fR, fAngle;
if ( !Single.TryParse(sR, out fR) ||
!Single.TryParse(sAngle, out fAngle) )
{
goto Error;
}
oVertex.SetValue(ReservedMetadataKeys.PolarLayoutCoordinates,
new SinglePolarCoordinates(fR, fAngle) );
return (true);
Error:
Range oInvalidCell = oRow.GetRangeForCell(
VertexTableColumnNames.PolarR);
OnWorkbookFormatError( String.Format(
"There is a problem with the vertex polar coordinates at {0}."
+ " If you enter polar coordinates, they must include both"
+ " {1} and {2} numbers. Any numbers are acceptable."
+ "\r\n\r\n"
+ "Polar coordinates are used only when a Layout of Polar"
+ " or Polar Absolute is selected in the graph pane."
,
ExcelUtil.GetRangeAddress(oInvalidCell),
VertexTableColumnNames.PolarR,
VertexTableColumnNames.PolarAngle
),
oInvalidCell
);
// Make the compiler happy.
return (false);
}