// Read all the string parameters into arrays. void ReadStringParameters(int firstStIndexBlk, out OcadParamString[] simpleStringParameters, out List<OcadParamString>[] listStringParameters) { // Allocate the arrays of objects to create. simpleStringParameters = new OcadParamString[(int) OcadStringParam.CountSingleParam]; listStringParameters = new List<OcadParamString>[(int) OcadStringParam.CountListParam]; if (firstStIndexBlk == 0) return; OcadStIndexBlocks stindexblocks = new OcadStIndexBlocks(); stindexblocks.Read(reader, firstStIndexBlk); if (stindexblocks == null) return; for (int i = 0; i < stindexblocks.indexes.Length; ++i) { OcadParamString param = new OcadParamString(); param.Read(reader, stindexblocks.indexes[i]); // Sometimes the "zoom" (12) parameter shows up as -12. Not sure why -- bug in OCAD? if (param.StType < 0) param.StType = -param.StType; OcadStringParam stringType = (OcadStringParam) param.StType; if (stringType != 0) { if (stringType < OcadStringParam.CountListParam) { if (listStringParameters[(int) stringType] == null) listStringParameters[(int) stringType] = new List<OcadParamString>(); listStringParameters[(int) stringType].Add(param); } else if (stringType < OcadStringParam.LastSingleParam) { simpleStringParameters[stringType - OcadStringParam.FirstSingleParam] = param; } } } }