Содержание

Требования к курсовым (весенний семестр)

CLI (Command Line Interface), обязательно

Программу требуется реализовать в виде утилиты, подобной стандартным linux-утилитам с которыми Вы уже имели дело: управление осуществляется посредством аргументов командной строки. Конкретный список команд зависит от решаемой задачи, но в общем случае обязательно:

mypaint --rectangle --start 0 0 --end 100 50 --color red picture.bmp

Реализация интерфейса должна быть с использованием getopt или argp

Ссылки на ресурсы

Необязательные дополнения к курсовой работе

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

GUI (Graphical User Interface), опционально в дополнении к CLI

Рядовые пользователи очень плохо умеют пользоваться терминалом, поэтому для их удобства зачастую реализуют графический интерфейс. В программе по обработке изображений такое напрашивается само собой (иначе убийца photoshop'а будет выглядеть несолидно).

Программа реализовывается в виде оконного графического приложения с использованием C++ фреймворка Qt (надо быть готовым в изучению C++ самостоятельно). Конкретный функционал приложения зависит от решаемой задачи, но в общем случае должно быть:

Ссылки на ресурсы

Нюансы реализации

Qt в том числе имеет средства для работы с изображениями. Этими средствами (за исключением средств визуального отображения) пользоваться запрещено. Что это значит:

Документация

В любом хорошем проекте должна быть документация. Документация означает, что для каждой функции, структуры (и классов для C++) есть адекватное описание. Фразы в духе «Данная структура содержит данные для изображения» или «Функция обработки изображения» являются плохим описанием.

Документацию можно написать сразу в коде, обратите вниммание на Doxygen

Создание .so библиотеки

Зачастую код пишется не в формате отдельной программы, а в формате библиотеки, чтобы вашими наработками могли воспользоваться в другом проекте другие разработчики. Поэтому можно разделить курсовую на две части:

  1. Библиотека формата .so , которая содержит только функции для работы с изображениями: открытие и сохранение изображения, обработка изображений, …
  2. Главная часть, которая содержит в себе только main с CLI (и опционально GUI) обработкой и вызовом функций из разработанной библиотеки

ВАЖНО: Не нужно по умолчанию выполнять установку библиотеки в систему, сделайте для этого отдельную цель, например make install