См. также:
wait_key, getc
get_mouse
Платформа:
DOS3 2
Синтаксис:
include mouse.e
x1 = get_mouse()
Описание:
Выдаёт данные о последнем мышином событии по форме: {событие, x, y}или выдаёт -1, если никаких событий с момента последнего вызова get_mouse() не было.
В файле mouse.eопределены глобальные константы для следующих возможных мышиных событий (нажатий на кнопки):
global constant MOVE = 1, -- движение
LEFT_DOWN = 2, -- левая нажата
LEFT_UP = 4, -- левая отпущена
RIGHT_DOWN = 8, -- правая нажата
RIGHT_UP = 16, -- правая отпущена
MIDDLE_DOWN = 32, -- средняя нажата
MIDDLE_UP = 64 -- средняя отпущена
Величины x и y являются координатами курсора мыши на момент произошедшего события. Функция get_mouse() выдаёт немедленно или -1, или событие. Функция не ожидает событий. Вы должны проверять обстановку на мыши достаточно часто, чтобы избежать пропуска событий. Когда случается очередное событие, данные о предыдущем теряются, если вы не успели прочитать их. На практике несложно отследить практически все события. Потеря события MOVE в общем случае не очень критична, так как следующие MOVE покажут вам, где находится курсор мыши.
Информация о нескольких событиях, происходящих одновременно, также может выдаваться. Например, если мышь передвигается с нажатой левой кнопкой, get_mouse() будет выдавать величину события LEFT_DOWN + MOVE, т.е. 2 + 1, что равно 3. По этой причине вы должны проверять информацию и выделять частные события с помощью and_bits(). Просмотрите примеры ниже, чтобы уяснить детали.
Комментарии:
В пиксельных режимах с шириной экрана 320 пикселов вам необходимо будет делить значение координаты x на 2, чтобы получать правильную позицию курсора на экране (странная особенность DOS.)
В текстовых режимах DOS32 вам необходимо масштабировать координаты x и y, чтобы получить позицию по строкам и колонкам.
Чтобы использовать get_mouse() под DOS32, вам необходим загруженный драйвер DOS для программной связи с подключенной к порту мышью.
Вы можете вызывать get_mouse() в большинстве текстовых и пиксельных режимов.
Первый вызов get_mouse(), который вы делаете, включает курсор мыши или подсвечивает позицию символа, в которой находится курсор.
DOS в общем случае не обеспечивает использование мыши в графических режимах SVGA (экраны с числом пикселов более 640x480). Это ограничение снято в Windows 95 (DOS 7.0). Грэм Барки, Питер Блюи другие программисты распространяют подпрограммы для мыши, которые решают проблемы, связанные с использованием мыши в SVGA. Посетите в Интернет страницу Архива файлов Euphoria.
Координаты x и y, выдаваемые функцией, будут совпадать с положением острия курсора мыши или могут относиться к ближайшему пикселу, на который это острие указывает. Проверьте это, если вы пытаетесь прочесть цвет пиксела с помощью функции get_pixel(). Может оказаться, что вам нужны координаты x-1, y-1 вместо x, y.
Пример 1:
Выданные величины:
{2, 100, 50}
говорят о том, что в данный момент левая кнопка нажата, а курсор мыши находится на экране в точке с координатами x=100, y=50.
Пример 2:
Чтобы проверить LEFT_DOWN, т.е. не нажата ли левая кнопка, напишите программу наподобие следующей:
object event
while 1 do
event = get_mouse()
if sequence(event) then
if and_bits(event[1], LEFT_DOWN) then
-- левая кнопка была нажата
exit
end if
end if
end while
См. также:
mouse_events, mouse_pointer, and_bits
get_pixel
Платформа:
DOS3 2
Синтаксис:
x = get_pixel(s)
Описание:
Когда s является 2-х элементным рядом экранных координат {x, y}, get_pixel() выдаёт номер цвета пиксела на пиксельном экране в этой точке (небольшое целое число).
Когда s является 3-х элементным рядом формы {x, y, n}, get_pixel() выдаёт ряд из n номеров цветов для точек, начиная с {x, y} и с шагом 1 вправо, {x+1, y}, {x+2, y} и т.д.
Точки за пределами экрана имеют непредсказуемые номера цветов.
Комментарии:
Когда аргумент n задан, для чтения цветов пикселов используется очень быстрый алгоритм. Он значительно быстрее, чем поочерёдный вызов get_pixel() для чтения цвета каждого следующего пиксела.
Пример:
object x
x = get_pixel({30,40})
-- x даёт значение цвета в точке x=30, y=40
x = get_pixel({30,40,100})
-- x даёт ряд из 100 номеров цвета, представляющих
-- строчку пикселов, начинающуюся в точке {30,40} и идущую вправо
См. также:
pixel, graphics_mode, get_position
get_position
Синтаксис:
include graphics.e
s = get_position()
Описание:
Выдаёт номера текущих строки и колонки позиции, в которой находится курсор, как 2-х элементный ряд вида {строка, колонка}.
Читать дальше