Board.KolibriOS.org
http://board.kolibrios.org/

SysFn35:GetPixel
http://board.kolibrios.org/viewtopic.php?f=1&t=3403
Страница 1 из 1

Автор:  0CodErr [ Пт окт 14, 2016 9:23 pm ]
Заголовок сообщения:  SysFn35:GetPixel

Ghost писал(а):
Наткнулся на 35 (GetPixel) - подумал, может её переделать? Сейчас приложение сначала узнаёт ширину экрана, перемножает её на x.coord потом ядро делает обратную работу.
sysfuncs.txt писал(а):
Parameters:
* eax = 35
* ebx = y*xsize+x, where
* (x,y) = coordinates of a pixel (beginning from 0)
* xsize = horizontal screen size
Может и действительно переделать?

Автор:  0CodErr [ Пт ноя 04, 2016 5:13 pm ]
Заголовок сообщения:  Re: SysFn35:GetPixel

Это прямо какое-то извращение из-за одного пикселя :)
Код:
{35}      Function  GetPixel(X, Y: Integer): Dword; StdCall;
          Asm
                  push   ebx
          // at first need to know Screen.Width
                  mov    eax, 61
                  mov    ebx, 1
                  int    64
          // at now eax = (Width << 16) | Height       
          // need to make ebx = Y * Width + X   
                  shr    eax, 16
                  mul    Y
                  add    eax, X
                  mov    ebx, eax               
          // and now GetPixel
                  mov    eax, 35
                  int    64           
                  pop    ebx
          End;         

Автор:  CleverMouse [ Пт ноя 11, 2016 9:30 pm ]
Заголовок сообщения:  Re: SysFn35:GetPixel

Не используйте функцию 35. Тем более что вам вряд ли нужен только один пиксель. Используйте функцию 36.

Автор:  0CodErr [ Пт ноя 11, 2016 10:36 pm ]
Заголовок сообщения:  Re: SysFn35:GetPixel

CleverMouse писал(а):
вам вряд ли нужен только один пиксель
Иногда бывает нужен.
viewtopic.php?f=42&t=2650
viewtopic.php?f=38&t=1450

Автор:  Pathoswithin [ Пт ноя 11, 2016 11:07 pm ]
Заголовок сообщения:  Re: SysFn35:GetPixel

Там, где нужен один пиксель, не нужна производительность. Там, где нужен участок, попиксельная работа отпадает.

Автор:  art_zh [ Сб ноя 12, 2016 12:30 am ]
Заголовок сообщения:  Re: SysFn35:GetPixel

0CodErr
Если критикуешь какое-нибудь извращение - тогда предложи что-нибудь получше.

В растровой графике все пиксели лежат в массиве шириной Width и высотой Height.
Точка с координатами (X,Y) определяется элементом этого массива с номером (Y*Width+X), и никак иначе.

Ну если у твоего монитора фиксированное разрешение 1024х768, тогда умножение+сложение можешь соптимизировать битовым сдвигом с OR-маской по X-координате.
Так будет гораздо быстрее, но учти что
- это будет работать только на твоем компьютере, и
- в ядре десятки подобных растрово-пиксельных компутаций, вся оконная система на них построена.

Автор:  CleverMouse [ Чт ноя 17, 2016 7:30 pm ]
Заголовок сообщения:  Re: SysFn35:GetPixel

art_zh, а ты на функцию syscall_getpixel посмотрел перед своим постом? А в инструкцию div там тебя носом ткнуть?
0CodErr, Pathoswithin: и даже для одного пикселя можно использовать функцию 36.

Автор:  killerkirill [ Пт ноя 18, 2016 12:13 am ]
Заголовок сообщения:  Re: SysFn35:GetPixel

CleverMouse
Функция 35 изначально была хорошо задумана, чтото такое нужно для векторной графики и анимашек
(например стрелочные часы, надо запомнить старые пикселы под линией прежде чем её рисовать).
А параметры функции оптимизированы чтобы ядро разгрузить и в программах можно упростить код.
А потом наверно у когото на EGA-мониторе она не работала и Mr Turjanmaa замкнул всё на GETPIXEL через div :lol:
Но это не значит что она совсем лишняя и нельзя её доделать.

Автор:  Leency [ Пт ноя 18, 2016 12:37 am ]
Заголовок сообщения:  Re: SysFn35:GetPixel

Оффтопик: Забавно, когда человек написал за 6 лет всего 4 комментария и при этом знает кто такой Turjanmaa и как реализована GETPIXEL.

Автор:  killerkirill [ Пт ноя 18, 2016 12:54 am ]
Заголовок сообщения:  Re: SysFn35:GetPixel

Leency
не GETPIXEL, a syscall_getpixel.

Автор:  0CodErr [ Пт ноя 18, 2016 3:49 pm ]
Заголовок сообщения:  Re: SysFn35:GetPixel

CleverMouse писал(а):
и даже для одного пикселя можно использовать функцию 36.
Ну это в принципе тоже вариант.

Автор:  art_zh [ Пт ноя 18, 2016 11:06 pm ]
Заголовок сообщения:  Re: SysFn35:GetPixel

CleverMouse
Миледи, Ваша грубость не делает этот мир лучше.

Leency
Имея недолгий опыт общения с Маратом и Ёгевом, Кирюха очень редко сюда заходит.
Но вообще-то в системе он разбирается неплохо.

Страница 1 из 1 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/