Освой компьютер
Пусть перед
вызовом этой подпрограммы регистры D0 и D1 содержат X и Y координаты
текста, а регистр A1 содержит адрес блока данных текста: PrintText = -216
...
print:
move.l intbase(PC),A6 ;база intuition.library
move.l windowhd(PC),A0 ;идентификатор окна
move.l 50(A0),A0 ;адрес порта RastPort
jsr PrintText(A6) ;выводим текст
rts 7.7. Работа с графикой. В этом пункте мы рассмотрим функцию библиотеки intuition.library, которая
позволяет выводить произвольные графические изображения в окна Intuition.
Под графическим изображением мы будем понимать прямоугольную область,
содержащую графическую информацию в обычном побитовом формате (каждому
пикселу области соответствует один бит).
Размеры изображений могут варьироваться, однако для задания больших
изображений требуется слишком громоздкий текст (на практике графические
изображения редко задаются с помощью директив типа dc.l, вместо этого
используется директива ассемблера incbin, которая позволяет включать в код
программы двоичные файлы). По этой причине мы будем рассматривать изображения
небольших размеров (32x16 точек - около 3x1 см.).
Для вывода изображения в произвольное окно Intuition может использоваться
функция DrawImage (смещение -114 в intuition.library). Параметры у этой
функции следующие: в A0 - адрес порта окна (RastPort), см. предыдущий пункт
в A1 - адрес блока данных, определяющего изображение
в D0 - X - координата изображения (левого верхнего угла)
в D1 - Y - координата изображения Рассмотрим простую подпрограмму вывода изображения в окно Intuition (будем
предполагать, что регистры D0 и D1 содержат координаты изображения, а
регистр A1 содержит адрес графической структуры): DrawImage = -114
...
draw: ;* нарисовать изображение (Image)
move.l intbase(PC),A6 ;база intuition.library
move.l windowhd(PC),A0 ;идентификатор окна
move.l 50(A0),A0 ;адрес порта RastPort
jsr DrawImage(A6) ;рисуем изображение
rts Теперь рассмотрим структуру блока данных, описывающего изображения. Первые два слова определяют смещения (по X и по Y) изображения относительно
заданных в D0 и D1 координат: image:
dc.w 0,0 ;смещение изображения
Следующие два слова определяют ширину и высоту изображения в пикселах: dc.w 32,13 ;ширина и высота изображения
Следующее слово задает число битпланов для вывода изображения.
AMIGA: ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ.
|