fix function 'buf2d_bit_blt'

git-svn-id: svn://kolibrios.org@1648 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2010-10-07 17:00:40 +00:00
parent 99bb0c8af2
commit 6d762a6fbe
2 changed files with 17 additions and 6 deletions

View File

@ -59,10 +59,10 @@ table { font-size: 15px; }
<h1>Вступление</h1>
<p>Документация к свободной библиотеке <b>buf2d.asm</b>, для <b>ОС Колибри</b>.
Эта библиотека создана для работы с 2d изображениями.
С ее помощьью можно создавать буфера с изображениями в памяти, и при необходимости выводить их на экран.
С ее помощью можно создавать буфера с изображениями в памяти, и при необходимости выводить их на экран.
Изображения можно накладывать одно на другое, поддерживается работа с прозрачными изображениями, есть функция рисования лини пока на этом все.</p>
<p>Последнее обновление библиотеки 30.07.10.</p>
<p>Последнее обновление библиотеки 07.10.10.</p>
<h1><a name="f_buf">Форматы буферов</a></h1>
<p>Поддерживается 3 формата буферов.
@ -109,7 +109,7 @@ buf_0:
<p>Освобождает память занятую изображением буфера.</p>
<h4>buf2d_line</h4>
<p>Рисует в буфере линию с заданным цветом и координатами. Пример использования:</p>
<p>Рисует в буфере линию с заданным цветом и координатами. Пример:</p>
<pre>stdcall [buf2d_line], buf_0, 30,10, 110,70, 0xffff00 ;рисуем линию</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться линия; 30, 10, 110, 70 - координаты линии; 0xffff00 - цвет линии.</p>
@ -124,7 +124,7 @@ buf_0:
<p>где buf_0 - структура буфера в котором будет рисоваться прямоугольник; 10, 10 - координаты левого верхнего угла; 150, 100 - размер прямоугольника; 0x8080 - цвет прямоуголика.</p>
<h4>buf2d_circle</h4>
<p>Рисует в буфере окружность с заданным цветом и радиусом. Пример использования:</p>
<p>Рисует в буфере окружность с заданным цветом и радиусом. Пример:</p>
<pre>stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться окружность; 25, 70 - координаты центра; 15 - радиус; 0xff0000 - цвет.</p>
@ -147,7 +147,11 @@ buf_0:
После выполнения функции буфер buf_a станет 32 битным, буфер buf_b не изменится.</p>
<h4>buf2d_bit_blt</h4>
<p>Рисует в буфере изображение из другого буфера в указанных координатах. Буфер в котором рисут (приемник) должен быть 24 битным, а тот который рисуется (источник) 24 или 32 битным. Если буфер источник 32 битный, то его прозрачность при рисовании не учитывается, для учета прозрачности используется функция <i>buf2d_bit_blt_transp</i>.</p>
<p>Рисует в буфере изображение из другого буфера в указанных координатах. Буфер в котором рисут (приемник) должен быть 24 битным, а тот который рисуется (источник) 24 или 32 битным. Если буфер источник 32 битный, то его прозрачность при рисовании не учитывается, для учета прозрачности используется функция <i>buf2d_bit_blt_transp</i>. Пример:</p>
<pre>stdcall [buf2d_bit_blt], buf_0, 50,30, buf_1 ;прорисовка среднего скина</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться изображение (приемник);
buf_1 - структура буфера с рисуемым изображением (источник);
50,30 - координаты для вывода изображения, определяют положение рисуемой картинки в buf_0.</p>
<h4>buf2d_bit_blt_transp</h4>
<p>Рисует в буфере изображение из другого буфера в указанных координатах, при этом учитывается прозрачность.
@ -256,5 +260,6 @@ import_buf2d_lib:
исправления в функции buf2d_delete.</p>
<p>30.09.10 - добавлена функция buf2d_rect_by_size.</p>
<p>04.10.10 - добавлена функция buf2d_filled_rect_by_size, доработана функция buf_bit_blt_alpha.</p>
<p>07.10.10 - доработана функция buf_bit_blt (при попытке нарисовать изображение за пределами правого края буфера приложение вызвавшее функцию падало).</p>
</body>
</html>

View File

@ -1390,7 +1390,7 @@ proc buf_bit_blt, buf_destination:dword, coord_x:dword, coord_y:dword, buf_sourc
je .sou32
jmp .copy_end ;銈酮罱 <EFBD9E> 郊 祚恕丞成<E4B89E>乒摬
.sou24: ;˘ ¨áâŽç­¨ŞĽ 32 Ą¨â­ ď Ş ŕ⨭ޠ
.sou24: ;¢ ¨áâ®ç­¨ª¥ 24 ¡¨â­ ï ª à⨭ª 
mov eax,buf2d_w
mov edx,buf2d_h ;<EFBD83> 狙祠飹布悟 <20>飶身爸
mov esi,buf2d_data ;<3B>限諝 狙祠飹布悟 <20>飶身爸
@ -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 ;銈酮罱 <EFBD9E> 郊 祚恕丞成<E4B89E>乒摬
mov ebx,[coord_x] ;¢ ebx ¢à¥¬¥­­® áâ ¢¨¬ ®âáâ㯠¨§®¡à ¦¥­¨ï (¤«ï ¯à®¢¥àª¨)
cmp ebx,buf2d_w ;¯à®¢¥à塞 ¢« §¨â «¨ ¨§®¡à ¦¥­¨¥ ¯® è¨à¨­¥
jge .copy_end ;¥á«¨ ¨§®¡à ¦¥­¨¥ ¯®«­®áâìî ¢ë« §¨â §  ¯à ¢ãî áâ®à®­ã
mov ebx,buf2d_h ;ebx - <EFBD83> 桑陋╲恐<E295B2> <EFBD9E>
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 ;銈酮罱 <EFBD9E> 郊 祚恕丞成<E4B89E>乒摬
mov ebx,[coord_x] ;¢ ebx ¢à¥¬¥­­® áâ ¢¨¬ ®âáâ㯠¨§®¡à ¦¥­¨ï (¤«ï ¯à®¢¥àª¨)
cmp ebx,buf2d_w ;¯à®¢¥à塞 ¢« §¨â «¨ ¨§®¡à ¦¥­¨¥ ¯® è¨à¨­¥
jge .copy_end ;¥á«¨ ¨§®¡à ¦¥­¨¥ ¯®«­®áâìî ¢ë« §¨â §  ¯à ¢ãî áâ®à®­ã
mov ebx,buf2d_h ;ebx - <EFBD83> 桑陋╲恐<E295B2> <EFBD9E>
mov ecx,[coord_y]
cmp ecx,ebx