Beispiel #1
0
        // 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;
                    }
                }
            }
        }