public static void Draw(ShapeMaker a, DrawParams dParams, SelectShapeEnum fillMode, List<ILine> lines) { if (a.Shapes.Count == 0) { foreach (ILine line in lines) { Draw(line, dParams); } } else { List<Shape> flatList = a.GetFlatListOfShapes(); int [] fill = {-1, -1}; switch (fillMode) { case SelectShapeEnum.Largest: fill[0] = a.FindLargestShape(flatList); break; case SelectShapeEnum.Smallest: fill[0] = a.FindSmallestShape(flatList); break; case SelectShapeEnum.LargestAdjacentPair: fill = a.FindLargestAdjacentPair(flatList); break; } int nShape = flatList.Count; for (int i = 0; i < nShape; i++) { Draw(flatList[i], dParams, fill[0] == i || fill[1] == i); } } }