16-ти битный формат векторной графики
1. AI - формат ai, создаваемый программой Illustrator от известной корпорации Adobe
2. CDR - формат является внутренним форматом векторного редактора CorelDRAW
3. EPS - универсальный формат файлов, поддерживаемый многими редакторами
4. FLA, SWF - форматы исходных Flash-файлов и flash-анимации, созданные в Adobe Flash
5. PICT - сложный формат от Apple Computer для использования на платформе Macintosh
6. WMF - аналог формата PICT в среде Windows
7. TGA - ориентирован на видеокарту TrueVision, популярен в мире анимационной графики
8. TIFF - "теговый изобразительный файл" с гибкостью записи и возможными расширениями
9. SVG - формат основан на XML и поддерживается многими веб-браузерами
Вы видите, что существует большое разнообразие всяких форматов, содержащих векторную графику и являющихся основой для работы с ней.
Тем не менее, делая свою собственную программу, я разработал свой собственный формат. Он мне кажется наиболее простым, компактным, понятным, и во многих отношениях более удобным.
Формат внутреннего представления векторной графики в программе DM_Paint действительно, самый простой и компактный. Это – формат целых чисел типа Integer. Каждое число такого типа занимает всего 16 бит (15 бит, если не считать бит знака), что составляет 2 байта. Два символа занимают столько же места.
2-х байтовые целые числа вполне успешно могут представлять как значения координат, так и значения цвета в формате BGR, если у каждой из компонент цвета отнять по три младших бита: 24-3*3=15.
Второе преимущество этих чисел состоит в том, что они невелики и легко читаются в текстовом представлении, и это позволяет выводить информацию о загруженной графике на экран, так, как вы можете это видеть на иллюстрации, а также хранить эту информацию в двух видах – в текстовом формате, и в формате целых чисел. Файлы текстового формата ничем не отличаются от того, что выводится на экран, и мы можем не только просматривать эти файлы в Блокнотике, но и спокойно править их.
Наконец, третьим преимуществом использования целых чисел в программе является их организация – все они записываются в единый двухмерный массив Pvv(I,K), число строк которого весьма велико – 20000, а число позиций в каждой строке – 12. То есть, второй индекс массива изменяется от 0 до 11.
Если в поз.0 строки стоит число большее нуля, то это число трактуется как логотип векторного элемента, а сама строка называется титульной.
Если же в этой позиции стоит ноль, то эта строка дополнительная или неиспользуемая – оставшаяся, например, после удаления одного из элементов графики.
Дополнительные строки идут одна за другой, и на начало этих строк (на индекс I) указывает число, находящееся в поз.3 титульной строки.
Дополнительные строки содержат или координаты X,Y точек, составляющих контур графической фигуры, или координаты кривых Безье, если фигура сделана из этих кривых. В обоих случаях, на число точек или на число иных элементов, находящихся в дополнительных строках, указывается в 4-й позиции титульной строки.
Подобная организация целочисленного массива делает очень удобным редактирование векторной графики – её элементы легко переставлять и менять местами (переставляем только титульные строки) меняя тем самым очерёдность вывода фигур на рисунок. Легко перемещать и поворачивать отдельные фигуры - координаты Xо,Yо начальной точки каждой фигуры всегда находятся в поз.1 и поз.2 титульной строки. По этим же координатам легко организовать выбор фигуры – в режиме Показа начальные точки фигур показываются маленькими кружочками. Кликнув по кружочку правой кнопкой мыши, мы выбираем нужную фигуру.
В общем, удобств много. Конкретные подробности о значениях чисел в титульных и дополнительных строках приводятся тут - http://proza.ru/2020/12/22/345 что совсем не мешает всем желающим использовать описываемый стандарт на свой манер, по-своему трактовать действующие в нём логотипы фигур и даже добавлять новые логотипы.
Исходники программы открыты. Они находятся тут - http://disk.yandex.ru/d/WJ5xN76xQrReYQ?w=1 а саму программу можно скачать по этой ссылке http://disk.yandex.ru/d/suZ-qnFu4YOdYw
См. также более раннее описание функционирования программы и её структур - http://proza.ru/2020/09/19/1515
ВЗАИМОДЕЙСТВИЕ ПРОГРАММЫ С ФАЙЛАМИ СОДЕРЖАЩИМИ ВЕКТОРНУЮ ГРАФИКУ
Текущая папка, та, из которой запускается программа, может содержать специальный файл AGv, предназначенный для оперативного хранения векторной графики в целочисленном виде. Несмотря на то, что этот файл имеет расширение txt, то есть, заявлен как текстовый, осмысленными в нём являются только два первых символа - это GV (графика векторная), что соответствует целому числу 22087, и по этому числу осуществляется проверка фактической принадлежности файла перед его открытием. Далее в этом файле записано число ноль, и следом – число строк векторной графики.
Для графики, распечатка которой показана на иллюстрации, это число 132. Следом за этим числом пойдут числа 14 218 226 40 2 7 0 0 28 703 5 и 0, поскольку именно эти числа находятся в первой строке массива, считанного из файла «элементы2». Последнее число – ноль, в указанном файле и в распечатке отсутствует, поскольку, если там стоит ноль, то последнее число строки не показывается. Во всех прочих случаях, оно печатается, предваряемое символом решётка, например, так - # 25. Что означает – этот элемент включён в 25-ю группу, и может передвигаться как отдельно, так и в составе элементов такой же группы.
Передвижение элементов группами, это ещё одна «фишка», вполне вписывающаяся в формат массива векторной графики.
В текущем каталоге также должна быть размещена папка с названием APat, если мы предполагаем работу с элементами, имеющими логотип 12. Это элементы, растровые изображения которых считываются из файлов формата bmp, находящихся в указанной папке.
Названия файлов могут быть «pat 1000» - «pat 1999», а также «pat 1000m» - «pat 1999m». Причём файлы с первыми названиями описывают сам рисунок, находящийся на белом фоне, а вторые – чёрную или серую маску этого же рисунка, и тоже на белом фоне.
О работе с Патами рассказывается тут - http://proza.ru/2020/12/30/1544
Есть и ещё одна возможность работать с растровыми изображениями. С ними работает элемент «Паттерн» (логотип 16). Это – изображения небольшого размера, 100х100 или 200х200 пикселей, находящиеся на прозрачном фоне, и они не считываются из внешних файлов, а загружаются в программу на одном, или на двух листах большого рисунка - http://proza.ru/2020/12/26/957
В отличие от Патов, эти небольшие изображения можно не только передвигать, а также менять их размер, но и поворачивать, создавая при необходимости полноценную анимацию методом перекладки.
О файлах, содержащих графику в текстовом виде, уже говорилось. Они могут находиться в любом месте, и в рабочей папке, и вне её.
Особая папка (с любым названием) содержит файлы Архива. Об архивировании читаем здесь - http://proza.ru/2021/04/25/868 и смотрим тут - http://youtu.be/Cy5nGF_MDQQ
Файл архива должен иметь название, начинающееся с буквы «G». Этот файл, тоже объявленный, как текстовый, таковым не является. Запись в него начинается символами GV (графика векторная), что соответствует целому числу 22087, далее идёт число объединённых в архив файлов, а следом – сами файлы в целочисленном виде, предваряемые каждый – числом строк, содержащихся в нём.
Кончается запись словом «End», которое никакого значения не имеет, оно чисто декоративное.
Осталось добавить, что графика, содержащаяся в массиве Pvv, может быть выведена в файл формата SVG и после этого прочитана браузером, или внедрена в другие существующие векторные редакторы. Однако многие тонкости, присущие именно программе DM_Paint, такие, например, как растровые изображения, градиентные или фигурные заливки, не будут поняты, и на конечном рисунке соответствующие векторные элементы и их детали просто не появятся.
ВЫВОДЫ. Появление общепринятого, и вместе с тем, простого векторного стандарта всё ещё является проблемой.
Хотя, как мне кажется, описанный формат 16-ти битных целых чисел вполне способен на это. Ещё раз – он
1. Предельно простой
2. Очень компактный
3. Легко читаемый
4. Удобный к использованию
5. Допускающий компактное архивирование
6. Допускающий развитие, в плане, например, добавления новых векторных фигур со своими логотипами.
_________
2.05.2021
Свидетельство о публикации №221050201008