Subversion Repositories Kolibri OS

Rev

Rev 2975 | Rev 3105 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1535 IgorA 1
2
3
библиотека для работы с 2d буферами
4
5
45
46
 
47
48
 
49

Оглавление

50
    51
  • Вступление
  • 2759 IgorA 52
  • Форматы буферов
  • 1535 IgorA 53
  • Функции
  • 2759 IgorA 54
      55
    • lib_init
    • 56
    • buf2d_create
    • 2920 IgorA 57
    • buf2d_create_f_img
    • 2975 IgorA 58
    • buf2d_clear
    • 59
    • buf2d_draw
    • 60
    • buf2d_delete
    • 61
    • buf2d_rotate
    • 2920 IgorA 62
    • buf2d_img_hdiv2
    • 63
    • buf2d_img_wdiv2
    • 2815 IgorA 64
    • buf2d_crop_color
    • 3040 IgorA 65
    • buf2d_flip_v
    • 66
       
      2759 IgorA 67
    • buf2d_vox_brush_create
    • 68
      69
      70
    • Константы
    • 1535 IgorA 71
    • Таблица экспорта
    • 72
    • История
    • 73
      74
       
      75

      Вступление

      76

      Документация к свободной библиотеке buf2d.asm, для ОС Колибри.

      77
       Эта библиотека создана для работы с 2d изображениями.
      1648 IgorA 78
       С ее помощью можно создавать буфера с изображениями в памяти, и при необходимости выводить их на экран.
      2759 IgorA 79
       Изображения можно накладывать одно на другое, поддерживается работа с прозрачными изображениями.
      80
       Есть функции рисования линий, кривых Безье, прямоугольников, окружностей.
      81
       Также есть функции для рисований воксельной графики.

      1535 IgorA 82
       
      3040 IgorA 83

      Последнее обновление библиотеки 15.11.12.

      1535 IgorA 84
       
      2759 IgorA 85

      Форматы буферов

      1535 IgorA 86

      Поддерживается 3 формата буферов.

      87
       Каждая функция при работе с буферами может быть расчитана на работу с определенными форматами изображений.

      88
       
      89

      8 бит

      90

      Сожержит альфа канал a (прозрачность) изображения. На экран не выводится. Используется для созданя 32-битных буферов.

      91

      24 бит

      92

      Данный буфер содержит изображение в формате rgb. Может выводится на экран.

      93

      32 бит

      2920 IgorA 94

      Содержит прозрачное изображение в формате rgba. На экран не выводится. Используется для наложения изображений. Если a=255 то пиксель прозрачный, если 0 не прозрачный.

      1535 IgorA 95
       
      96

      Функции

      97
       
      98

      Почти все функции 1-м параметром принимают указатель на структуру буфера,

      99
       из которой могут использоваться параметры, нужные для работы конкретной функции.
      100
       Пример структуры буфера изображения:

      101
      align 4
      102
      buf_0:
      103
      	dd    0 ;+ 0 указатель на буфер изображения
      104
      	dw  100 ;+ 4 отступ слева
      105
      	dw   10 ;+ 6 отступ справа
      106
      	dd  150 ;+ 8 ширина
      107
      	dd  100 ;+12 высота
      108
      	dd 0x80 ;+16 фоновый цвет
      109
      	db   24 ;+20 бит на пиксель
      110
       
      2759 IgorA 111

      lib_init

      1535 IgorA 112

      Эта функция получает указатели на функции работы с памятью, вызыватся должна при загрузке библиотеки. Можете использовать макрос @use_library_mem, для ее автоматической настройки.

      113
       
      2759 IgorA 114

      buf2d_create

      115

      Создает буфер и чистит его фоновым цветом. Пример:

      116
      stdcall [buf2d_create], buf_0
      117

      где buf_0 - структура буфера.

      118

      Параметры для создания буфера берутся из структуры.

      1535 IgorA 119
       
      2920 IgorA 120

      buf2d_create_f_img

      1535 IgorA 121

      Создает буфер на основе изображения в формате rgb.

      122
       
      2975 IgorA 123

      buf2d_clear

      2230 IgorA 124

      Чистит буфер указаным цветом. Пример:

      125
      buf2d_color equ dword[edi+16] ;цвет фона буфера
      126
      mov edi,buf_0
      127
      stdcall [buf2d_clear], edi, buf2d_color ;очищаем экран фоновым цветом
      128

      где buf_0 - структура буфера.

      1535 IgorA 129
       
      2975 IgorA 130

      buf2d_draw

      1535 IgorA 131

      Рисует буфер на экране (работает через системную ф. 7). Рисуются только буфера с глубиной цвета 24 бита.

      132
       
      2975 IgorA 133

      buf2d_delete

      1535 IgorA 134

      Освобождает память занятую изображением буфера.

      135
       
      2975 IgorA 136

      buf2d_rotate

      137

      Поворачивает буфер на 90 или 180 градусов. Пример:

      138
      stdcall [buf2d_rotate], buf_0, 90
      139

      где buf_0 - структура буфера (может быть 8, 24 или 32 битным); 90 - угол поворота.

      140
       
      2136 IgorA 141

      buf2d_resize

      142

      Изменяет размеры буфера. Пока поддерживаются буфера с глубиной цвета 24 бита. Пример:

      143
      stdcall [buf2d_resize], buf_0, 0,300 ;изменяем высоту буфера
      144

      где buf_0 - структура буфера в котором будет рисоваться линия; 0 - новая ширина буфера (0 означает не изменять размер); 300 - новая высота буфера.

      145
       
      1535 IgorA 146

      buf2d_line

      1648 IgorA 147

      Рисует в буфере линию с заданным цветом и координатами. Пример:

      1535 IgorA 148
      stdcall [buf2d_line], buf_0, 30,10, 110,70, 0xffff00 ;рисуем линию
      149

      где buf_0 - структура буфера в котором будет рисоваться линия; 30, 10, 110, 70 - координаты линии; 0xffff00 - цвет линии.

      2230 IgorA 150

      Для рисования сглаженной линии используйте buf2d_line_sm.

      1535 IgorA 151
       
      2230 IgorA 152

      buf2d_line_sm

      153

      Рисует в буфере линию принимает такиже параметры как и функция buf2d_line. Данная функция рисует сглаженную линию более красивую чем buf2d_line, но работает медленнее неё за счет вычисления смешанных цветов фона и самой линии.

      154
       
      1634 IgorA 155

      buf2d_rect_by_size

      2358 IgorA 156

      Рисует прямоугольную рамку, по двум координатам, 2-я координата задана по размеру. Если размеры отрицательные рамка рисуется в обратном направлении.

      1634 IgorA 157
      stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080
      2358 IgorA 158

      где buf_0 - структура буфера в котором будет рисоваться прямоугольник; 10, 10 - координаты левого верхнего угла (при отрицательных размерах координата правого нижнего); 150, 100 - размер прямоугольника; 0x8080 - цвет линии.

      1634 IgorA 159
       
      1642 IgorA 160

      buf2d_filled_rect_by_size

      2358 IgorA 161

      Рисует закрашенный прямоугольник, по двум координатам, 2-я координата задана по размеру. Если размер задать 1*1, то будет нарисована точка размером в 1 пиксель, т.е. размер прямоугольника в пикселях будет равен указанному. Если размеры отрицательные прямоугольник рисуется в обратном направлении.

      1642 IgorA 162
      stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080
      2358 IgorA 163

      где buf_0 - структура буфера в котором будет рисоваться прямоугольник; 10, 10 - координаты левого верхнего угла (при отрицательных размерах координата правого нижнего); 150, 100 - размер прямоугольника; 0x8080 - цвет прямоуголика.

      1642 IgorA 164
       
      1535 IgorA 165

      buf2d_circle

      1648 IgorA 166

      Рисует в буфере окружность с заданным цветом и радиусом. Пример:

      1535 IgorA 167
      stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000
      168

      где buf_0 - структура буфера в котором будет рисоваться окружность; 25, 70 - координаты центра; 15 - радиус; 0xff0000 - цвет.

      169
       
      2920 IgorA 170

      buf2d_img_hdiv2

      1535 IgorA 171

      Сжимает изображение в буфере по высоте в 2 раза, при этом размер самого буфера не уменьшается.

      172
       
      2920 IgorA 173

      buf2d_img_wdiv2

      1535 IgorA 174

      Сжимает изображение в буфере по ширине в 2 раза, при этом размер самого буфера не уменьшается.

      175
       
      176

      buf2d_conv_24_to_8

      177

      Преобразование буфера из 24-битного в 8-битный.

      178
       При преобразовании указывается какой цвет берать: 0-синий, 1-зеленый, 2-красный.
      179
       Остальные цвета при преобразовании теряются.

      180
       
      181

      buf2d_conv_24_to_32

      182

      Преобразование буфера из 24-битного в 32-битный.

      183
       При преобразовании указывается также 8-битный буфер, который будет использован для создания альфа канала. Пример:

      184
      stdcall [buf2d_conv_24_to_32],buf_a,buf_b ;делаем буфер rgba 32бит
      185

      До выполнения функции буфер buf_a должен быть 24 битным, а буфер buf_b - 8 битным.

      186
       После выполнения функции буфер buf_a станет 32 битным, буфер buf_b не изменится.

      187
       
      188

      buf2d_bit_blt

      1648 IgorA 189

      Рисует в буфере изображение из другого буфера в указанных координатах. Буфер в котором рисут (приемник) должен быть 24 битным, а тот который рисуется (источник) 24 или 32 битным. Если буфер источник 32 битный, то его прозрачность при рисовании не учитывается, для учета прозрачности используется функция buf2d_bit_blt_transp. Пример:

      190
      stdcall [buf2d_bit_blt], buf_0, 50,30, buf_1 ;прорисовка среднего скина
      191

      где buf_0 - структура буфера в котором будет рисоваться изображение (приемник);

      192
        buf_1 - структура буфера с рисуемым изображением (источник);
      193
        50,30 - координаты для вывода изображения, определяют положение рисуемой картинки в buf_0.

      1535 IgorA 194
       
      195

      buf2d_bit_blt_transp

      196

      Рисует в буфере изображение из другого буфера в указанных координатах, при этом учитывается прозрачность.

      197
       Буфер который будет нарисован должен быть 32 битным, а тот в котором рисуют 24 битным.

      198
       
      199

      buf2d_bit_blt_alpha

      200

      Рисует в буфере изображение из другого буфера в указанных координатах, при этом учитывается прозрачность.

      201
       Буфер который будет нарисован должен быть 8 битным, а тот в котором рисуют 24 битным.

      202
       
      1727 IgorA 203

      buf2d_curve_bezier

      1535 IgorA 204

      Рисует по трем точкам отрезок кривой безье.

      2358 IgorA 205
      stdcall [buf2d_curve_bezier], buf_0, (10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90, dword 0xff
      206

      где buf_0 - структура буфера в котором будет рисоваться кривая;

      207
        (10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90 - координаты точек (10,20), (110,10), (50,90);
      208
        0xff - цвет прямой.

      1535 IgorA 209
       
      210

      buf2d_convert_text_matrix

      211

      Преобразует матрицу с текстом размером 16*16 в размер 1*256. Необходимо для создания матрицы для рисования текста. Перед использованием данной функции предполагается что есть изображение с полным набором символов размером 16 столбцов на 16 строк, из которого предварительно был создан 8 битный буфер.

      212
      stdcall [buf2d_create_f_img], buf_1,[image_data] ;создаем буфер 24 бит на основе данных изображения
      213
      stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит
      214
      stdcall [buf2d_convert_text_matrix], buf_1
      215

      где buf_1 - структура буфера для формирования текстовой матрицы;

      216
        image_data - данные изображения текстовой матрицы в формате rgb, размером 16*16 символов.

      217
       
      218

      buf2d_draw_text

      219

      Рисует текст в буфере, используя матрицу с текстом размером 1*256 символов. Пример:

      220
      stdcall [buf2d_draw_text], buf_0, buf_1,some_text,20,10,0x4040ff ;рисуем строку с текстом
      2815 IgorA 221

      где buf_0 - структура буфера в котором будет рисоваться текст;

      222

      buf_1 - структура буфера с текстовой матрицей в формате 8 бит, размером 1*256 символов;

      223

      some_text - текст, который будет выведен в буфер buf_0.

      1535 IgorA 224
       
      2815 IgorA 225

      buf2d_crop_color

      1535 IgorA 226

      Обрезание буфера, по указанному цвету. Функция используется для уменьшения памяти, занимаемой буфером. Отрезаются крайние части буфера имеющие одинаковый цвет. Пример:

      227
      stdcall [buf2d_crop_color], buf_0,0xffffff,BUF2D_OPT_CROP_TOP+BUF2D_OPT_CROP_BOTTOM
      2815 IgorA 228

      где buf_0 - структура буфера который будет обрезан;

      229

      0xffffff - цвет по которому будет обрезаться буфер;

      230

      BUF2D_OPT_CROP_TOP и BUF2D_OPT_CROP_BOTTOM - константы, указывающие с каких сторон обрезать буфер.

      1535 IgorA 231
       
      232

      buf2d_offset_h

      233

      Сдвиг изображения в буфере по высоте вверх или вниз.

      234
       
      1684 IgorA 235

      buf2d_flood_fill

      2358 IgorA 236

      Функция для рекурсивной заливки выбранным цветом. Имеется два варианта заливки. Пример:

      1684 IgorA 237
      stdcall [buf2d_flood_fill], buf_0, 100,200, 0, 0xff,0xff0000
      2815 IgorA 238

      где buf_0 - структура буфера;

      239

      100,200 - координаты точки, с которой начнется заливка;

      240

      0 - параметр, определяет алгоритм заливки (может быть 0 или 1);

      241

      0xff - цвет заливки;

      242

      0xff0000 - зависит от значения 4-го параметра, 1) если 0 - цвет до которого будет заливаться область; 2) если 1 - цвет области которая будет заливатся;

      1684 IgorA 243
       
      1910 IgorA 244

      buf2d_set_pixel

      3040 IgorA 245

      Функция ставит точку, принимает координаты и цвет. Пример:

      1910 IgorA 246
      stdcall [buf2d_set_pixel], buf_0, 100,150, 0xff0000
      2658 IgorA 247

      где buf_0 - структура буфера;

      248

      100,150 - координаты точки;

      249

      0xff0000 - цвет точки.

      1910 IgorA 250
       
      2658 IgorA 251

      buf2d_get_pixel

      3040 IgorA 252

      Функция записывает цвет точки в регистр eax, принимает координаты. Пример:

      2658 IgorA 253
      stdcall [buf2d_get_pixel], buf_0, 100,150
      254

      где buf_0 - структура буфера;

      255

      100,150 - координаты точки;

      256

      eax - цвет точки (для 8 и 24 битных буферов не используемые старшие биты в eax равны 0) или значение -1 в случае ошибки.

      257
       
      3040 IgorA 258

      buf2d_flip_v

      259

      Отражает изображение в буфере по вертикали (верх и низ меняются местами). Пример:

      260
      stdcall buf2d_flip_v, buf_0
      261

      где buf_0 - структура 24-х битного буфера.

      262
       
      2759 IgorA 263

      buf2d_vox_brush_create

      3040 IgorA 264

      Создание воксельной кисти. Пример:

      265
      stdcall [buf2d_vox_brush_create], buf_vox, vox_6_7_z
      2759 IgorA 266
       
      3040 IgorA 267
      .........
      268
       
      269
      align 4
      270
      vox_6_7_z: ;данные для создания минимального единичного вокселя
      271
      dd 0,0,1,1,0,0,\
      272
         0,2,2,2,2,0,\
      273
         2,2,2,2,2,2,\
      274
         2,3,2,2,3,2,\
      275
         2,3,3,3,3,2,\
      276
         0,3,3,3,3,0,\
      277
         0,0,3,3,0,0
      278
       
      279
      align 4
      280
      buf_vox: ;данные для создания набора воксельных кистей
      281
      	db 6,7,4,3 ;w,h,h_osn,n
      282
      	rb BUF_STRUCT_SIZE*(3+1)
      283

      где vox_6_7_z - данные для создания минимального единичного вокселя (0 - означает прозрачный пиксель, другие цифры определяют глубину для заполнения буфера глубины);

      284

      buf_vox - данные для создания набора воксельных кистей (6 и 7 - размер минимального единичного вокселя, 4 - высота верхнего основания минимального единичного вокселя, 3 - число создаваемых воксельных кистей для рисования вокселей верхних уровней);

      285
       
      2759 IgorA 286

      buf2d_vox_brush_delete

      287

      Удаление воксельной кисти.

      288
       
      2815 IgorA 289

      buf2d_vox_obj_draw_1g

      290

      Рисование воксельного объекта с 1-й гранью.

      291
       
      2759 IgorA 292

      buf2d_vox_obj_get_img_w_3g

      293

      Возврашает ширину воксельного изображения с 3-мя гранями (которое рисуется функцией buf2d_vox_obj_draw_3g), принимает указатель на кисть и масштаб.

      294
       
      295

      buf2d_vox_obj_get_img_h_3g

      296

      Возврашает высоту воксельного изображения с 3-мя гранями (которое рисуется функцией buf2d_vox_obj_draw_3g), принимает указатель на кисть и масштаб.

      297
       
      298

      buf2d_vox_obj_draw_3g

      299

      Рисование воксельного объекта с 3-мя гранями.

      300
       
      301

      buf2d_vox_obj_draw_3g_scaled

      302

      Рисование части воксельного объекта.

      303
       
      304

      buf2d_vox_obj_draw_3g_shadows

      305

      Функция рисующая тени для изображений нарисованных с помощью функции buf2d_vox_obj_draw_3g или buf2d_vox_obj_draw_3g_scaled.

      306
       
      307

      buf2d_vox_obj_draw_pl

      308

      Функция рисующая срез воксельного обьекта.

      309
       
      310

      buf2d_vox_obj_draw_pl_scaled

      311

      Функция рисующая срез части воксельного обьекта.

      312
       
      1535 IgorA 313

      Константы

      314

      BUF2D_OPT_CROP_TOP equ 1

      2815 IgorA 315

      Константа для функции buf2d_crop_color, обозначает обрезку буфера сверху

      1538 IgorA 316

      BUF2D_OPT_CROP_LEFT equ 2

      2815 IgorA 317

      Константа для функции buf2d_crop_color, обозначает обрезку буфера слева

      1535 IgorA 318

      BUF2D_OPT_CROP_BOTTOM equ 4

      2815 IgorA 319

      Константа для функции buf2d_crop_color, обозначает обрезку буфера снизу

      1535 IgorA 320

      BUF2D_OPT_CROP_RIGHT equ 8

      2815 IgorA 321

      Константа для функции buf2d_crop_color, обозначает обрезку буфера справа

      1535 IgorA 322
       
      323

      Таблица экспорта

      324

      Пример таблицы экспорта, расчитанной на использование макроса @use_library_mem:

      325
      align 4
      326
      import_buf2d_lib:
      327
      	dd sz_lib_init
      328
      	buf2d_create dd sz_buf2d_create
      329
      	buf2d_create_f_img dd sz_buf2d_create_f_img
      330
      	buf2d_clear dd sz_buf2d_clear
      331
      	buf2d_draw dd sz_buf2d_draw
      332
      	buf2d_delete dd sz_buf2d_delete
      2975 IgorA 333
      	buf2d_rotate dd sz_buf2d_rotate
      2136 IgorA 334
      	buf2d_resize dd sz_buf2d_resize
      1535 IgorA 335
      	buf2d_line dd sz_buf2d_line
      2230 IgorA 336
      	buf2d_line_sm dd sz_buf2d_line_sm
      1634 IgorA 337
      	buf2d_rect_by_size dd sz_buf2d_rect_by_size
      1642 IgorA 338
      	buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
      1535 IgorA 339
      	buf2d_circle dd sz_buf2d_circle
      340
      	buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
      341
      	buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
      342
      	buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
      343
      	buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
      344
      	buf2d_bit_blt dd sz_buf2d_bit_blt
      345
      	buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
      346
      	buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
      1727 IgorA 347
      	buf2d_curve_bezier dd sz_buf2d_curve_bezier
      1535 IgorA 348
      	buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
      349
      	buf2d_draw_text dd sz_buf2d_draw_text
      350
      	buf2d_crop_color dd sz_buf2d_crop_color
      351
      	buf2d_offset_h dd sz_buf2d_offset_h
      1684 IgorA 352
      	buf2d_flood_fill dd sz_buf2d_flood_fill
      1910 IgorA 353
      	buf2d_set_pixel dd sz_buf2d_set_pixel
      2658 IgorA 354
      	buf2d_get_pixel dd sz_buf2d_get_pixel
      3040 IgorA 355
      	buf2d_flip_v dd sz_buf2d_flip_v
      1535 IgorA 356
       
      2759 IgorA 357
      	;воксельные функции:
      358
      	buf2d_vox_brush_create dd sz_buf2d_vox_brush_create
      359
      	buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete
      2815 IgorA 360
      	buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g
      2759 IgorA 361
      	buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g
      362
      	buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g
      363
      	buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g
      364
      	buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled
      365
      	buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows
      366
      	buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl
      367
      	buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled
      368
       
      1535 IgorA 369
      	dd 0,0
      370
      	sz_lib_init db 'lib_init',0
      371
      	sz_buf2d_create db 'buf2d_create',0
      372
      	sz_buf2d_create_f_img db 'buf2d_create_f_img',0
      373
      	sz_buf2d_clear db 'buf2d_clear',0
      374
      	sz_buf2d_draw db 'buf2d_draw',0
      375
      	sz_buf2d_delete db 'buf2d_delete',0
      2975 IgorA 376
      	sz_buf2d_rotate db 'buf2d_rotate',0
      2136 IgorA 377
      	sz_buf2d_resize db 'buf2d_resize',0
      1535 IgorA 378
      	sz_buf2d_line db 'buf2d_line',0
      2230 IgorA 379
      	sz_buf2d_line_sm db 'buf2d_line_sm',0
      1634 IgorA 380
      	sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
      1642 IgorA 381
      	sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
      1535 IgorA 382
      	sz_buf2d_circle db 'buf2d_circle',0
      383
      	sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
      384
      	sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
      385
      	sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
      386
      	sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
      387
      	sz_buf2d_bit_blt db 'buf2d_bit_blt',0
      388
      	sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
      389
      	sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
      1727 IgorA 390
      	sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
      1535 IgorA 391
      	sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
      392
      	sz_buf2d_draw_text db 'buf2d_draw_text',0
      393
      	sz_buf2d_crop_color db 'buf2d_crop_color',0
      1684 IgorA 394
      	sz_buf2d_offset_h db 'buf2d_offset_h',0
      1910 IgorA 395
      	sz_buf2d_flood_fill db 'buf2d_flood_fill',0
      2658 IgorA 396
      	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
      2759 IgorA 397
      	sz_buf2d_get_pixel db 'buf2d_get_pixel',0
      3040 IgorA 398
      	sz_buf2d_flip_v db 'buf2d_flip_v',0
      1535 IgorA 399
       
      2759 IgorA 400
      	;воксельные функции:
      401
      	sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0
      402
      	sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0
      2815 IgorA 403
      	sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0
      2759 IgorA 404
      	sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0
      405
      	sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0
      406
      	sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0
      407
      	sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0
      408
      	sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0
      409
      	sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0
      410
      	sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0
      411
       
      1535 IgorA 412

      История

      413

      02.07.10 - самая первая версия библиотеки, 2 примера использования.

      414

      06.07.10 - расширены возможности функции buf2d_bit_blt, теперь она может рисовать 32 битные буферы. Добавлены 2 новые функции: buf2d_bit_blt_alpha и buf2d_cruve_bezier. Небольшие изменения в функции buf2d_line.

      415

      16.07.10 - исправлено по 2 ошибки в функциях buf2d_img_hdiv2 и buf2d_img_wdiv2, которые могли проявляться при определенных условиях (если размер изображения был кратен 4Кб и др.). Добавлены 2 функции для вывода текста в буфер buf2d_convert_text_matrix и buf2d_draw_text.

      416

      19.07.10 - добавлена функция рисования окружности buf2d_circle;

      417
       изменен формат буфера - для ширины и высоты используются 4-х байтные числа вместо 2-х байтных.

      418

      29.07.10 - добавлены функции buf2d_crop_color и buf2d_offset_h;

      419
       исправления в функции buf2d_delete.

      1634 IgorA 420

      30.09.10 - добавлена функция buf2d_rect_by_size.

      1642 IgorA 421

      04.10.10 - добавлена функция buf2d_filled_rect_by_size, доработана функция buf_bit_blt_alpha.

      1648 IgorA 422

      07.10.10 - доработана функция buf_bit_blt (при попытке нарисовать изображение за пределами правого края буфера приложение вызвавшее функцию падало).

      1653 IgorA 423

      11.10.10 - исправлено задание цветов в некоторых функциях, красный и синий цвета поменял местами. Теперь цвета совпадают с сисемными функциями.

      1684 IgorA 424

      02.11.10 - добавлена функция buf2d_flood_fill.

      1727 IgorA 425

      22.12.10 - изменено имя функции buf2d_cruve_bezier на buf2d_curve_bezier.

      2230 IgorA 426

      25.03.11 - добавлена функция для рисования точки buf2d_set_pixel.

      2136 IgorA 427

      30.08.11 - добавлена функция изменения размеров буфера buf2d_resize.

      2383 IgorA 428

      13.09.11 - оптимизирована работа функций buf2d_filled_rect_by_size buf2d_rect_by_size, добавлены примеры использования библиотеки.

      2358 IgorA 429

      22.09.11 - добавлена функция buf2d_line_sm для рисования сглаженной линии.

      2383 IgorA 430

      20.02.12 - функции buf2d_filled_rect_by_size и buf2d_rect_by_size могут принимать отрицательные размеры для прямоугольников, в функции buf2d_line горизонтальная линия рисуется на 1 пиксель длинее (раньше не дорисовывало), некоторые функции могут рисовать в 8 битных буферах.

      2658 IgorA 431

      23.02.12 - функция buf2d_bit_blt_alpha может принимать отрицательные координаты в позиции копируемого буфера, небольшие доработки в buf2d_bit_blt_transp

      432

      11.05.12 - добавлена функция для взятия цвета точки buf2d_get_pixel, доработки в buf2d_set_pixel.

      2759 IgorA 433

      12.06.12 - добавлены функции для рисования воксельной графики.

      2920 IgorA 434

      11.08.12 - функции для сжатия изображений buf2d_img_hdiv2 и buf2d_img_wdiv2 работают с 32 битными буферами.

      2975 IgorA 435

      01.10.12 - добавлена функция поворота изображений на 90 и 180 градусов buf2d_rotate.

      3040 IgorA 436

      15.11.12 - добавлена функция отражения 24 битных изображений по вертикали buf_flip_v, исправления в функции buf2d_img_hdiv2.

      2383 IgorA 437
      1535 IgorA 438