Board.KolibriOS.org

Official KolibriOS board
It is currently Mon Apr 22, 2019 9:24 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 4 posts ] 
Author Message
PostPosted: Sat Oct 29, 2016 11:05 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
API KolibriOS порой очень удивляет.

Quote:
* ecx = offset
Quote:
* Offset for pixel with coordinates (x,y)
is calculated as (x+y*xsize)*3.
Это ещё сначала xsize надо узнать. То есть, ещё один вызов SysFn. А ведь ядро это и так знает.
Quote:
Returned value:
* eax = 0x00RRGGBB - pixel color, if offset is valid
(less than 0x160000-16)
* eax = 2 otherwise
Ну уж pixel color, конечно, не может быть равен 2 :lol:


Top
   
PostPosted: Mon Nov 07, 2016 5:57 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Сейчас вот так делаю
Code:
{39.2}    Function  GetBackgroundPixel(X, Y: Integer): Dword; StdCall;
          Asm
                  push   ebx
          // at first need to know Background.Width
                  mov    eax, 39
                  mov    ebx, 1
                  int    64
          // at now eax = (Width << 16) | Height       
          // need to make ecx = (X + Y * Background.Width) * 3     
                  shr    eax, 16
                  mul    Y
                  add    eax, X
                  mov    ecx, eax
                  add    ecx, eax
                  add    ecx, eax                 
          // and now GetBackgroundPixel
                  mov    eax, 39
                  mov    ebx, 2
                  int    64           
                  pop    ebx
          End;


Top
   
PostPosted: Mon Nov 07, 2016 6:41 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
Это вредная функция. Один пиксель вряд ли кому-нибудь нужен, а делать по системному вызову на пиксель в больших объёмах - тормозно. Используй 15.6/15.7.

_________________
Сделаем мир лучше!


Top
   
PostPosted: Mon Nov 07, 2016 6:54 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
CleverMouse, да я абсолютно согласен, что это тормозно. Но GetBackgroundSize всё равно придётся делать. Да, в любом случае, если пикселей >2, то MapBackground + UnMapBackground будет лучше.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 4 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited