From 6d762a6fbee000fbd46ba180d801cf248186cccc Mon Sep 17 00:00:00 2001 From: IgorA Date: Thu, 7 Oct 2010 17:00:40 +0000 Subject: [PATCH] fix function 'buf2d_bit_blt' git-svn-id: svn://kolibrios.org@1648 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/develop/libraries/buf2d/trunk/about.htm | 15 ++++++++++----- programs/develop/libraries/buf2d/trunk/buf2d.asm | 8 +++++++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/programs/develop/libraries/buf2d/trunk/about.htm b/programs/develop/libraries/buf2d/trunk/about.htm index b725157de5..51f5c9c0ae 100644 --- a/programs/develop/libraries/buf2d/trunk/about.htm +++ b/programs/develop/libraries/buf2d/trunk/about.htm @@ -59,10 +59,10 @@ table { font-size: 15px; }

Вступление

Документация к свободной библиотеке buf2d.asm, для ОС Колибри. Эта библиотека создана для работы с 2d изображениями. - С ее помощьью можно создавать буфера с изображениями в памяти, и при необходимости выводить их на экран. + С ее помощью можно создавать буфера с изображениями в памяти, и при необходимости выводить их на экран. Изображения можно накладывать одно на другое, поддерживается работа с прозрачными изображениями, есть функция рисования лини пока на этом все.

-

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

+

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

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

Поддерживается 3 формата буферов. @@ -109,7 +109,7 @@ buf_0:

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

buf2d_line

-

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

+

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

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

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

@@ -124,7 +124,7 @@ buf_0:

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

buf2d_circle

-

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

+

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

stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000

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

@@ -147,7 +147,11 @@ buf_0: После выполнения функции буфер buf_a станет 32 битным, буфер buf_b не изменится.

buf2d_bit_blt

-

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

+

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

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

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

buf2d_bit_blt_transp

Рисует в буфере изображение из другого буфера в указанных координатах, при этом учитывается прозрачность. @@ -256,5 +260,6 @@ import_buf2d_lib: исправления в функции buf2d_delete.

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

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

+

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

\ No newline at end of file diff --git a/programs/develop/libraries/buf2d/trunk/buf2d.asm b/programs/develop/libraries/buf2d/trunk/buf2d.asm index 367be26cb1..2d45e54294 100644 --- a/programs/develop/libraries/buf2d/trunk/buf2d.asm +++ b/programs/develop/libraries/buf2d/trunk/buf2d.asm @@ -1390,7 +1390,7 @@ proc buf_bit_blt, buf_destination:dword, coord_x:dword, coord_y:dword, buf_sourc je .sou32 jmp .copy_end ;д®а¬ в ЎгдҐа  ­Ґ Ї®®¤Ґа¦Ёў Ґвбп - .sou24: ;ў Ёбв®з­ЁЄҐ 32 ЎЁв­ п Є авЁ­Є  + .sou24: ;ў Ёбв®з­ЁЄҐ 24 ЎЁв­ п Є авЁ­Є  mov eax,buf2d_w mov edx,buf2d_h ;ўлб®в  Є®ЇЁа㥬®© Є авЁ­ЄЁ mov esi,buf2d_data ;¤ ­­лҐ Є®ЇЁа㥬®© Є авЁ­ЄЁ @@ -1398,6 +1398,9 @@ proc buf_bit_blt, buf_destination:dword, coord_x:dword, coord_y:dword, buf_sourc mov edi,[buf_destination] cmp buf2d_bits,24 jne .copy_end ;д®а¬ в ЎгдҐа  ­Ґ Ї®®¤Ґа¦Ёў Ґвбп + mov ebx,[coord_x] ;ў ebx ўаҐ¬Ґ­­® бв ўЁ¬ ®вбвгЇ Ё§®Ўа ¦Ґ­Ёп (¤«п Їа®ўҐаЄЁ) + cmp ebx,buf2d_w ;Їа®ўҐа塞 ў« §Ёв «Ё Ё§®Ўа ¦Ґ­ЁҐ Ї® иЁаЁ­Ґ + jge .copy_end ;Ґб«Ё Ё§®Ўа ¦Ґ­ЁҐ Ї®«­®бвмо ўл« §Ёв §  Їа ўго бв®а®­г mov ebx,buf2d_h ;ebx - ўлб®в  ®б­®ў­®Ј® ЎгдҐа  mov ecx,[coord_y] cmp ecx,ebx @@ -1460,6 +1463,9 @@ proc buf_bit_blt, buf_destination:dword, coord_x:dword, coord_y:dword, buf_sourc mov edi,[buf_destination] cmp buf2d_bits,24 jne .copy_end ;д®а¬ в ЎгдҐа  ­Ґ Ї®®¤Ґа¦Ёў Ґвбп + mov ebx,[coord_x] ;ў ebx ўаҐ¬Ґ­­® бв ўЁ¬ ®вбвгЇ Ё§®Ўа ¦Ґ­Ёп (¤«п Їа®ўҐаЄЁ) + cmp ebx,buf2d_w ;Їа®ўҐа塞 ў« §Ёв «Ё Ё§®Ўа ¦Ґ­ЁҐ Ї® иЁаЁ­Ґ + jge .copy_end ;Ґб«Ё Ё§®Ўа ¦Ґ­ЁҐ Ї®«­®бвмо ўл« §Ёв §  Їа ўго бв®а®­г mov ebx,buf2d_h ;ebx - ўлб®в  ®б­®ў­®Ј® ЎгдҐа  mov ecx,[coord_y] cmp ecx,ebx