public c_image enhance(c_image_enhancement_algorithm algorithm) { c_image enhanced_image = new c_image(data.Length + 2, data[0].Length + 2); for (int input_row = -1; input_row <= data.Length; input_row++) { for (int input_column = -1; input_column <= data[0].Length; input_column++) { int value = enhance_pixel(input_row, input_column); if (algorithm.is_set(value)) { enhanced_image.data[input_row + 1][input_column + 1] = true; } } } if (background) { enhanced_image.background = algorithm.is_set(0x1ff); } else { enhanced_image.background = algorithm.is_set(0); } return(enhanced_image); }
internal static (c_image_enhancement_algorithm, c_image) parse_input( string input, bool pretty) { c_input_reader input_reader = new c_input_reader(input); c_image_enhancement_algorithm algorithm = new c_image_enhancement_algorithm(input_reader.read_line()); input_reader.read_line(); c_image image = new c_image(input_reader); return(algorithm, image); }