Subversion Repositories Kolibri OS

Rev

Rev 2815 | Rev 2975 | 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
    • 58
    • buf2d_img_hdiv2
    • 59
    • buf2d_img_wdiv2
    • 2815 IgorA 60
    • buf2d_crop_color
    • 2759 IgorA 61
    • buf2d_vox_brush_create
    • 62
      63
      64
    • Константы
    • 1535 IgorA 65
    • Таблица экспорта
    • 66
    • История
    • 67
      68
       
      69

      Вступление

      70

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

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

      1535 IgorA 76
       
      2920 IgorA 77

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

      1535 IgorA 78
       
      2759 IgorA 79

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

      1535 IgorA 80

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

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

      82
       
      83

      8 бит

      84

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

      85

      24 бит

      86

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

      87

      32 бит

      2920 IgorA 88

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

      1535 IgorA 89
       
      90

      Функции

      91
       
      92

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

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

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

      lib_init

      1535 IgorA 106

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

      107
       
      2759 IgorA 108

      buf2d_create

      109

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

      110
      stdcall [buf2d_create], buf_0
      111

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

      112

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

      1535 IgorA 113
       
      2920 IgorA 114

      buf2d_create_f_img

      1535 IgorA 115

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

      116
       
      117

      buf2d_clear

      2230 IgorA 118

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

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

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

      1535 IgorA 123
       
      124

      buf2d_draw

      125

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

      126
       
      127

      buf2d_delete

      128

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

      129
       
      2136 IgorA 130

      buf2d_resize

      131

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

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

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

      134
       
      1535 IgorA 135

      buf2d_line

      1648 IgorA 136

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

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

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

      2230 IgorA 139

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

      1535 IgorA 140
       
      2230 IgorA 141

      buf2d_line_sm

      142

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

      143
       
      1634 IgorA 144

      buf2d_rect_by_size

      2358 IgorA 145

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

      1634 IgorA 146
      stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080
      2358 IgorA 147

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

      1634 IgorA 148
       
      1642 IgorA 149

      buf2d_filled_rect_by_size

      2358 IgorA 150

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

      1642 IgorA 151
      stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080
      2358 IgorA 152

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

      1642 IgorA 153
       
      1535 IgorA 154

      buf2d_circle

      1648 IgorA 155

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

      1535 IgorA 156
      stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000
      157

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

      158
       
      2920 IgorA 159

      buf2d_img_hdiv2

      1535 IgorA 160

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

      161
       
      2920 IgorA 162

      buf2d_img_wdiv2

      1535 IgorA 163

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

      164
       
      165

      buf2d_conv_24_to_8

      166

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

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

      169
       
      170

      buf2d_conv_24_to_32

      171

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

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

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

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

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

      176
       
      177

      buf2d_bit_blt

      1648 IgorA 178

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

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

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

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

      1535 IgorA 183
       
      184

      buf2d_bit_blt_transp

      185

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

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

      187
       
      188

      buf2d_bit_blt_alpha

      189

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

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

      191
       
      1727 IgorA 192

      buf2d_curve_bezier

      1535 IgorA 193

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

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

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

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

      1535 IgorA 198
       
      199

      buf2d_convert_text_matrix

      200

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

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

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

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

      206
       
      207

      buf2d_draw_text

      208

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

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

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

      211

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

      212

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

      1535 IgorA 213
       
      2815 IgorA 214

      buf2d_crop_color

      1535 IgorA 215

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

      216
      stdcall [buf2d_crop_color], buf_0,0xffffff,BUF2D_OPT_CROP_TOP+BUF2D_OPT_CROP_BOTTOM
      2815 IgorA 217

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

      218

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

      219

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

      1535 IgorA 220
       
      221

      buf2d_offset_h

      222

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

      223
       
      1684 IgorA 224

      buf2d_flood_fill

      2358 IgorA 225

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

      1684 IgorA 226
      stdcall [buf2d_flood_fill], buf_0, 100,200, 0, 0xff,0xff0000
      2815 IgorA 227

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

      228

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

      229

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

      230

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

      231

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

      1684 IgorA 232
       
      1910 IgorA 233

      buf2d_set_pixel

      2658 IgorA 234

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

      1910 IgorA 235
      stdcall [buf2d_set_pixel], buf_0, 100,150, 0xff0000
      2658 IgorA 236

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

      237

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

      238

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

      1910 IgorA 239
       
      2658 IgorA 240

      buf2d_get_pixel

      241

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

      242
      stdcall [buf2d_get_pixel], buf_0, 100,150
      243

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

      244

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

      245

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

      246
       
      2759 IgorA 247

      buf2d_vox_brush_create

      248

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

      249
       
      250

      buf2d_vox_brush_delete

      251

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

      252
       
      2815 IgorA 253

      buf2d_vox_obj_draw_1g

      254

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

      255
       
      2759 IgorA 256

      buf2d_vox_obj_get_img_w_3g

      257

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

      258
       
      259

      buf2d_vox_obj_get_img_h_3g

      260

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

      261
       
      262

      buf2d_vox_obj_draw_3g

      263

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

      264
       
      265

      buf2d_vox_obj_draw_3g_scaled

      266

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

      267
       
      268

      buf2d_vox_obj_draw_3g_shadows

      269

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

      270
       
      271

      buf2d_vox_obj_draw_pl

      272

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

      273
       
      274

      buf2d_vox_obj_draw_pl_scaled

      275

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

      276
       
      1535 IgorA 277

      Константы

      278

      BUF2D_OPT_CROP_TOP equ 1

      2815 IgorA 279

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

      1538 IgorA 280

      BUF2D_OPT_CROP_LEFT equ 2

      2815 IgorA 281

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

      1535 IgorA 282

      BUF2D_OPT_CROP_BOTTOM equ 4

      2815 IgorA 283

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

      1535 IgorA 284

      BUF2D_OPT_CROP_RIGHT equ 8

      2815 IgorA 285

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

      1535 IgorA 286
       
      287

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

      288

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

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

      История

      373

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

      374

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

      375

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

      376

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

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

      378

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

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

      1634 IgorA 380

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

      1642 IgorA 381

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

      1648 IgorA 382

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

      1653 IgorA 383

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

      1684 IgorA 384

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

      1727 IgorA 385

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

      2230 IgorA 386

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

      2136 IgorA 387

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

      2383 IgorA 388

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

      2358 IgorA 389

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

      2383 IgorA 390

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

      2658 IgorA 391

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

      392

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

      2759 IgorA 393

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

      2920 IgorA 394

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

      2383 IgorA 395
      1535 IgorA 396