internal MetaLine(OlapControl AGrid, IList <int> LevelIndexes) : this() { FGrid = AGrid; fLevels = new List <Level>(LevelIndexes.Count); var b = 1; fIdxArray = new List <long>(LevelIndexes.Count); fHierArray = new List <int>(LevelIndexes.Count); fLines = new SortedList <string, Line>(); if (LevelIndexes.Count == 0) { return; } for (var i = 0; i < LevelIndexes.Count; i++) { var L = AGrid.FEngine.FLevelsList[LevelIndexes[i]]; fLevels.Add(L); fIdxArray.Add(FLimit); fHierArray.Add(b); FLimit *= L.CompleteMembersCount; b *= L.FDepth; } fID = RadarUtils.Join('.', LevelIndexes); #if DEBUG if (fID == "5") { } #endif }
internal MetaLine GetMetaline(IList <int> LevelIndexes) { if (cache_indexes != null && cache_indexes.Length == LevelIndexes.Count && cache_ml != null) { var b = true; for (var i = 0; i < LevelIndexes.Count; i++) { if (LevelIndexes[i] != cache_indexes[i]) { b = false; break; } } if (b) { return(cache_ml); } } cache_indexes = new int[LevelIndexes.Count]; LevelIndexes.CopyTo(cache_indexes, 0); var key = RadarUtils.Join('.', LevelIndexes); MetaLine M; FMetaLines.TryGetValue(key, out M); if (M != null) { cache_ml = M; return(M); } M = CreateMetaline(FGrid, LevelIndexes); FMetaLines.Add(key, M); cache_ml = M; return(M); }