Программу требуется реализовать в виде утилиты, подобной стандартным linux-утилитам с которыми Вы уже имели дело: управление осуществляется посредством аргументов командной строки. Конкретный список команд зависит от решаемой задачи, но в общем случае обязательно:
Наличие справки, которая распечатывается при вызове утилиты без аргументов или стандартными ключами (-h, –help)
Обязательная обработка всех возможных исключительных ситуаций (даже бьющийся в агонии по клавиатуре пользователь не должен “уронить” вашу программу неверными аргументами)
Для всех(для которых это имеет смысл) ключей должны быть как полные так и сокращенные версии(-h, –help)
По-умолчанию последним аргументом утилите должно передаваться имя входного bmp/png файла. Имя выходного файла по умолчанию должно быть out.bmp
(out.png
для png), однако это должно быть возможным переопределить соответствующими ключом -o
, –output
Утилита должна иметь функцию печати подробной информации о bmp\png-файле, ключ –info
В случае, если программой будут поддерживаться не все версии bmp/png-файлов, программа должна выводить об этом внятное сообщение, а не крашиться.
Для каждого инструмента должен быть соответствующий ключ и ключи для его конфигурирования. Например, рисование прямоугольника может выглядеть как-то так:
mypaint --rectangle --start 0 0 --end 100 50 --color red picture.bmp
Реализация интерфейса должна быть с использованием getopt
Программу требуется реализовать в виде оконного графического приложения с использованием C++ фреймворка Qt (надо быть готовым в изучению C++ самостоятельно). Конкретный функционал приложения зависит от решаемой задачи, но в общем случае должно быть:
Окно отображения изображения
Некоторая палитра инструментов и возможность их настройки (цвет, например)(см. Paint, PhotoShop и т.д.)
Пользователь должен иметь возможность, выбрав инструмент, на рисунке выделить область его применения
Некоторое меню, позволяющее открыть/сохранить изображение, посмотреть подробную информацию об открытом bmp-файле, посмотреть информацию об авторе и краткую справку по приложению.
Никакие действия пользователя не должны приводить к “падению” программы.
В случае, если программой будут поддерживаться не все версии bmp-файлов, программа должна выводить об этом внятное сообщение, а не крашиться.