void CELConversionUtilities::FindAndAddAlgorithmParameter(string name, string defaultValue, CelFileData &inFile, CCELFileData &outFile)
{
    ParameterNameValueType nvt;
    if (inFile.FindAlgorithmParameter(StringUtils::ConvertMBSToWCS(name), nvt))
    {
        outFile.AddAlgorithmParameter(name.c_str(), StringUtils::ConvertWCSToMBS(nvt.ToString()).c_str());
    }
    else
    {
        outFile.AddAlgorithmParameter(name.c_str(), defaultValue.c_str());
    }
}
void CELConversionUtilities::SetCellMargin(CelFileData &inFile, CCELFileData &outFile, int defaultValue)
{
    ParameterNameValueType nvt;
    if (inFile.FindAlgorithmParameter(L"CellMargin", nvt))
    {
        if (nvt.GetParameterType() == ParameterNameValueType::Int32Type)
        {
            outFile.GetHeader().SetMargin(nvt.GetValueInt32());
        }
        else if(nvt.GetParameterType() == ParameterNameValueType::AsciiType)
        {
            outFile.GetHeader().SetMargin(atoi(nvt.GetValueAscii().c_str()));
        }
    }
    else
    {
        outFile.GetHeader().SetMargin(defaultValue);
    }
}
/*
 * Get the grid from the parameters.
 */
GridCoordinatesType CELConversionUtilities::GetGrid(CelFileData &inFile)
{
    GridCoordinatesType grid;
    ParameterNameValueType nvt;

    grid.lowerleft.x = grid.lowerleft.y = 0;
    grid.upperleft.x = grid.upperleft.y = 0;
    grid.lowerright.x = grid.lowerright.y = 0;
    grid.upperright.x = grid.upperright.y = 0;

    if (inFile.FindAlgorithmParameter(GRIDULX_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.upperleft.x = (int) nvt.GetValueFloat();

    if (inFile.FindAlgorithmParameter(GRIDULY_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.upperleft.y = (int) nvt.GetValueFloat();

    if (inFile.FindAlgorithmParameter(GRIDURX_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.upperright.x = (int) nvt.GetValueFloat();

    if (inFile.FindAlgorithmParameter(GRIDURY_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.upperright.y = (int) nvt.GetValueFloat();

    if (inFile.FindAlgorithmParameter(GRIDLRX_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.lowerright.x = (int) nvt.GetValueFloat();

    if (inFile.FindAlgorithmParameter(GRIDLRY_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.lowerright.y = (int) nvt.GetValueFloat();

    if (inFile.FindAlgorithmParameter(GRIDLLX_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.lowerleft.x = (int) nvt.GetValueFloat();

    if (inFile.FindAlgorithmParameter(GRIDLLY_PARAM_NAME, nvt) && nvt.GetParameterType() == ParameterNameValueType::FloatType)
        grid.lowerleft.y = (int) nvt.GetValueFloat();

    return grid;
}