Exemple #1
0
CelFileWriter::CelFileWriter(CelFileData &p) 
{
	p.SetVersion(CurrentCelFileVersion);
	writer = new GenericFileWriter(p.GetFileHeader());
	intensityPos = 0;
	stdDevPos = 0;
	pixelPos = 0;
	outlierPos = 0;
	maskPos = 0;
	WriteHeaders();
}
/*
 * Get the DAT header from the DAT file header object.
 */
string CELConversionUtilities::GetDatHeader(CelFileData &inFile)
{
    std::wstring datHeader;

    GenDataHdrVectorIt begin, end;
    inFile.GetFileHeader()->GetGenericDataHdr()->GetParentIterators(begin, end);

    // Find the DAT generic header
    for (GenDataHdrVectorIt ii = begin; ii != end; ++ii)
    {
        std::string s = ii->GetFileTypeId();
        if (ii->GetFileTypeId() == SCAN_ACQUISITION_DATA_TYPE)
        {

            // found the right header, now look for the parameter
            ParameterNameValueType nvt;
            if (ii->FindNameValParam(DAT_HEADER_PARAM_NAME, nvt))
            {
                if (nvt.GetParameterType() == ParameterNameValueType::TextType)
                    datHeader = nvt.GetValueText();
            }
            else if (ii->FindNameValParam(PARTIAL_DAT_HEADER_PARAM_NAME, nvt))
            {
                if (nvt.GetParameterType() == ParameterNameValueType::TextType)
                {
                    std::wstring partialDatHeader = nvt.GetValueText();

                    u_int16_t min = 0;
                    u_int16_t max = 0;

                    // Find the max and min parameters and append to the string.
                    if (ii->FindNameValParam(MAX_PIXEL_INTENSITY_PARAM_NAME, nvt))
                    {
                        if (nvt.GetParameterType() == ParameterNameValueType::UInt16Type)
                            max = nvt.GetValueUInt16();
                    }

                    if (ii->FindNameValParam(MIN_PIXEL_INTENSITY_PARAM_NAME, nvt))
                    {
                        if (nvt.GetParameterType() == ParameterNameValueType::UInt16Type)
                            min = nvt.GetValueUInt16();
                    }

                    wchar_t buf[30];
                    FormatString2(buf, 30, L"[%d..%d]", min, max);
                    datHeader = buf;
                    datHeader += partialDatHeader;
                }
            }
            break;
        }
    }
    return StringUtils::ConvertWCSToMBS(datHeader);
}