Subversion Repositories Kolibri OS

Rev

Rev 5389 | 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
    • 5389 IgorA 62
    • buf2d_resize
    • 63
    • buf2d_line
    • 64
    • buf2d_line_sm
    • 65
    • buf2d_rect_by_size
    • 66
    • buf2d_filled_rect_by_size
    • 67
    • buf2d_circle
    • 2920 IgorA 68
    • buf2d_img_hdiv2
    • 69
    • buf2d_img_wdiv2
    • 2815 IgorA 70
    • buf2d_crop_color
    • 5389 IgorA 71
    • buf2d_flip_h
    • 3040 IgorA 72
    • buf2d_flip_v
    • 3105 IgorA 73
    • buf2d_filter_dither
    • 3040 IgorA 74
       
      2759 IgorA 75
    • buf2d_vox_brush_create
    • 76
      77
      78
    • Константы
    • 1535 IgorA 79
    • Таблица экспорта
    • 80
    • История
    • 81
      82
       
      83

      Вступление

      84

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

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

      1535 IgorA 90
       
      6175 IgorA 91

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

      1535 IgorA 92
       
      2759 IgorA 93

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

      1535 IgorA 94

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

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

      96
       
      97

      8 бит

      98

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

      99

      24 бит

      100

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

      101

      32 бит

      2920 IgorA 102

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

      1535 IgorA 103
       
      104

      Функции

      105
       
      106

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

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

      109
      align 4
      110
      buf_0:
      111
      	dd    0 ;+ 0 указатель на буфер изображения
      112
      	dw  100 ;+ 4 отступ слева
      113
      	dw   10 ;+ 6 отступ справа
      114
      	dd  150 ;+ 8 ширина
      115
      	dd  100 ;+12 высота
      116
      	dd 0x80 ;+16 фоновый цвет
      117
      	db   24 ;+20 бит на пиксель
      118
       
      2759 IgorA 119

      lib_init

      1535 IgorA 120

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

      121
       
      2759 IgorA 122

      buf2d_create

      123

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

      124
      stdcall [buf2d_create], buf_0
      125

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

      126

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

      1535 IgorA 127
       
      2920 IgorA 128

      buf2d_create_f_img

      1535 IgorA 129

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

      130
       
      2975 IgorA 131

      buf2d_clear

      2230 IgorA 132

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

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

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

      1535 IgorA 137
       
      2975 IgorA 138

      buf2d_draw

      1535 IgorA 139

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

      140
       
      2975 IgorA 141

      buf2d_delete

      1535 IgorA 142

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

      143
       
      2975 IgorA 144

      buf2d_rotate

      145

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

      146
      stdcall [buf2d_rotate], buf_0, 90
      147

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

      148
       
      5389 IgorA 149

      buf2d_resize

      6175 IgorA 150

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

      151

      Пример 1:

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

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

      154

      Пример 2:

      155
      stdcall [buf2d_resize], buf_0, 250,0, 2 ;изменяем изображение в буфере
      156

      где 250 - новая ширина буфера; 0 - новая высота буфера (0 означает не изменять размер); 2 - параметр указывающий что изменяем изображение в буфере.

      157

      Если последний параметр равен 2 то размер буфера остается неизменным и функция работает аналогично так как и функции buf2d_img_hdiv2, buf2d_img_wdiv2. Разница в том, что buf2d_resize может сжимать изображения до заданного размера, а не ровно в 2 раза.

      2136 IgorA 158
       
      5389 IgorA 159

      buf2d_line

      1648 IgorA 160

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

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

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

      2230 IgorA 163

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

      1535 IgorA 164
       
      5389 IgorA 165

      buf2d_line_sm

      2230 IgorA 166

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

      167
       
      5389 IgorA 168

      buf2d_rect_by_size

      2358 IgorA 169

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

      1634 IgorA 170
      stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080
      2358 IgorA 171

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

      1634 IgorA 172
       
      5389 IgorA 173

      buf2d_filled_rect_by_size

      2358 IgorA 174

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

      1642 IgorA 175
      stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080
      2358 IgorA 176

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

      1642 IgorA 177
       
      5389 IgorA 178

      buf2d_circle

      1648 IgorA 179

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

      1535 IgorA 180
      stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000
      181

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

      182
       
      2920 IgorA 183

      buf2d_img_hdiv2

      1535 IgorA 184

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

      185
       
      2920 IgorA 186

      buf2d_img_wdiv2

      1535 IgorA 187

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

      188
       
      189

      buf2d_conv_24_to_8

      190

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

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

      193
       
      194

      buf2d_conv_24_to_32

      195

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

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

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

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

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

      200
       
      201

      buf2d_bit_blt

      1648 IgorA 202

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

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

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

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

      1535 IgorA 207
       
      208

      buf2d_bit_blt_transp

      209

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

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

      211
       
      212

      buf2d_bit_blt_alpha

      213

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

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

      215
       
      1727 IgorA 216

      buf2d_curve_bezier

      1535 IgorA 217

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

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

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

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

      1535 IgorA 222
       
      223

      buf2d_convert_text_matrix

      224

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

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

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

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

      230
       
      231

      buf2d_draw_text

      232

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

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

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

      235

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

      236

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

      1535 IgorA 237
       
      2815 IgorA 238

      buf2d_crop_color

      1535 IgorA 239

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

      240
      stdcall [buf2d_crop_color], buf_0,0xffffff,BUF2D_OPT_CROP_TOP+BUF2D_OPT_CROP_BOTTOM
      2815 IgorA 241

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

      242

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

      243

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

      1535 IgorA 244
       
      245

      buf2d_offset_h

      246

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

      247
       
      1684 IgorA 248

      buf2d_flood_fill

      2358 IgorA 249

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

      1684 IgorA 250
      stdcall [buf2d_flood_fill], buf_0, 100,200, 0, 0xff,0xff0000
      2815 IgorA 251

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

      252

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

      253

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

      254

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

      255

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

      1684 IgorA 256
       
      1910 IgorA 257

      buf2d_set_pixel

      3040 IgorA 258

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

      1910 IgorA 259
      stdcall [buf2d_set_pixel], buf_0, 100,150, 0xff0000
      2658 IgorA 260

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

      261

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

      262

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

      1910 IgorA 263
       
      2658 IgorA 264

      buf2d_get_pixel

      3040 IgorA 265

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

      2658 IgorA 266
      stdcall [buf2d_get_pixel], buf_0, 100,150
      267

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

      268

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

      269

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

      270
       
      5389 IgorA 271

      buf2d_flip_h

      272

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

      273
      stdcall buf2d_flip_h, buf_0
      274

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

      275
       
      3040 IgorA 276

      buf2d_flip_v

      277

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

      278
      stdcall buf2d_flip_v, buf_0
      5389 IgorA 279

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

      3040 IgorA 280
       
      3105 IgorA 281

      buf2d_filter_dither

      282

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

      283
      stdcall [buf2d_filter_dither], buf_0, 0
      5389 IgorA 284

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

      3138 heavyiron 285

      0 - алгоритм (возможные значения: 0 - Sierra Lite, 1 - Floyd-Steinberg, 2 - Burkers, 3 - Heavyiron_mod, 4 - Atkinson).

      3105 IgorA 286
       
      2759 IgorA 287

      buf2d_vox_brush_create

      3040 IgorA 288

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

      289
      stdcall [buf2d_vox_brush_create], buf_vox, vox_6_7_z
      2759 IgorA 290
       
      3040 IgorA 291
      .........
      292
       
      293
      align 4
      294
      vox_6_7_z: ;данные для создания минимального единичного вокселя
      295
      dd 0,0,1,1,0,0,\
      296
         0,2,2,2,2,0,\
      297
         2,2,2,2,2,2,\
      298
         2,3,2,2,3,2,\
      299
         2,3,3,3,3,2,\
      300
         0,3,3,3,3,0,\
      301
         0,0,3,3,0,0
      302
       
      303
      align 4
      304
      buf_vox: ;данные для создания набора воксельных кистей
      305
      	db 6,7,4,3 ;w,h,h_osn,n
      306
      	rb BUF_STRUCT_SIZE*(3+1)
      307

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

      308

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

      309
       
      2759 IgorA 310

      buf2d_vox_brush_delete

      311

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

      312
       
      2815 IgorA 313

      buf2d_vox_obj_draw_1g

      314

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

      315
       
      2759 IgorA 316

      buf2d_vox_obj_get_img_w_3g

      317

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

      318
       
      319

      buf2d_vox_obj_get_img_h_3g

      320

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

      321
       
      322

      buf2d_vox_obj_draw_3g

      323

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

      324
       
      325

      buf2d_vox_obj_draw_3g_scaled

      326

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

      327
       
      328

      buf2d_vox_obj_draw_3g_shadows

      329

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

      330
       
      331

      buf2d_vox_obj_draw_pl

      332

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

      333
       
      334

      buf2d_vox_obj_draw_pl_scaled

      335

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

      336
       
      1535 IgorA 337

      Константы

      338

      BUF2D_OPT_CROP_TOP equ 1

      2815 IgorA 339

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

      1538 IgorA 340

      BUF2D_OPT_CROP_LEFT equ 2

      2815 IgorA 341

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

      1535 IgorA 342

      BUF2D_OPT_CROP_BOTTOM equ 4

      2815 IgorA 343

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

      1535 IgorA 344

      BUF2D_OPT_CROP_RIGHT equ 8

      2815 IgorA 345

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

      1535 IgorA 346
       
      347

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

      348

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

      349
      align 4
      350
      import_buf2d_lib:
      351
      	dd sz_lib_init
      352
      	buf2d_create dd sz_buf2d_create
      353
      	buf2d_create_f_img dd sz_buf2d_create_f_img
      354
      	buf2d_clear dd sz_buf2d_clear
      355
      	buf2d_draw dd sz_buf2d_draw
      356
      	buf2d_delete dd sz_buf2d_delete
      2975 IgorA 357
      	buf2d_rotate dd sz_buf2d_rotate
      2136 IgorA 358
      	buf2d_resize dd sz_buf2d_resize
      1535 IgorA 359
      	buf2d_line dd sz_buf2d_line
      2230 IgorA 360
      	buf2d_line_sm dd sz_buf2d_line_sm
      1634 IgorA 361
      	buf2d_rect_by_size dd sz_buf2d_rect_by_size
      1642 IgorA 362
      	buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
      1535 IgorA 363
      	buf2d_circle dd sz_buf2d_circle
      364
      	buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
      365
      	buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
      366
      	buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
      367
      	buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
      368
      	buf2d_bit_blt dd sz_buf2d_bit_blt
      369
      	buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
      370
      	buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
      1727 IgorA 371
      	buf2d_curve_bezier dd sz_buf2d_curve_bezier
      1535 IgorA 372
      	buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
      373
      	buf2d_draw_text dd sz_buf2d_draw_text
      374
      	buf2d_crop_color dd sz_buf2d_crop_color
      375
      	buf2d_offset_h dd sz_buf2d_offset_h
      1684 IgorA 376
      	buf2d_flood_fill dd sz_buf2d_flood_fill
      1910 IgorA 377
      	buf2d_set_pixel dd sz_buf2d_set_pixel
      2658 IgorA 378
      	buf2d_get_pixel dd sz_buf2d_get_pixel
      5389 IgorA 379
      	buf2d_flip_h dd sz_buf2d_flip_h
      3040 IgorA 380
      	buf2d_flip_v dd sz_buf2d_flip_v
      3105 IgorA 381
      	buf2d_filter_dither dd sz_buf2d_filter_dither
      1535 IgorA 382
       
      2759 IgorA 383
      	;воксельные функции:
      384
      	buf2d_vox_brush_create dd sz_buf2d_vox_brush_create
      385
      	buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete
      2815 IgorA 386
      	buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g
      2759 IgorA 387
      	buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g
      388
      	buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g
      389
      	buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g
      390
      	buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled
      391
      	buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows
      392
      	buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl
      393
      	buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled
      394
       
      1535 IgorA 395
      	dd 0,0
      396
      	sz_lib_init db 'lib_init',0
      397
      	sz_buf2d_create db 'buf2d_create',0
      398
      	sz_buf2d_create_f_img db 'buf2d_create_f_img',0
      399
      	sz_buf2d_clear db 'buf2d_clear',0
      400
      	sz_buf2d_draw db 'buf2d_draw',0
      401
      	sz_buf2d_delete db 'buf2d_delete',0
      2975 IgorA 402
      	sz_buf2d_rotate db 'buf2d_rotate',0
      2136 IgorA 403
      	sz_buf2d_resize db 'buf2d_resize',0
      1535 IgorA 404
      	sz_buf2d_line db 'buf2d_line',0
      2230 IgorA 405
      	sz_buf2d_line_sm db 'buf2d_line_sm',0
      1634 IgorA 406
      	sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
      1642 IgorA 407
      	sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
      1535 IgorA 408
      	sz_buf2d_circle db 'buf2d_circle',0
      409
      	sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
      410
      	sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
      411
      	sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
      412
      	sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
      413
      	sz_buf2d_bit_blt db 'buf2d_bit_blt',0
      414
      	sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
      415
      	sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
      1727 IgorA 416
      	sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
      1535 IgorA 417
      	sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
      418
      	sz_buf2d_draw_text db 'buf2d_draw_text',0
      419
      	sz_buf2d_crop_color db 'buf2d_crop_color',0
      1684 IgorA 420
      	sz_buf2d_offset_h db 'buf2d_offset_h',0
      1910 IgorA 421
      	sz_buf2d_flood_fill db 'buf2d_flood_fill',0
      2658 IgorA 422
      	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
      2759 IgorA 423
      	sz_buf2d_get_pixel db 'buf2d_get_pixel',0
      5389 IgorA 424
      	sz_buf2d_flip_h db 'buf2d_flip_h',0
      3040 IgorA 425
      	sz_buf2d_flip_v db 'buf2d_flip_v',0
      3105 IgorA 426
      	sz_buf2d_filter_dither db 'buf2d_filter_dither',0
      1535 IgorA 427
       
      2759 IgorA 428
      	;воксельные функции:
      429
      	sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0
      430
      	sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0
      2815 IgorA 431
      	sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0
      2759 IgorA 432
      	sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0
      433
      	sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0
      434
      	sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0
      435
      	sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0
      436
      	sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0
      437
      	sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0
      438
      	sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0
      439
       
      1535 IgorA 440

      История

      441

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

      442

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

      443

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

      444

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

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

      446

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

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

      1634 IgorA 448

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

      1642 IgorA 449

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

      1648 IgorA 450

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

      1653 IgorA 451

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

      1684 IgorA 452

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

      1727 IgorA 453

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

      2230 IgorA 454

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

      2136 IgorA 455

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

      2383 IgorA 456

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

      2358 IgorA 457

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

      2383 IgorA 458

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

      2658 IgorA 459

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

      460

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

      2759 IgorA 461

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

      2920 IgorA 462

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

      2975 IgorA 463

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

      3040 IgorA 464

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

      3105 IgorA 465

      14.12.12 - добавлена функция наложения фильтра buf2d_filter_dither.

      3138 heavyiron 466

      24.12.12 - добавлены 2 новых алгоритма в функцию наложения фильтра buf2d_filter_dither.

      5389 IgorA 467

      30.01.15 - добавлена поддержка 32 битных буферов в функцию buf_flip_v, добавлена функция отражения по горизонтали buf_flip_h.

      6175 IgorA 468

      09.02.16 - изменена функция buf2d_resize добавлен дополнительный параметр, который указывает менять ли изображение или размеры буфера.

      2383 IgorA 469
      1535 IgorA 470