Програмата представлява редактор на изображения с растерна графика, като поддържа работа с 3 вида файлове - .pbm, .pgm и .ppm. Използван е само С++.
| Команда | Описание | Брой аргументи | Аргументи |
|---|---|---|---|
| open <fileLocation_1> <fileLocation_2> т.н. | Създава сесия с посочените файлове. | неопределен | <fileLocation> -> локация на файла |
| add <fileLocation> ... | Добавя файла в текущата сесия. | 1 | <fileLocation> -> локация на файла |
| undo | Отменя последната незапазена операция (няма ефект върху add и open). | 0 | - |
| save | Запазва промените на всяка снимка от активната сесия обратно в съответните им файлове. | 0 | - |
| saveas <fileLocation> | Запазва промените на първата снимка в активната сесия на определена локация. | 1 | <fileLocation> -> локация на файла |
| close | Затваря активната сесия като изтрива незапазените промени. | 0 | - |
| grayscale | Преобразува всички цветни изображения в активната сесия в такива използващи нюанси на сивото. | 0 | - |
| monochrome | Преобразува всички цветни и сиви изображения в активната сесия в черно-бели. | 0 | - |
| negative | Прилага трансофрмация негатив върху всички изображения в активната сесия. | 0 | - |
| rotate <direction> | Завърта всички изобравения в активната сесия на +90 или -90 градуса. | 1 | <direction> -> посока на завъртане (right или left) |
| collage <direction> <image1> <image2> <outImage> | Създава вертикален или хоризонтален колаж на две изображения от един и същ тип. Колажа се записва в <outImage> и се добавя към активната сесия | 4 | <direction> -> ориентация на колажа (horizontal или vertical) <image1> -> локация на файла съдърщаш първата снимка <image2> -> локация на файла съдържащ втората снимка <outImage> -> локация на файла, в който ще бъде записан колажа |
| session info | Връща информация за текущата сесия (идентификатор на сесията, отворени снимки). | 0 | - |
| switch <session> | Сменя текущата сесия. | 1 | <session> -> идентификатор на определената сесия |
| help | Връща информация за всяка от поддържаните команди. | 0 | - |
| exit | Прекратява изпълнението на програмата. | 0 | - |
Базов абстрактен клас, служещ за имплементация на различните разширения файлове.
Клас, който обвива информацията за сесиите.
Главен клас, помагащ за изпълнението на програмата. Представлява контейнер за сесии.
Полиморфна йерархия с базов абстрактен клас Command. Използва се за осъществяването на Command Pattern, за по-лесна работа чрез конзолата.