Это проект первого курса СПбГУ факультета МКН "Современное программирование" — программа, рисующая диаграмму одного из доступных типов в графическом окне по входным данным (из файла или из консоли), с записью изображения в PNG файл (при необходимости). Проект использует библиотеки skiko и skija. Оригинальная постановка задачи: TASK.md.
В релизах можно найти скомпилированный jar файл viz.jar. Запуск программы производится следующей командой:
java -jar viz.jar [-i INPUT_FILE] [-d DIAGRAM_TYPE] [OPTIONS...] [-o OUTPUT_FILE]Все аргументы необязательны; порядок аргументов не имеет значения.
Запустить также можно непосредственно в среде разработки, указав нужные опции и аргументы.
Можно вызвать, указав опции -d bar, -d column или -d histogram. Является диаграммой по умолчанию (она будет вызвана, если вообще не указывать опцию -d) Записи с отрицательными значениями запрещены.
Можно вызвать, указав опции -d line, -d graph, -d plot или -d curve. Ось значений не обязательно начнается с нуля: диапазон подбирается автоматически под данные.
Можно вызвать, указав опции -d area, -d fill. Записи с отрицательными значениями запрещены.
Можно вызвать, указав опции -d pie, -d circle или -d round. Поддерживает максимум десять различных цветов: при совпадении цвета проводятся серые линии между надписями и соответствующими секторами диаграммы. Данные, содержащие отрицательные значения, а также данные, сумма значений которых равна нулю, запрещены.
Опцией -i INPUT_FILE можно указать файл с данными для диаграммы. В случае, когда опция не использована, или когда файл не может быть найден или прочитан, данные считываются из консоли.
В любом случае формат входных данных следующий: каждая запись находится в отдельной строке, и состоит из строки, являющейся названием компонента диаграммы, и вещественного числа, которое отделено от названия пробелами. Строки, которые не могут быть распознаны как корректная запись, пропускаются.
При вводе данных из консоли ввод следует заканчивать комбинацией CTRL+D в Linux и CTRL+Z с последующим Enter в Windows.
Следующими флагами можно задать порядок данных на диаграмме:
--sort- упорядочить в порядке возрастания значений--rsort,--reverse-sort- упорядочить в порядке убывания значений--lsort,--lex-sort- упорядочить в порядке возрастания названий (лексикографически)--lrsort,--rlsort,--lex-reverse-sort,--reverse-lex-sort- упорядочить в порядке убывания названий (лексикографически)--nsort,--no-sort- оставить порядок, как есть (опция по умолчанию)
- Опцией
-s SCALE(или--scale SCALE), гдеSCALE- вещественное число, можно задать относительный размер диаграммы. Размер по умолчанию равен 400. Наименьший разрешенный размер равен 50, а наибольший равен 2000. - Опцией
-p PADDING(или--padding PADDING), гдеPADDING- вещественное число, можно задать абсолютный размер краев диаграммы. По умолчанию этот размер равен 50.
Для диаграмм типа bar, line и area можно задать цвет опцией -c COLOR (или --color COLOR). При этом COLOR может иметь один из следующих форматов:
- Ключевое слово из списка:
default,red,orange,brown,yellow,green,cyan,blue,purple,violet,pink,grey,gray,black. xxxxxxили#xxxxxx- HEX-код цвета. Например,ff0000или#FF0000.
При корректном входе программа рисует диаграмму в графическом окне. Если использовать опцию -o OUTPUT_FILE, то программа дополнительно сохранит диаграмму в указанный файл в формате PNG.
--no-window- не создавать графическое окно с диаграммой.--silent,--quiet- включить режим, при котором нет вывода в консоль.
Проверить программу вручную можно на примерах из папки samples.
- 0 — программа выполнилась успешно
- 1 — программа выполнилась с ошибками (некорректные опции/аргументы или некорректные данные для диаграммы)
Исходный код сопровождён unit-тестами, покрывающими компоненты ввода и обработки данных.
Кроме того, с помощью класса src/test/kotlin/allSamples/CheckAllSamples.kt можно получить картинки сразу всех диаграмм из samples всех вомзожных типов и сравнить их с эталонными (но для этого нужно сначала сгенерировать эталонные картинки с помощью класса src/test/kotlin/allSamples/CreateAllSamples.kt).
Также, с помощью класса src/test/kotlin/AllColors.kt можно сгенерировать картинки в директории samples/colors/, представляющие некоторые доступные цвета диаграмм.



