Графические устройства

Приложение


Index1
Рисунки в файлах BMP Точечные или растровые рисунки являются одной из распространенных форм представления графической информации. Существует множество различных стандартов хранен...
Анализ основных полей заголовка
Анализ основных полей заголовка...
Для построения рисунка надо знать
Для построения рисунка надо знать его ширину, высоту и размер строки в файле. Следует подчеркнуть, что ширина рисунка и размер строки в файле являются разными величинами и их значения чащ...
Описание следующего шага
Описание следующего шага Расположение полей, содержащих значения для переменных iwidth, iheight и bitcnt, зависит от того, какому формату соответствует заголовок — Windows или OS/2. На...
Пример А З Формирование исходных
Пример А.З. Формирование исходных значений основных переменных Part 2 : mov ax, fs: [si+12h] ax = biwidth, формат Windows и OS/2 mov bx, fs: [si+16h] bx = biHeight, формат Windows...
Пример А 4 Вычисление значений переменных fwidth и rmndr
Пример А.4. Вычисление значений переменных fwidth и rmndr Part_3: xor cl, cl ; cl = 0, значение константы сдвига add ax, 03 ; ax = ax + 3 (ax содержит iwidth) and al, OFCh очищаем 2 младш...
Дополнепие к примеру А З
Дополнепие к примеру А.З. Для выполнения описанных действий, в тексте примера А.З команда, выполняющая проверку размера кода точки mр ci, I8h), заменяется группой команд, приведенных в...
Пример А 5 Ограничение значений переменных iwidth и iheight
Пример А.5. Ограничение значений переменных iwidth и iheight mov bx, horsize bx = размер экрана по горизонтали cmp bx, ax iwidth > horsize ? jae @F -> нет mov iwidth, bx iwidth =...
Манипуляции с палитрой
Манипуляции с палитрой...
Для окончания обработки заголовка
Для окончания обработки заголовка надо извлечь из него величины, необходимые для установки или преобразования палитры цветов. Палитра применяется в тех случаях, когда цвет не указан в...
Характеристики палитры
Характеристики палитры Для работы с палитрой надо вычислить значения трех величин, которые мы обозначим как paddr — адрес начала палитры в буфере обмена, pniine — количество строк (...
Пример А 6 Определение характеристик палитры
Пример А.6. Определение характеристик палитры mov di, fs: [si+OEh] di = размер Bitmap info add di, OEh di = di + OEh, di содержит paddr mov ax, fs: [si+OAh] ax = адрес начала образа рисун...
Пример А 7 Преобразование и установка палитры
Пример А.7. Преобразование и установка палитры convert : mov ex, ax ex = количество строк в палитре mov si, di si = di адрес начала палитры push es сохраняем содержимое es mov es, SwpS...
Построение таблицы цветов
Построение таблицы цветов Если задача работает в одном из режимов direct color, то регистры цвета видеокарты не используются. В таких случаях исходная палитра преобразуется в таблицу, с...
Таблица цветов используется для
Таблица цветов используется для преобразования кодов точек при построении рисунка. Способы построения таблицы цветов описаны в разделe (для режимов Hi-color) и разделe (для режимов...
Пример А 8 Построение таблицы цветов для режимов True Color
Пример А.8. Построение таблицы цветов для режимов True Color TabCol: mov si, di si = адрес начала палитры push es сохраняем содержимое es les di, dword ptr GenOffs; es:di = адрес табл...
Пример А 8 является несколько
Пример А.8 является несколько измененным вариантом примера 7.19. При выполнении подготовительных действий добавлено формирование содержимого регистров bx, сх и si, а в цикл построения табл...
Построение рисунков использующих палитру
Построение рисунков, использующих палитру...
Если задача выполнила действия
Если задача выполнила действия, описанные в предыдущих разделах, то остается только указать адрес начала рисунка в видеопамяти и можно начинать процедуру его построения. При работе с файл...
Построение рисунка сверху вниз
Построение рисунка сверху вниз...
Здесь описан способ построения
Здесь описан способ построения рисунка, при котором строки его образа выбираются в обратном порядке (начиная с последней строки), а на экран выводятся в естественном порядке сверху вниз....
Исходные предпосылки
Исходные предпосылки Сразу отметим, что такой способ построения не является универсальным. Его можно использовать для воспроизведения рисунков небольшого размера, образы которых помеща...
Подпрограмма Smlbmp
Подпрограмма Smlbmp Текст подпрограммы, выполняющей построение небольшого рисунка формата BMP описанным способом, приведен в примере А.9. Перед ее вызовом адрес левого верхнего угла ри...
Пример А 9 Построение рисунка формата ВМР сверху вниз
Пример А.9. Построение рисунка формата ВМР сверху вниз Smlbmp : pusha сохранение "всех" регистров PushReg <fs,gs,Cur wi n>; сохранение fs, gs, Cur win mov ax, horsize ax =...
Построение рисунка снизу вверх
Построение рисунка снизу вверх...
При работе с BMPфайлами произвольного
При работе с BMP-файлами произвольного размера основным способом является построение изображения снизу вверх. В таком случае строки образа рисунка считываются в порядке их расположения в...
Описание предварительных действий
Описание предварительных действий Перед началом построения рисунка подпрограмма вычисляет адрес начала последней строки в видеопамяти, размер считываемой из файла порции данных в байтах...
Подпрограмма BigBmp
Подпрограмма BigBmp Текст подпрограммы, выполняющей построение рисунка описанным способом, приведен в примере А.10. Перед ее вызовом адрес левого верхнего угла рисунка помещается в реги...
Пример А 10 Построение рисунка формата BMP снизу вверх
Пример А.10. Построение рисунка формата BMP снизу вверх BigBmp: pusha сохранение "всех" регистров PushReg <gs,fs,Cur w in>; сохранение gs, fs и Cur win mov ax, iheight...
Универсальная процедура построения рисунка
Универсальная процедура построения рисунка...
В данном разделе описана универсальная
В данном разделе описана универсальная процедура построения рисунка формата BMP, использующего палитру цветов. Двухцветные и 16-цветные рисунки хранятся в упакованном виде, поэтому процед...
Пример А 11 Начало построения рисунка формата BMP
Пример А.11. Начало построения рисунка формата BMP BmpShow: lea bx, mode_8 ; bx = адрес подпрограммы mode_8 cmp bitcnt, 08 ; bitcnt = 8 ? je @F ; -> да, переход на локальную метку l...
Подпрограммы обработки строк
Подпрограммы обработки строк Для того чтобы тексты подпрограмм построения строк не зависели от установленного задачей видеорежима, преобразование кодов точек и их запись в видеопамять в...
Пример А 12 Вывод строки формата 8 бит на точку (256 цветов)
Пример А.12. Вывод строки формата 8 бит на точку (256 цветов) mode_8: lods byte ptr f s:[si] ; al = код очередной точки call outpnt ; обращение к подпрограмме записи loop mode_8 ; упр...
Пример А 13 Вывод строки формата 4 бита на точку (16 цветов)
Пример А.13. Вывод строки формата 4 бита на точку (16 цветов) mode 4 : lods byte ptr fs: [si] al = код очередных 2-х точек push ax сохраняем содержимое ах shr al, 04 выделяем код...
Пример А 14 Вывод строки формата 1 бита на точку (2 цвета)
Пример А.14. Вывод строки формата 1 бита на точку (2 цвета) mode 2 : lods byte ptr fs: [si] al = код очередных восьми точек mov ah, 80h ah = константа для выделения разряда md 21:...
Пример А 15 Простой вывод точки в режимах PPG
Пример А.15. Простой вывод точки в режимах PPG outpnt: stosb ; запись кода точки в видеопамять or di, di ; адрес ь пределах сегмента? jne @F ; -> да call NxtWin ; нет, установка сле...
Пример А 15 рассчитан на те случаи
Пример А. 15 рассчитан на те случаи, когда при записи кодов точек в видеопамять не требуются никакие дополнительные действия. К ним относится перекодировка точек, которая может потребовать...
Пример А 16 Перекодировка точек в режимах direct color
Пример А.16. Перекодировка точек в режимах direct color outpnt : push eax ; сохранение содержимого еах and eax, OFFh ; очистка старших разрядов еах shl ax, wrdppnt ; учет размера строки...
Общая характеристика стандарта
Общая характеристика стандарта...
BMP является сокращением слова
BMP является сокращением слова Bitmap, в такой записи оно переводится как "точечное изображение", а запись bit map обычно переводят как "карта битов". В соответствии с...
Заголовок файла для Windows
Заголовок файла для Windows...
Первые точечные рисунки хранились
Первые точечные рисунки хранились в аппаратно-зависимом формате DDB (Device Dependent Bitmap). Такое представление было крайне неудобным, и разработчики Windows 3.0 отказались от него. Дл...
Таблица А 1 Заголовок дарфайла для Windows
Таблица А. 1. Заголовок дар-файла для Windows Смещение поля Размер в байтах Имя поля Назначение поля 00 (ООН)...
Заголовок файла для OS/2
Заголовок файла для OS/2 Оболочка Presentation Manager операционной системы OS/2 использует другой формат заголовка вмр-файла. Разработчики OS/2 учли избыточность стандарта BMP для Wind...
Таблица А 2 Заголовок вмрфайла для OS/2
Таблица А.2. Заголовок вмр-файла для OS/2 Смещение поля Размер в байтах Имя поля Назначение поля 00 (OOh) 2...
Образ рисунка в файле
Образ рисунка в файле...
Исторически стандарт BMP предназначался
Исторически стандарт BMP предназначался для Windows, а в ней при построении изображений "по умолчанию" начало координат расположено в нижнем левом углу экрана. Значения по оси х...
Сжатие образа рисунка
Сжатие образа рисунка Образы рисунков, содержащих более 2-х цветов, могут быть подвергнуты сжатию по способу RLE (Run-Length-Encoding). Прежде всего, отметим, что сжатие возможно только...
Общая схема обработки заголовка файла
Общая схема обработки заголовка файла...
Для построения на экране рисунка
Для построения на экране рисунка, хранящегося в вмр-файле, надо выпол-нить следующие действия: ввести спецификацию и открыть файл для чтения; прочитать заголовок и выбрать из него д...
Возможные отклонения от стандарта
Возможные отклонения от стандарта...
Повидимому стандарты пишут для
По-видимому, стандарты пишут для того, чтобы их не соблюдали. Анализ большого количества файлов формата BMP приводит именно к такому печальному выводу. Потенциальные возможности для откло...
Ввод спецификации и открытие файла
Ввод спецификации и открытие файла...
Для упрощения программирования
Для упрощения программирования работы с файлами DOS выполняет много полезных функций. Их использование возможно только при соблюдении определенных правил манипуляций с файлами. Одно из ни...
Открытие существующего файла
Открытие существующего файла DOS исполняет специальную функцию, предназначенную для открытия существующего файла (open File). Она име-ет код 3D0h и вызывается через прерывание int 2ih....
Подпрограмма открытия файла
Подпрограмма открытия файла Способ ввода спецификации зависит от установленного видеорежима и от формы диалога, поддерживаемого задачей. Предположим, что задача установила один из видео...
Пример А 1 Подпрограмма ввода спецификации и открытия файла
Пример А.1. Подпрограмма ввода спецификации и открытия файла GetSpec : push Cur win сохранение исходного значения Cur win mov ax, Inflinw ax = номер окна информационной строки m...
Чтение заголовка файла и палитр
Чтение заголовка файла и палитр...
Действия предшествующие построению
Действия, предшествующие построению рисунка, описаны ниже по шагам. На каждом шаге приводится обоснование действий и их программная реа-лизация. Это сделано для того, чтобы описание и прог...
Описание двух первых шагов
Описание двух первых шагов После того как файл открыт, в буфер обмена считываются его заголовок и палитра используемых цветов. В разделе мы условились, что сегмент, содержащий буфер обм...
Пример А 2 Начало обработки заголовка BMPфайла
Пример А.2. Начало обработки заголовка BMP-файла JitMap: mov ex, 16 ; размер порции для чтения mov SwpOffs, 0 ; адрес начала считываемых данных call Readf ; чтение первых 16-ти байтов фай...








Начало