install: add install sources and resources
[doom2d-restoration.git] / LIBS / VGA.H
blobe6ee7c8f3cb86cc277e19354f0e10664e09b1931
1 /*
2   Управление графикой VGA для DOS4GW
3   Модуль версии 1.0
4   (C) Алексей Волынсков, 1996
5 */
7 #pragma library("vga.lib")
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
13 // заголовок изображения
14 typedef struct{
15   unsigned short w,h; // W-ширина,H-высота
16   short sx,sy;    // сдвиг центра изображения
17 }vgaimg;
19 // R-красный,G-зеленый,B-синий
20 typedef struct{
21   unsigned char r,g,b;
22 }rgb_t;
24 // 256-и цветовая палитра VGA
25 typedef rgb_t vgapal[256];
27 // карта цветов
28 typedef unsigned char colormap[256];
30 // тип функции перерисовки экрана
31 typedef void redraw_f(void);
33 typedef void spr_f(void);
35 // переключение в режим VGA 320x200,256 цветов
36 // возвращает 0, если все о'кей
37 short V_init(void);
39 // переключение в текстовый режим
40 void V_done(void);
42 // ждать обратного хода луча развертки
43 void V_wait(void);
45 // вывести картинку i в координатах (x,y)
46 void V_pic(short x,short y,vgaimg *i);
48 // вывести спрайт i в координатах (x,y) при помощи функции f
49 //   параметры: AL=цвет_точки_спрайта EDI=>экран
50 //   !!! сохраняйте все регистры, кроме EAX
51 //   !!! EDI должен быть переведен на точку вправо (INC EDI или STOSB)
52 void V_sprf(short x,short y,vgaimg *i,spr_f *f);
54 // вывести спрайт i в координатах (x,y)
55 void V_spr(short x,short y,vgaimg *i);
57 // вывести зеркально перевернутый спрайт i в координатах (x,y)
58 void V_spr2(short x,short y,vgaimg *i);
60 // вывести форму спрайта i в координатах (x,y) одним цветом c
61 // (подходит для рисования теней)
62 void V_spr1color(short x,short y,vgaimg *i,unsigned char c);
64 // вывести точку цвета c в координатах (x,y)
65 void V_dot(short x,short y,unsigned char c);
67 // очистить прямоугольник цветом c
68 // x-левая сторона,w-ширина,y-верх,h-высота
69 void V_clr(short x,short w,short y,short h,unsigned char c);
71 // получить текущую палитру в массив p
72 void VP_getall(void *p);
74 // установить палитру из массива p
75 void VP_setall(void *p);
77 // установить n цветов, начиная с f, из массива p
78 void VP_set(void *p,short f,short n);
80 // заполнить палитру одним цветом (r,g,b)
81 void VP_fill(char r,char g,char b);
83 // приблизить палитру p к цвету (r,g,b) на s/n
84 // полученная палитра находится в pal_tmp
85 void VP_tocolor(void *p,char r,char g,char b,char n,char s);
87 // приблизить палитру p к палитре p2 на s/n
88 // полученная палитра находится в pal_tmp
89 void VP_topal(void *p,void *p2,char n,char s);
91 // вывести перемасштабированный к размерам (sx,sy) спрайт i в координатах (x,y)
92 void VM_spr(short x,short y,short sx,short sy,vgaimg *i);
94 // установить область вывода
95 void V_setrect(short x,short w,short y,short h);
97 // установить адрес экранного буфера
98 // NULL - реальный экран
99 void V_setscr(void *);
101 // скопировать прямоугольник на экран
102 void V_copytoscr(short x,short w,short y,short h);
104 // вывести символ c
105 void V_putch(short c);
107 // вывести строку s
108 void V_puts(char *s);
110 // вычислить длину строки s (в точках)
111 short V_strlen(char *s);
113 // вычислить ширину символа c (в точках)
114 short V_chrlen(char c);
116 // начать анимацию a
117 void V_start_anim(void *a);
119 // нарисовать кадр анимации
120 // возвращает номер кадра или 0, если конец
121 short V_draw_anim(void);
124 // полное описание функций RD_* см. в файле REDRAW.DOC
126 // инициализация экрана
127 void *RD_init(short x,short w,short y,short h);
129 // начать перерисовку экрана s при помощи функции f
130 void RD_start(void *s,redraw_f *f);
132 // перерисовать прямоугольник
133 void RD_rect(short x,short w,short y,short h);
135 // перерисовать спрайт
136 void RD_spr(short x,short y,vgaimg *s);
137 void RD_spr2(short x,short y,vgaimg *s);
139 // окончание перерисовки
140 void RD_end(void);
143 // возвращает яркость цвета (r,g,b)
144 short VP_brightness(char r,char g,char b);
146 // начать поиск по палитре p, состоящей из n цветов, первый - f
147 void VP_start_search(rgb_t *p,short n,short f);
149 // найти подходящий цвет
150 short VP_findcolor(short r,short g,short b);
152 // переделать изображение i по карте цветов m
153 void V_remap(vgaimg *i,colormap m);
156 // загружает палитру p из файла f (VGAED 2.0)
157 // возвращает 0 при ошибке
158 short load_pal(char *f,void *p);
160 // загружает изображение i из файла f (VGAED 2.0)
161 // возвращает NULL при ошибке
162 vgaimg *load_vga(char *f,char *i);
164 // загружает анимацию из файла f
165 // возвращает NULL при ошибке
166 void *load_anim(char *f);
168 // область вывода
169 extern short scrw,scrh,scrx,scry;
171 // адрес экранного буфера
172 extern unsigned char *scra;
174 // временная палитра
175 extern vgapal pal_tmp;
177 // ждать ли обратного хода луча при установке палитры
178 // 0-нет, иначе-да
179 extern char vp_waitrr;
181 // координаты для вывода следующего символа
182 extern short vf_x,vf_y;
184 // расстояние между символами
185 extern short vf_step;
187 // цвет символов
188 // если 0 - не используется
189 extern unsigned char vf_color;
191 // шрифт
192 extern void *vf_font;
194 // виртуальный экран
195 extern unsigned char scrbuf[64000];
197 #ifdef __cplusplus
199 #endif