Subversion Repositories Kolibri OS

Rev

Rev 2920 | Rev 3040 | 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
    • 2759 IgorA 65
    • buf2d_vox_brush_create
    • 66
      67
      68
    • Константы
    • 1535 IgorA 69
    • Таблица экспорта
    • 70
    • История
    • 71
      72
       
      73

      Вступление

      74

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

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

      1535 IgorA 80
       
      2975 IgorA 81

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

      1535 IgorA 82
       
      2759 IgorA 83

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

      1535 IgorA 84

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

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

      86
       
      87

      8 бит

      88

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

      89

      24 бит

      90

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

      91

      32 бит

      2920 IgorA 92

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

      1535 IgorA 93
       
      94

      Функции

      95
       
      96

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

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

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

      lib_init

      1535 IgorA 110

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

      111
       
      2759 IgorA 112

      buf2d_create

      113

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

      114
      stdcall [buf2d_create], buf_0
      115

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

      116

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

      1535 IgorA 117
       
      2920 IgorA 118

      buf2d_create_f_img

      1535 IgorA 119

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

      120
       
      2975 IgorA 121

      buf2d_clear

      2230 IgorA 122

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

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

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

      1535 IgorA 127
       
      2975 IgorA 128

      buf2d_draw

      1535 IgorA 129

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

      130
       
      2975 IgorA 131

      buf2d_delete

      1535 IgorA 132

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

      133
       
      2975 IgorA 134

      buf2d_rotate

      135

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

      136
      stdcall [buf2d_rotate], buf_0, 90
      137

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

      138
       
      2136 IgorA 139

      buf2d_resize

      140

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

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

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

      143
       
      1535 IgorA 144

      buf2d_line

      1648 IgorA 145

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

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

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

      2230 IgorA 148

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

      1535 IgorA 149
       
      2230 IgorA 150

      buf2d_line_sm

      151

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

      152
       
      1634 IgorA 153

      buf2d_rect_by_size

      2358 IgorA 154

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

      1634 IgorA 155
      stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080
      2358 IgorA 156

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

      1634 IgorA 157
       
      1642 IgorA 158

      buf2d_filled_rect_by_size

      2358 IgorA 159

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

      1642 IgorA 160
      stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080
      2358 IgorA 161

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

      1642 IgorA 162
       
      1535 IgorA 163

      buf2d_circle

      1648 IgorA 164

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

      1535 IgorA 165
      stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000
      166

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

      167
       
      2920 IgorA 168

      buf2d_img_hdiv2

      1535 IgorA 169

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

      170
       
      2920 IgorA 171

      buf2d_img_wdiv2

      1535 IgorA 172

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

      173
       
      174

      buf2d_conv_24_to_8

      175

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

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

      178
       
      179

      buf2d_conv_24_to_32

      180

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

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

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

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

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

      185
       
      186

      buf2d_bit_blt

      1648 IgorA 187

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

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

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

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

      1535 IgorA 192
       
      193

      buf2d_bit_blt_transp

      194

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

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

      196
       
      197

      buf2d_bit_blt_alpha

      198

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

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

      200
       
      1727 IgorA 201

      buf2d_curve_bezier

      1535 IgorA 202

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

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

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

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

      1535 IgorA 207
       
      208

      buf2d_convert_text_matrix

      209

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

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

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

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

      215
       
      216

      buf2d_draw_text

      217

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

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

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

      220

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

      221

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

      1535 IgorA 222
       
      2815 IgorA 223

      buf2d_crop_color

      1535 IgorA 224

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

      225
      stdcall [buf2d_crop_color], buf_0,0xffffff,BUF2D_OPT_CROP_TOP+BUF2D_OPT_CROP_BOTTOM
      2815 IgorA 226

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

      227

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

      228

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

      1535 IgorA 229
       
      230

      buf2d_offset_h

      231

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

      232
       
      1684 IgorA 233

      buf2d_flood_fill

      2358 IgorA 234

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

      1684 IgorA 235
      stdcall [buf2d_flood_fill], buf_0, 100,200, 0, 0xff,0xff0000
      2815 IgorA 236

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

      237

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

      238

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

      239

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

      240

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

      1684 IgorA 241
       
      1910 IgorA 242

      buf2d_set_pixel

      2658 IgorA 243

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

      1910 IgorA 244
      stdcall [buf2d_set_pixel], buf_0, 100,150, 0xff0000
      2658 IgorA 245

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

      246

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

      247

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

      1910 IgorA 248
       
      2658 IgorA 249

      buf2d_get_pixel

      250

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

      251
      stdcall [buf2d_get_pixel], buf_0, 100,150
      252

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

      253

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

      254

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

      255
       
      2759 IgorA 256

      buf2d_vox_brush_create

      257

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

      258
       
      259

      buf2d_vox_brush_delete

      260

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

      261
       
      2815 IgorA 262

      buf2d_vox_obj_draw_1g

      263

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

      264
       
      2759 IgorA 265

      buf2d_vox_obj_get_img_w_3g

      266

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

      267
       
      268

      buf2d_vox_obj_get_img_h_3g

      269

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

      270
       
      271

      buf2d_vox_obj_draw_3g

      272

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

      273
       
      274

      buf2d_vox_obj_draw_3g_scaled

      275

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

      276
       
      277

      buf2d_vox_obj_draw_3g_shadows

      278

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

      279
       
      280

      buf2d_vox_obj_draw_pl

      281

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

      282
       
      283

      buf2d_vox_obj_draw_pl_scaled

      284

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

      285
       
      1535 IgorA 286

      Константы

      287

      BUF2D_OPT_CROP_TOP equ 1

      2815 IgorA 288

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

      1538 IgorA 289

      BUF2D_OPT_CROP_LEFT equ 2

      2815 IgorA 290

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

      1535 IgorA 291

      BUF2D_OPT_CROP_BOTTOM equ 4

      2815 IgorA 292

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

      1535 IgorA 293

      BUF2D_OPT_CROP_RIGHT equ 8

      2815 IgorA 294

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

      1535 IgorA 295
       
      296

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

      297

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

      298
      align 4
      299
      import_buf2d_lib:
      300
      	dd sz_lib_init
      301
      	buf2d_create dd sz_buf2d_create
      302
      	buf2d_create_f_img dd sz_buf2d_create_f_img
      303
      	buf2d_clear dd sz_buf2d_clear
      304
      	buf2d_draw dd sz_buf2d_draw
      305
      	buf2d_delete dd sz_buf2d_delete
      2975 IgorA 306
      	buf2d_rotate dd sz_buf2d_rotate
      2136 IgorA 307
      	buf2d_resize dd sz_buf2d_resize
      1535 IgorA 308
      	buf2d_line dd sz_buf2d_line
      2230 IgorA 309
      	buf2d_line_sm dd sz_buf2d_line_sm
      1634 IgorA 310
      	buf2d_rect_by_size dd sz_buf2d_rect_by_size
      1642 IgorA 311
      	buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
      1535 IgorA 312
      	buf2d_circle dd sz_buf2d_circle
      313
      	buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
      314
      	buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
      315
      	buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
      316
      	buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
      317
      	buf2d_bit_blt dd sz_buf2d_bit_blt
      318
      	buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
      319
      	buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
      1727 IgorA 320
      	buf2d_curve_bezier dd sz_buf2d_curve_bezier
      1535 IgorA 321
      	buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
      322
      	buf2d_draw_text dd sz_buf2d_draw_text
      323
      	buf2d_crop_color dd sz_buf2d_crop_color
      324
      	buf2d_offset_h dd sz_buf2d_offset_h
      1684 IgorA 325
      	buf2d_flood_fill dd sz_buf2d_flood_fill
      1910 IgorA 326
      	buf2d_set_pixel dd sz_buf2d_set_pixel
      2658 IgorA 327
      	buf2d_get_pixel dd sz_buf2d_get_pixel
      1535 IgorA 328
       
      2759 IgorA 329
      	;воксельные функции:
      330
      	buf2d_vox_brush_create dd sz_buf2d_vox_brush_create
      331
      	buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete
      2815 IgorA 332
      	buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g
      2759 IgorA 333
      	buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g
      334
      	buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g
      335
      	buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g
      336
      	buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled
      337
      	buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows
      338
      	buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl
      339
      	buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled
      340
       
      1535 IgorA 341
      	dd 0,0
      342
      	sz_lib_init db 'lib_init',0
      343
      	sz_buf2d_create db 'buf2d_create',0
      344
      	sz_buf2d_create_f_img db 'buf2d_create_f_img',0
      345
      	sz_buf2d_clear db 'buf2d_clear',0
      346
      	sz_buf2d_draw db 'buf2d_draw',0
      347
      	sz_buf2d_delete db 'buf2d_delete',0
      2975 IgorA 348
      	sz_buf2d_rotate db 'buf2d_rotate',0
      2136 IgorA 349
      	sz_buf2d_resize db 'buf2d_resize',0
      1535 IgorA 350
      	sz_buf2d_line db 'buf2d_line',0
      2230 IgorA 351
      	sz_buf2d_line_sm db 'buf2d_line_sm',0
      1634 IgorA 352
      	sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
      1642 IgorA 353
      	sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
      1535 IgorA 354
      	sz_buf2d_circle db 'buf2d_circle',0
      355
      	sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
      356
      	sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
      357
      	sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
      358
      	sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
      359
      	sz_buf2d_bit_blt db 'buf2d_bit_blt',0
      360
      	sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
      361
      	sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
      1727 IgorA 362
      	sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
      1535 IgorA 363
      	sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
      364
      	sz_buf2d_draw_text db 'buf2d_draw_text',0
      365
      	sz_buf2d_crop_color db 'buf2d_crop_color',0
      1684 IgorA 366
      	sz_buf2d_offset_h db 'buf2d_offset_h',0
      1910 IgorA 367
      	sz_buf2d_flood_fill db 'buf2d_flood_fill',0
      2658 IgorA 368
      	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
      2759 IgorA 369
      	sz_buf2d_get_pixel db 'buf2d_get_pixel',0
      1535 IgorA 370
       
      2759 IgorA 371
      	;воксельные функции:
      372
      	sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0
      373
      	sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0
      2815 IgorA 374
      	sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0
      2759 IgorA 375
      	sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0
      376
      	sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0
      377
      	sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0
      378
      	sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0
      379
      	sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0
      380
      	sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0
      381
      	sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0
      382
       
      1535 IgorA 383

      История

      384

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

      385

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

      386

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

      387

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

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

      389

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

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

      1634 IgorA 391

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

      1642 IgorA 392

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

      1648 IgorA 393

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

      1653 IgorA 394

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

      1684 IgorA 395

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

      1727 IgorA 396

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

      2230 IgorA 397

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

      2136 IgorA 398

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

      2383 IgorA 399

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

      2358 IgorA 400

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

      2383 IgorA 401

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

      2658 IgorA 402

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

      403

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

      2759 IgorA 404

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

      2920 IgorA 405

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

      2975 IgorA 406

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

      2383 IgorA 407
      1535 IgorA 408