예제 #1
0
        private static void ReadProperties(string[] lines, ref int lineNumber, out int numberOfVerticalAngles, out int numberOfHorizontalAngles, out PhotometricType photometricType)
        {
            List <float> list = ParseIES.ReadValues(lines, 13, ref lineNumber);

            numberOfVerticalAngles   = (int)list[3];
            numberOfHorizontalAngles = (int)list[4];
            photometricType          = (PhotometricType)list[5];
        }
예제 #2
0
        public static IESData Parse(string path, NormalizationMode normalizationMode)
        {
            string[] array = File.ReadAllLines(path);
            int      num   = 0;

            ParseIES.FindNumberOfAnglesLine(array, ref num);
            if (num == array.Length - 1)
            {
                throw new IESParseException("No line containing number of angles found.");
            }
            int             numberOfValuesToFind;
            int             num2;
            PhotometricType photometricType;

            ParseIES.ReadProperties(array, ref num, out numberOfValuesToFind, out num2, out photometricType);
            List <float>         verticalAngles   = ParseIES.ReadValues(array, numberOfValuesToFind, ref num);
            List <float>         horizontalAngles = ParseIES.ReadValues(array, num2, ref num);
            List <List <float> > list             = new List <List <float> >();

            for (int i = 0; i < num2; i++)
            {
                list.Add(ParseIES.ReadValues(array, numberOfValuesToFind, ref num));
            }
            IESData iesdata = new IESData
            {
                VerticalAngles   = verticalAngles,
                HorizontalAngles = horizontalAngles,
                CandelaValues    = list,
                PhotometricType  = photometricType
            };

            ParseIES.NormalizeValues(iesdata, normalizationMode == NormalizationMode.Logarithmic);
            if (normalizationMode == NormalizationMode.EqualizeHistogram)
            {
                ParseIES.EqualizeHistogram(iesdata);
            }
            if (photometricType != PhotometricType.TypeA)
            {
                ParseIES.DiscardUnusedVerticalHalf(iesdata);
                ParseIES.SetVerticalAndHorizontalType(iesdata);
                iesdata.HalfSpotlightFov = ParseIES.CalculateHalfSpotFov(iesdata);
            }
            else
            {
                ParseIES.PadToSquare(iesdata);
            }
            return(iesdata);
        }