Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Ср ноя 22, 2017 9:29 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 4 сообщения ] 
Автор Сообщение
 Заголовок сообщения: SysFn39.2:GetBackgroundPixel
СообщениеДобавлено: Сб окт 29, 2016 11:05 am 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
API KolibriOS порой очень удивляет.

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


Вернуться к началу
 Заголовок сообщения: Re: SysFn39.2:GetBackgroundPixel
СообщениеДобавлено: Пн ноя 07, 2016 5:57 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Сейчас вот так делаю
Код:
{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;


Вернуться к началу
 Заголовок сообщения: Re: SysFn39.2:GetBackgroundPixel
СообщениеДобавлено: Пн ноя 07, 2016 6:41 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1601
Это вредная функция. Один пиксель вряд ли кому-нибудь нужен, а делать по системному вызову на пиксель в больших объёмах - тормозно. Используй 15.6/15.7.

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


Вернуться к началу
 Заголовок сообщения: Re: SysFn39.2:GetBackgroundPixel
СообщениеДобавлено: Пн ноя 07, 2016 6:54 pm 
Не в сети

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


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 4 сообщения ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB