Чекер для работы с BMP файлом

Задача

Общая постановка задачи

Обработка файла в формате BMP.

Требуется реализовать программу, которая:

отражает заданную область по вертикали.

делит область на 4 равные части и меняет их местами по диагонали.

если заданная область является квадратом, вписывает в нее окружность белого цвета с толщиной линии 1 пиксель, иначе заливает область черным цветом.

сохраняет результат в новом файле.

(число здесь идентифицирует номер команды)

Параметры

Программа получает параметры из входного потока и должна проверить их корректность. Параметры:

input_file

x0

y0

x1

y1

commands

input_file - BMP файл

x0 y0 левый верхний угол области (отсчет с точки 0, 0)

x1 y1 правый нижний угол области

commands - числовой массив неизвестной длины, который хранит в себе последовательность функций обработки входного файла. Массив заканчивается числом 4 - функцией сохранения результата в новом файле.

В случае, если программа получила некорректные параметры, то:

операционной системе возвращается ненулевой код возврата (return в main)

не создается выходного в файла

выводится сообщение об ошибке «Fail with <имя параметра>».

Общие сведения

24 бита на цвет

без сжатия

файл всегда соответствует формату (проверять не нужно)

обратите внимание на выравнивание; мусорные данные, если их необходимо дописать в файл для выравнивания, должны быть нулями.

обратите внимание на порядок записи пикселей

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