Files
kolibrios/programs/develop/libraries/buf2d/trunk/about.htm
IgorA 1c3a46e4d1 modify function 'buf2d_resize',
split file 'buf2d.asm'

git-svn-id: svn://kolibrios.org@6175 a494cfbc-eb01-0410-851d-a64ba20cac60
2016-02-08 22:26:02 +00:00

470 lines
24 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<html>
<head>
<title>библиотека для работы с 2d буферами</title>
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251">
<style>
body
{
font-size: 15px;
font-family: "Bookman Old Style";
color: black;
text-align: justify;
}
h1 { color: green; font-size: 23px; }
h2 { color: green; font-size: 21px; }
h3 { color: green; font-size: 19px; }
h4 { color: #803f00; font-size: 17px; }
i { color: #0099cc; }
b { color: #0099cc; }
p {
text-indent: 1em;
margin-top: 3px;
margin-bottom: 2px;
margin-left: 0px;
margin-right: 0px;
}
ol, ul, dl{
margin-top: 3px;
margin-bottom: 2px;
}
pre
{
padding: 2px;
padding-left: 20px;
margin-top: 5px;
margin-bottom: 5px;
margin-left: 0px;
margin-right: 0px;
font-family: "Courier New";
font-size: 15px;
color: #004000;
background-color: #ffd0ff;
}
table { font-size: 15px; }
</style>
</head>
<body>
<h1>Оглавление</h1>
<ul>
<li>Вступление</li>
<li><a href="#format_buf">Форматы буферов</a></li>
<li><a href="#fun">Функции</a><br>
<ul>
<li><a href="#f_init">lib_init</a></li>
<li><a href="#f_b_create">buf2d_create</a></li>
<li><a href="#f_b_create_f">buf2d_create_f_img</a></li>
<li><a href="#f_b_clear">buf2d_clear</a></li>
<li><a href="#f_b_draw">buf2d_draw</a></li>
<li><a href="#f_b_delete">buf2d_delete</a></li>
<li><a href="#f_b_rotate">buf2d_rotate</a></li>
<li><a href="#f_b_resize">buf2d_resize</a></li>
<li><a href="#f_b_line">buf2d_line</a></li>
<li><a href="#f_b_line_sm">buf2d_line_sm</a></li>
<li><a href="#f_b_rect">buf2d_rect_by_size</a></li>
<li><a href="#f_b_fil_rect">buf2d_filled_rect_by_size</a></li>
<li><a href="#f_b_circle">buf2d_circle</a></li>
<li><a href="#f_b_hdiv2">buf2d_img_hdiv2</a></li>
<li><a href="#f_b_wdiv2">buf2d_img_wdiv2</a></li>
<li><a href="#f_c_color">buf2d_crop_color</a></li>
<li><a href="#f_flip_h">buf2d_flip_h</a></li>
<li><a href="#f_flip_v">buf2d_flip_v</a></li>
<li><a href="#f_filter_d">buf2d_filter_dither</a></li>
<li><a href="#f_v_brush_c">buf2d_vox_brush_create</a></li>
</ul>
</li>
<li><a href="#const">Константы</a></li>
<li><a href="#tabl_e">Таблица экспорта</a></li>
<li><a href="#hist">История</a></li>
</ul>
<h1>Вступление</h1>
<p>Документация к свободной библиотеке <b>buf2d.asm</b>, для <b>ОС Колибри</b>.
Эта библиотека создана для работы с 2d изображениями.
С ее помощью можно создавать буфера с изображениями в памяти, и при необходимости выводить их на экран.
Изображения можно накладывать одно на другое, поддерживается работа с прозрачными изображениями.
Есть функции рисования линий, кривых Безье, прямоугольников, окружностей.
Также есть функции для рисований воксельной графики.</p>
<p>Последнее обновление библиотеки 09.02.16.</p>
<h1><a name="format_buf">Форматы буферов</a></h1>
<p>Поддерживается 3 формата буферов.
Каждая функция при работе с буферами может быть расчитана на работу с определенными форматами изображений.</p>
<h4>8 бит</h4>
<p>Сожержит альфа канал <b>a</b> (прозрачность) изображения. На экран не выводится. Используется для созданя 32-битных буферов.</p>
<h4>24 бит</h4>
<p>Данный буфер содержит изображение в формате <b>rgb</b>. Может выводится на экран.</p>
<h4>32 бит</h4>
<p>Содержит прозрачное изображение в формате <b>rgba</b>. На экран не выводится. Используется для наложения изображений. Если <b>a=255</b> то пиксель прозрачный, если <b>0</b> не прозрачный.</p>
<h1><a name="fun">Функции</a></h1>
<p>Почти все функции 1-м параметром принимают указатель на структуру буфера,
из которой могут использоваться параметры, нужные для работы конкретной функции.
Пример структуры буфера изображения:</p>
<pre>align 4
buf_0:
dd 0 ;+ 0 указатель на буфер изображения
dw 100 ;+ 4 отступ слева
dw 10 ;+ 6 отступ справа
dd 150 ;+ 8 ширина
dd 100 ;+12 высота
dd 0x80 ;+16 фоновый цвет
db 24 ;+20 бит на пиксель</pre>
<h4><a name="f_init">lib_init</a></h4>
<p>Эта функция получает указатели на функции работы с памятью, вызыватся должна при загрузке библиотеки. Можете использовать макрос <b>@use_library_mem</b>, для ее автоматической настройки.</p>
<h4><a name="f_b_create">buf2d_create</a></h4>
<p>Создает буфер и чистит его фоновым цветом. Пример:</p>
<pre>stdcall [buf2d_create], buf_0</pre>
<p>где buf_0 - структура буфера.</p>
<p>Параметры для создания буфера берутся из структуры.</p>
<h4><a name="f_b_create_f">buf2d_create_f_img</a></h4>
<p>Создает буфер на основе изображения в формате <b>rgb</b>.</p>
<h4><a name="f_b_clear">buf2d_clear</a></h4>
<p>Чистит буфер указаным цветом. Пример:</p>
<pre>buf2d_color equ dword[edi+16] ;цвет фона буфера
mov edi,buf_0
stdcall [buf2d_clear], edi, buf2d_color ;очищаем экран фоновым цветом</pre>
<p>где buf_0 - структура буфера.</p>
<h4><a name="f_b_draw">buf2d_draw</a></h4>
<p>Рисует буфер на экране (работает через системную ф. 7). Рисуются только буфера с глубиной цвета 24 бита.</p>
<h4><a name="f_b_delete">buf2d_delete</a></h4>
<p>Освобождает память занятую изображением буфера.</p>
<h4><a name="f_b_rotate">buf2d_rotate</a></h4>
<p>Поворачивает буфер на 90 или 180 градусов. Пример:</p>
<pre>stdcall [buf2d_rotate], buf_0, 90</pre>
<p>где buf_0 - структура буфера (может быть 8, 24 или 32 битным); 90 - угол поворота.</p>
<h4><a name="f_b_resize">buf2d_resize</a></h4>
<p>Изменяет размеры буфера или изображения в буфере. Пока поддерживаются буфера с глубиной цвета 24 бита.</p>
<p>Пример 1:</p>
<pre>stdcall [buf2d_resize], buf_0, 0,300, 1 ;изменяем высоту буфера</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться линия; 0 - новая ширина буфера (0 означает не изменять размер); 300 - новая высота буфера; 1 - параметр указывающий что изменяются размеры буфера.</p>
<p>Пример 2:</p>
<pre>stdcall [buf2d_resize], buf_0, 250,0, 2 ;изменяем изображение в буфере</pre>
<p>где 250 - новая ширина буфера; 0 - новая высота буфера (0 означает не изменять размер); 2 - параметр указывающий что изменяем изображение в буфере.</p>
<p>Если последний параметр равен 2 то размер буфера остается неизменным и функция работает аналогично так как и функции <b>buf2d_img_hdiv2</b>, <b>buf2d_img_wdiv2</b>. Разница в том, что buf2d_resize может сжимать изображения до заданного размера, а не ровно в 2 раза.</p>
<h4><a name="f_b_line">buf2d_line</a></h4>
<p>Рисует в буфере линию с заданным цветом и координатами. Пример:</p>
<pre>stdcall [buf2d_line], buf_0, 30,10, 110,70, 0xffff00 ;рисуем линию</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться линия; 30, 10, 110, 70 - координаты линии; 0xffff00 - цвет линии.</p>
<p>Для рисования сглаженной линии используйте <b>buf2d_line_sm</b>.</p>
<h4><a name="f_b_line_sm">buf2d_line_sm</a></h4>
<p>Рисует в буфере линию принимает такиже параметры как и функция <b>buf2d_line</b>. Данная функция рисует сглаженную линию более красивую чем <b>buf2d_line</b>, но работает медленнее неё за счет вычисления смешанных цветов фона и самой линии.</p>
<h4><a name="f_b_rect">buf2d_rect_by_size</a></h4>
<p>Рисует прямоугольную рамку, по двум координатам, 2-я координата задана по размеру. Если размеры отрицательные рамка рисуется в обратном направлении.</p>
<pre>stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться прямоугольник; 10, 10 - координаты левого верхнего угла (при отрицательных размерах координата правого нижнего); 150, 100 - размер прямоугольника; 0x8080 - цвет линии.</p>
<h4><a name="f_b_fil_rect">buf2d_filled_rect_by_size</a></h4>
<p>Рисует закрашенный прямоугольник, по двум координатам, 2-я координата задана по размеру. Если размер задать 1*1, то будет нарисована точка размером в 1 пиксель, т.е. размер прямоугольника в пикселях будет равен указанному. Если размеры отрицательные прямоугольник рисуется в обратном направлении.</p>
<pre>stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться прямоугольник; 10, 10 - координаты левого верхнего угла (при отрицательных размерах координата правого нижнего); 150, 100 - размер прямоугольника; 0x8080 - цвет прямоуголика.</p>
<h4><a name="f_b_circle">buf2d_circle</a></h4>
<p>Рисует в буфере окружность с заданным цветом и радиусом. Пример:</p>
<pre>stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться окружность; 25, 70 - координаты центра; 15 - радиус; 0xff0000 - цвет.</p>
<h4><a name="f_b_hdiv2">buf2d_img_hdiv2</a></h4>
<p>Сжимает изображение в буфере по высоте в 2 раза, при этом размер самого буфера не уменьшается.</p>
<h4><a name="f_b_wdiv2">buf2d_img_wdiv2</a></h4>
<p>Сжимает изображение в буфере по ширине в 2 раза, при этом размер самого буфера не уменьшается.</p>
<h4>buf2d_conv_24_to_8</h4>
<p>Преобразование буфера из 24-битного в 8-битный.
При преобразовании указывается какой цвет берать: 0-синий, 1-зеленый, 2-красный.
Остальные цвета при преобразовании теряются.</p>
<h4>buf2d_conv_24_to_32</h4>
<p>Преобразование буфера из 24-битного в 32-битный.
При преобразовании указывается также 8-битный буфер, который будет использован для создания альфа канала. Пример:</p>
<pre>stdcall [buf2d_conv_24_to_32],buf_a,buf_b ;делаем буфер rgba 32бит</pre>
<p>До выполнения функции буфер buf_a должен быть 24 битным, а буфер buf_b - 8 битным.
После выполнения функции буфер buf_a станет 32 битным, буфер buf_b не изменится.</p>
<h4>buf2d_bit_blt</h4>
<p>Рисует в буфере изображение из другого буфера в указанных координатах. Буфер в котором рисут (приемник) должен быть 24 битным, а тот который рисуется (источник) 24 или 32 битным. Если буфер источник 32 битный, то его прозрачность при рисовании не учитывается, для учета прозрачности используется функция <i>buf2d_bit_blt_transp</i>. Пример:</p>
<pre>stdcall [buf2d_bit_blt], buf_0, 50,30, buf_1 ;прорисовка среднего скина</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться изображение (приемник);
buf_1 - структура буфера с рисуемым изображением (источник);
50,30 - координаты для вывода изображения, определяют положение рисуемой картинки в buf_0.</p>
<h4>buf2d_bit_blt_transp</h4>
<p>Рисует в буфере изображение из другого буфера в указанных координатах, при этом учитывается прозрачность.
Буфер который будет нарисован должен быть 32 битным, а тот в котором рисуют 24 битным.</p>
<h4>buf2d_bit_blt_alpha</h4>
<p>Рисует в буфере изображение из другого буфера в указанных координатах, при этом учитывается прозрачность.
Буфер который будет нарисован должен быть 8 битным, а тот в котором рисуют 24 битным.</p>
<h4>buf2d_curve_bezier</h4>
<p>Рисует по трем точкам отрезок кривой безье.</p>
<pre>stdcall [buf2d_curve_bezier], buf_0, (10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90, dword 0xff</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться кривая;
(10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90 - координаты точек (10,20), (110,10), (50,90);
0xff - цвет прямой.</p>
<h4>buf2d_convert_text_matrix</h4>
<p>Преобразует матрицу с текстом размером 16*16 в размер 1*256. Необходимо для создания матрицы для рисования текста. Перед использованием данной функции предполагается что есть изображение с полным набором символов размером 16 столбцов на 16 строк, из которого предварительно был создан 8 битный буфер.</p>
<pre>stdcall [buf2d_create_f_img], buf_1,[image_data] ;создаем буфер 24 бит на основе данных изображения
stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит
stdcall [buf2d_convert_text_matrix], buf_1</pre>
<p>где buf_1 - структура буфера для формирования текстовой матрицы;
image_data - данные изображения текстовой матрицы в формате rgb, размером 16*16 символов.</p>
<h4>buf2d_draw_text</h4>
<p>Рисует текст в буфере, используя матрицу с текстом размером 1*256 символов. Пример:</p>
<pre>stdcall [buf2d_draw_text], buf_0, buf_1,some_text,20,10,0x4040ff ;рисуем строку с текстом</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться текст;</p>
<p>buf_1 - структура буфера с текстовой матрицей в формате 8 бит, размером 1*256 символов;</p>
<p>some_text - текст, который будет выведен в буфер buf_0.</p>
<h4><a name="f_c_color">buf2d_crop_color</a></h4>
<p>Обрезание буфера, по указанному цвету. Функция используется для уменьшения памяти, занимаемой буфером. Отрезаются крайние части буфера имеющие одинаковый цвет. Пример:</p>
<pre>stdcall [buf2d_crop_color], buf_0,0xffffff,BUF2D_OPT_CROP_TOP+BUF2D_OPT_CROP_BOTTOM</pre>
<p>где buf_0 - структура буфера который будет обрезан;</p>
<p>0xffffff - цвет по которому будет обрезаться буфер;</p>
<p>BUF2D_OPT_CROP_TOP и BUF2D_OPT_CROP_BOTTOM - константы, указывающие с каких сторон обрезать буфер.</p>
<h4>buf2d_offset_h</h4>
<p>Сдвиг изображения в буфере по высоте вверх или вниз.</p>
<h4>buf2d_flood_fill</h4>
<p>Функция для рекурсивной заливки выбранным цветом. Имеется два варианта заливки. Пример:</p>
<pre>stdcall [buf2d_flood_fill], buf_0, 100,200, 0, 0xff,0xff0000</pre>
<p>где buf_0 - структура буфера;</p>
<p>100,200 - координаты точки, с которой начнется заливка;</p>
<p>0 - параметр, определяет алгоритм заливки (может быть 0 или 1);</p>
<p>0xff - цвет заливки;</p>
<p>0xff0000 - зависит от значения 4-го параметра, 1) если 0 - цвет до которого будет заливаться область; 2) если 1 - цвет области которая будет заливатся;</p>
<h4>buf2d_set_pixel</h4>
<p>Функция ставит точку, принимает координаты и цвет. Пример:</p>
<pre>stdcall [buf2d_set_pixel], buf_0, 100,150, 0xff0000</pre>
<p>где buf_0 - структура буфера;</p>
<p>100,150 - координаты точки;</p>
<p>0xff0000 - цвет точки.</p>
<h4>buf2d_get_pixel</h4>
<p>Функция записывает цвет точки в регистр eax, принимает координаты. Пример:</p>
<pre>stdcall [buf2d_get_pixel], buf_0, 100,150</pre>
<p>где buf_0 - структура буфера;</p>
<p>100,150 - координаты точки;</p>
<p>eax - цвет точки (для 8 и 24 битных буферов не используемые старшие биты в eax равны 0) или значение -1 в случае ошибки.</p>
<h4><a name="f_flip_h">buf2d_flip_h</a></h4>
<p>Отражает изображение в буфере по горизонтали (лево и право меняются местами). Пример:</p>
<pre>stdcall buf2d_flip_h, buf_0</pre>
<p>где buf_0 - структура 24-х или 32-х битного буфера.</p>
<h4><a name="f_flip_v">buf2d_flip_v</a></h4>
<p>Отражает изображение в буфере по вертикали (верх и низ меняются местами). Пример:</p>
<pre>stdcall buf2d_flip_v, buf_0</pre>
<p>где buf_0 - структура 24-х или 32-х битного буфера.</p>
<h4><a name="f_filter_d">buf2d_filter_dither</a></h4>
<p>Фильтр, который преобразует изображение из 24 битного буфера в 8-ми цветное. Разрядность буфера не меняется. Пример:</p>
<pre>stdcall [buf2d_filter_dither], buf_0, 0</pre>
<p>где buf_0 - структура 24-х битного буфера;</p>
<p>0 - алгоритм (возможные значения: 0 - Sierra Lite, 1 - Floyd-Steinberg, 2 - Burkers, 3 - Heavyiron_mod, 4 - Atkinson).</p>
<h4><a name="f_v_brush_c">buf2d_vox_brush_create</a></h4>
<p>Создание воксельной кисти. Пример:</p>
<pre>stdcall [buf2d_vox_brush_create], buf_vox, vox_6_7_z
.........
align 4
vox_6_7_z: ;данные для создания минимального единичного вокселя
dd 0,0,1,1,0,0,\
0,2,2,2,2,0,\
2,2,2,2,2,2,\
2,3,2,2,3,2,\
2,3,3,3,3,2,\
0,3,3,3,3,0,\
0,0,3,3,0,0
align 4
buf_vox: ;данные для создания набора воксельных кистей
db 6,7,4,3 ;w,h,h_osn,n
rb BUF_STRUCT_SIZE*(3+1)</pre>
<p>где vox_6_7_z - данные для создания минимального единичного вокселя (0 - означает прозрачный пиксель, другие цифры определяют глубину для заполнения буфера глубины);</p>
<p>buf_vox - данные для создания набора воксельных кистей (6 и 7 - размер минимального единичного вокселя, 4 - высота верхнего основания минимального единичного вокселя, 3 - число создаваемых воксельных кистей для рисования вокселей верхних уровней);</p>
<h4>buf2d_vox_brush_delete</h4>
<p>Удаление воксельной кисти.</p>
<h4>buf2d_vox_obj_draw_1g</h4>
<p>Рисование воксельного объекта с 1-й гранью.</p>
<h4>buf2d_vox_obj_get_img_w_3g</h4>
<p>Возврашает ширину воксельного изображения с 3-мя гранями (которое рисуется функцией <b>buf2d_vox_obj_draw_3g</b>), принимает указатель на кисть и масштаб.</p>
<h4>buf2d_vox_obj_get_img_h_3g</h4>
<p>Возврашает высоту воксельного изображения с 3-мя гранями (которое рисуется функцией <b>buf2d_vox_obj_draw_3g</b>), принимает указатель на кисть и масштаб.</p>
<h4>buf2d_vox_obj_draw_3g</h4>
<p>Рисование воксельного объекта с 3-мя гранями.</p>
<h4>buf2d_vox_obj_draw_3g_scaled</h4>
<p>Рисование части воксельного объекта.</p>
<h4>buf2d_vox_obj_draw_3g_shadows</h4>
<p>Функция рисующая тени для изображений нарисованных с помощью функции <b>buf2d_vox_obj_draw_3g</b> или <b>buf2d_vox_obj_draw_3g_scaled</b>.</p>
<h4>buf2d_vox_obj_draw_pl</h4>
<p>Функция рисующая срез воксельного обьекта.</p>
<h4>buf2d_vox_obj_draw_pl_scaled</h4>
<p>Функция рисующая срез части воксельного обьекта.</p>
<h1><a name="const">Константы</a></h1>
<h4>BUF2D_OPT_CROP_TOP equ 1</h4>
<p>Константа для функции <a href="#f_c_color">buf2d_crop_color</a>, обозначает обрезку буфера сверху</p>
<h4>BUF2D_OPT_CROP_LEFT equ 2</h4>
<p>Константа для функции <a href="#f_c_color">buf2d_crop_color</a>, обозначает обрезку буфера слева</p>
<h4>BUF2D_OPT_CROP_BOTTOM equ 4</h4>
<p>Константа для функции <a href="#f_c_color">buf2d_crop_color</a>, обозначает обрезку буфера снизу</p>
<h4>BUF2D_OPT_CROP_RIGHT equ 8</h4>
<p>Константа для функции <a href="#f_c_color">buf2d_crop_color</a>, обозначает обрезку буфера справа</p>
<h1><a name="tabl_e">Таблица экспорта</a></h1>
<p>Пример таблицы экспорта, расчитанной на использование макроса <b>@use_library_mem</b>:</p>
<pre>align 4
import_buf2d_lib:
dd sz_lib_init
buf2d_create dd sz_buf2d_create
buf2d_create_f_img dd sz_buf2d_create_f_img
buf2d_clear dd sz_buf2d_clear
buf2d_draw dd sz_buf2d_draw
buf2d_delete dd sz_buf2d_delete
buf2d_rotate dd sz_buf2d_rotate
buf2d_resize dd sz_buf2d_resize
buf2d_line dd sz_buf2d_line
buf2d_line_sm dd sz_buf2d_line_sm
buf2d_rect_by_size dd sz_buf2d_rect_by_size
buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
buf2d_circle dd sz_buf2d_circle
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
buf2d_bit_blt dd sz_buf2d_bit_blt
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
buf2d_curve_bezier dd sz_buf2d_curve_bezier
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
buf2d_draw_text dd sz_buf2d_draw_text
buf2d_crop_color dd sz_buf2d_crop_color
buf2d_offset_h dd sz_buf2d_offset_h
buf2d_flood_fill dd sz_buf2d_flood_fill
buf2d_set_pixel dd sz_buf2d_set_pixel
buf2d_get_pixel dd sz_buf2d_get_pixel
buf2d_flip_h dd sz_buf2d_flip_h
buf2d_flip_v dd sz_buf2d_flip_v
buf2d_filter_dither dd sz_buf2d_filter_dither
;воксельные функции:
buf2d_vox_brush_create dd sz_buf2d_vox_brush_create
buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete
buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g
buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g
buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g
buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g
buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled
buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows
buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl
buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled
dd 0,0
sz_lib_init db 'lib_init',0
sz_buf2d_create db 'buf2d_create',0
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
sz_buf2d_clear db 'buf2d_clear',0
sz_buf2d_draw db 'buf2d_draw',0
sz_buf2d_delete db 'buf2d_delete',0
sz_buf2d_rotate db 'buf2d_rotate',0
sz_buf2d_resize db 'buf2d_resize',0
sz_buf2d_line db 'buf2d_line',0
sz_buf2d_line_sm db 'buf2d_line_sm',0
sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
sz_buf2d_circle db 'buf2d_circle',0
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
sz_buf2d_draw_text db 'buf2d_draw_text',0
sz_buf2d_crop_color db 'buf2d_crop_color',0
sz_buf2d_offset_h db 'buf2d_offset_h',0
sz_buf2d_flood_fill db 'buf2d_flood_fill',0
sz_buf2d_set_pixel db 'buf2d_set_pixel',0
sz_buf2d_get_pixel db 'buf2d_get_pixel',0
sz_buf2d_flip_h db 'buf2d_flip_h',0
sz_buf2d_flip_v db 'buf2d_flip_v',0
sz_buf2d_filter_dither db 'buf2d_filter_dither',0
;воксельные функции:
sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0
sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0
sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0
sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0
sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0
sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0
sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0
sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0
sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0
sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0</pre>
<h1><a name="hist">История</a></h1>
<p>02.07.10 - самая первая версия библиотеки, 2 примера использования.</p>
<p>06.07.10 - расширены возможности функции buf2d_bit_blt, теперь она может рисовать 32 битные буферы. Добавлены 2 новые функции: buf2d_bit_blt_alpha и buf2d_cruve_bezier. Небольшие изменения в функции buf2d_line.</p>
<p>16.07.10 - исправлено по 2 ошибки в функциях buf2d_img_hdiv2 и buf2d_img_wdiv2, которые могли проявляться при определенных условиях (если размер изображения был кратен 4Кб и др.). Добавлены 2 функции для вывода текста в буфер buf2d_convert_text_matrix и buf2d_draw_text.</p>
<p>19.07.10 - добавлена функция рисования окружности buf2d_circle;
изменен формат буфера - для ширины и высоты используются 4-х байтные числа вместо 2-х байтных.</p>
<p>29.07.10 - добавлены функции buf2d_crop_color и buf2d_offset_h;
исправления в функции buf2d_delete.</p>
<p>30.09.10 - добавлена функция buf2d_rect_by_size.</p>
<p>04.10.10 - добавлена функция buf2d_filled_rect_by_size, доработана функция buf_bit_blt_alpha.</p>
<p>07.10.10 - доработана функция buf_bit_blt (при попытке нарисовать изображение за пределами правого края буфера приложение вызвавшее функцию падало).</p>
<p>11.10.10 - исправлено задание цветов в некоторых функциях, красный и синий цвета поменял местами. Теперь цвета совпадают с сисемными функциями.</p>
<p>02.11.10 - добавлена функция buf2d_flood_fill.</p>
<p>22.12.10 - изменено имя функции buf2d_cruve_bezier на buf2d_curve_bezier.</p>
<p>25.03.11 - добавлена функция для рисования точки buf2d_set_pixel.</p>
<p>30.08.11 - добавлена функция изменения размеров буфера buf2d_resize.</p>
<p>13.09.11 - оптимизирована работа функций buf2d_filled_rect_by_size buf2d_rect_by_size, добавлены примеры использования библиотеки.</p>
<p>22.09.11 - добавлена функция buf2d_line_sm для рисования сглаженной линии.</p>
<p>20.02.12 - функции buf2d_filled_rect_by_size и buf2d_rect_by_size могут принимать отрицательные размеры для прямоугольников, в функции buf2d_line горизонтальная линия рисуется на 1 пиксель длинее (раньше не дорисовывало), некоторые функции могут рисовать в 8 битных буферах.</p>
<p>23.02.12 - функция buf2d_bit_blt_alpha может принимать отрицательные координаты в позиции копируемого буфера, небольшие доработки в buf2d_bit_blt_transp</p>
<p>11.05.12 - добавлена функция для взятия цвета точки buf2d_get_pixel, доработки в buf2d_set_pixel.</p>
<p>12.06.12 - добавлены функции для рисования воксельной графики.</p>
<p>11.08.12 - функции для сжатия изображений buf2d_img_hdiv2 и buf2d_img_wdiv2 работают с 32 битными буферами.</p>
<p>01.10.12 - добавлена функция поворота изображений на 90 и 180 градусов buf2d_rotate.</p>
<p>15.11.12 - добавлена функция отражения 24 битных изображений по вертикали buf_flip_v, исправления в функции buf2d_img_hdiv2.</p>
<p>14.12.12 - добавлена функция наложения фильтра buf2d_filter_dither.</p>
<p>24.12.12 - добавлены 2 новых алгоритма в функцию наложения фильтра buf2d_filter_dither.</p>
<p>30.01.15 - добавлена поддержка 32 битных буферов в функцию buf_flip_v, добавлена функция отражения по горизонтали buf_flip_h.</p>
<p>09.02.16 - изменена функция buf2d_resize добавлен дополнительный параметр, который указывает менять ли изображение или размеры буфера.</p>
</body>
</html>