Cтраница 3
Ниже приведен записанный на псевдоязыке фрагмент программы, в котором реализована операция копирования образа символа в массив памяти. [31]
Переменная К %, задающая число байтов физического сегмента, используется при записи образа символа для определения момента, когда необходимо выделять новый сегмент. Эта подпрограмма выбирает номер свободного сегмента из стека или с помощью указателя сегмента. [32]
Первый оператор программы задает рабочую область для BASICA объемом 20К байт, чтобы набор образов символов разместился в памяти. Чтобы понять, почему это необходимо, внимательно изучите приложение А. [33]
С помощью редактора пользователь должен иметь возможность воспроизвести на экране дисплея или вывести на печать двоичный образ символа, изображаемый точками и звездочками. [34]
Помещает таблицу индексов символов ( SI %) и таблицу сегментов символов ( SST %) в начало набора образов символов. [35]
![]() |
Образец побитового кодирования, использованный для создания символа для эмблемы с. [36] |
Похожая идея была изобретательно воплощена в пакете sprite, написанном Мартином Костаблем для создания новых Т Х овских символов путем задания побитового образа символа и изменения масштаба до требуемых размеров. [37]
Поэтому подпрограмма, начинающаяся в строке 520, работает лишь с физическими сегментами, относящимися к текущему символу, и записывает в них образ символа. Особенности подпрограммы состоят в следующем. [38]
После окончания работы с первым сегментом подпрограмма, начинающаяся в строке 800, завершается, и управление передается строке 522 - подпрограмме запоминания образа символа. [39]
Он используется для определения номера второго сегмента с помощью таблицы сегментов символов ( SST % ( SI % ( A %))), если объем образа символа занимает более одного сегмента. В строке 825 переменным М % и Wo присваиваются значения, соответствующие номерам первого и второго сегментов запоминаемого символа. В строке 830 проверяется значение переменной Wo для определения, является ли второй сегмент символа действительно заполненным данными, или первый сегмент был единственным сегментом символа. Если значения Wo и SST % ( M %) равны 255, это значит, что образ последующего символа с тем же номером ASCII размещается в одном физическом сегменте. В этом случае работа программы завершается и переменным 81 % и SST % присваиваются-необходимые значения, как об этом уже было сказано. Когда старый символ занимает более одного сегмента, то в SST % записывается число 255 ( строка 830), теперь означающее, что второй сегмент является очередным сегментом последовательности. И снова по значению Wo определяется, не является ли третий сегмент последним сегментом символа. Эта процедура продолжается до тех пор, пока все сегменты старого символа не будут освобождены и их номера не будут записаны в стек. На этом подпрограмма, начинающаяся в строке 825, завершается. [40]
В редакторе VECED принята такая структура памяти для символов, которая обеспечивает максимальную гибкость работы последующих программ использования векторных символов в части сокращения объема фрагментов этих программ, связанных с записью и считыванием образов символов из памяти. Наконец, так как книга посвящена компьютерной графике, а не общим вопросам переработки и хранения данных, предложенные решения являются в значительной степени компромиссными для удовлетворения противоречивых требований эффективности и простоты реализации программы. [41]
![]() |
Функциональная схема запоминания символа. редактор VECED. [42] |
Чтобы убедиться в этом, проделайте упражнение, помещенное в конце главы. Образ символа размещается в таком числе 50-байтовых записей, которое необходимо для хранения всех его точек, а соответствующая таблица указывает, сколько и КАКИХ записей использовано для данного символа. [43]
Она построена по тому же принципу, что был использован при получении распечатки фирменного знака в гл. Образ редактируемого символа пересылается в принтер в виде последовательности из трех групп, содержащих по 24 байт данных. Каждой такой группе предшествует управляющая команда, переводящая принтер ПК в режим графической печати. [44]
Каждая строка символа состоит из 24 пикселей. При запоминании образа символа редактор TVIMAG преобразует каждый пиксель в 2 бит данных, что позволяет задать его цвет. Таким образом, каждая строка символа занимает в памяти 6 байт. [45]