Блок задач

4. Структуры данных

Темы
Сложность 5

Задача «Заливка цветом»

Написать программу, которая заливает определенным цветом замкнутую область в BMP файле.

Входные данные

Текстовый файл с именем файла, точкой применения заливки и цветом заливки.

1) Имя файла задается первой строкой файла

2) Точка задается двумя координатами: x и y, записанными во второй строке. Выбор начала координат остается на усмотрение студента

3) Цвет задается тремя компонентами (RGB) в диапазоне от 0 до 255, записанными в третьей строке

Пример:

test.bmp
10 10
0 255 10
output.bmp

Файл может содержать пустые и невалидные строки. Программа должна корректно это обрабатывать.

Постановка задачи

Залить определенным цветом замкнутую область в BMP файле. Имя файла, цвет заливки и точка, с которой начинается заливка, задается пользователем (текстовый файл)

Для работы с форматом BMP можно использовать одну из header-only библиотек.

Необходимо корректно обрабатывать ситуации с некорректно заданными цветами (приведение в диапазон 0 .. 255, 0 - значение по умолчанию).

Передачу имени входного файла, реализовать через аргументы командной строки.

Выходные данные

Файл BMP c именем output.bmp, в котором заданная область залита

Тестирование

Необходимо написать набор тестов, охватывающий варианты расположения начальной точки: внутри замкнутой области и снаружи, присутствие замкнутых областей, их отсутствие и т.д.

Функции ввода/вывода нужно тестировать с помощью std::stringstream. Тестировать работу с изображениями нужно путем самостоятельной генерации изображений, без использования файлов.