Zmeika
простая аркадная игра
 Указатель Классы Пространства имен Файлы Функции Переменные Определения типов Перечисления Страницы
Класс AScreenabstract

абстракция текущего экрана + инкапсуляция привязки обработчиков событий FreeGlut. Подробнее...

#include <Screen.hpp>

Граф наследования:AScreen:
Inheritance graph
Граф связей класса AScreen:
Collaboration graph

Открытые члены

virtual ~AScreen ()
 базовый деструктор выполняет также "отвязку" данного экрана, если он был активным, но onDeselect уже не вызывает
 
void select ()
 использовать данный экран для обработки событий (сделать его активным) Подробнее...
 

Открытые статические члены

static bool has_active ()
 узнать выбран ли какой-либо объект AScreen в качестве активного
 
static AScreenget_active ()
 получить ссылку на текущий активный экран
 

Защищенные члены

virtual void onSelect ()
 вызывается при выборе данного экрана
 
virtual void onDeselect ()
 вызывается при выборе другого экрана, если этот экран был активным
 
virtual void onIdle ()
 отсутствие событий, вызывается периодически
 
virtual void onDisplay ()=0
 перерисовка кадра
 
virtual void onDisplayBefore ()
 действие, выполняемое перед отрисовкой кадра
 
virtual void onDisplayAfter ()
 действие, выполняемое после отрисовки кадра
 
virtual void onReshape (int width, int height)
 изменение размеров окна извне Подробнее...
 
virtual void onPosition (int x, int y)
 перемещение окна (не реализовано в FreeGLUT 2.8) Подробнее...
 
virtual void onVisibility (bool visible)
 изменение видимости окна (присутствует на экране, не присутствует на экране) Подробнее...
 
virtual void onChar (unsigned char code, int mouse_x, int mouse_y)
 нажатие клавиши (код клавиши преобразуется в соответствующий ASCII-код) Подробнее...
 
virtual void onCharUp (unsigned char code, int mouse_x, int mouse_y)
 отпускание зажатой клавиши (код клавиши преобразуется в соответствующий ASCII-код) Подробнее...
 
virtual void onSpecialKey (int code, int mouse_x, int mouse_y)
 нажатие специальной клавиши Подробнее...
 
virtual void onSpecialKeyUp (int code, int mouse_x, int mouse_y)
 отпускание зажатой специальной клавиши Подробнее...
 
virtual void onEntry (bool entered)
 вход/выход мыши в окно Подробнее...
 
virtual void onHover (int mouse_x, int mouse_y)
 движение мыши с отпущенными кнопками Подробнее...
 
virtual void onDrag (int mouse_x, int mouse_y)
 движение мыши с зажатыми кнопками Подробнее...
 
virtual void onMouse (int button, int mouse_x, int mouse_y)
 нажатие кнопки мыши Подробнее...
 
virtual void onMouseUp (int button, int mouse_x, int mouse_y)
 отпускание кнопки мыши Подробнее...
 
virtual void onMouseWheel (int wheel_number, int direction, int mouse_x, int mouse_y)
 прокручивание колеса мыши Подробнее...
 

Закрытые статические члены

static void curScreenSelect (AScreen *)
 
static void onIdleWrapper ()
 
static void onDisplayWrapper ()
 
static void onReshapeWrapper (int width, int height)
 
static void onPositionWrapper (int x, int y)
 
static void onVisibilityWrapper (int status)
 
static void onCharWrapper (unsigned char code, int mouse_x, int mouse_y)
 
static void onCharUpWrapper (unsigned char code, int mouse_x, int mouse_y)
 
static void onSpecialKeyWrapper (int code, int mouse_x, int mouse_y)
 
static void onSpecialKeyUpWrapper (int code, int mouse_x, int mouse_y)
 
static void onEntryWrapper (int status)
 
static void onHoverWrapper (int mouse_x, int mouse_y)
 
static void onDragWrapper (int mouse_x, int mouse_y)
 
static void onMouseButtonWrapper (int button, int state, int x, int y)
 
static void onMouseWheelWrapper (int wheel, int direction, int x, int y)
 

Подробное описание

абстракция текущего экрана + инкапсуляция привязки обработчиков событий FreeGlut.

Предполагается, что классы-наследники дадут свои определения нужным им обработчикам событий. Готовые элементы реализации предполагают выключенный буфер глубины и включенную двойную буферизацию.

Методы

virtual void AScreen::onChar ( unsigned char  code,
int  mouse_x,
int  mouse_y 
)
inlineprotectedvirtual

нажатие клавиши (код клавиши преобразуется в соответствующий ASCII-код)

См. также
AScreen::onMouse
Аргументы
codeASCII-код нажатой клавиши (нелатинские буквы могут не работать)
mouse_xx-координата мыши в окне в момент нажатия
mouse_yy-координата мыши в окне в момент нажатия

Переопределяется в GameScreen, HallOfFameScreen и EnterNameScreen.

virtual void AScreen::onCharUp ( unsigned char  code,
int  mouse_x,
int  mouse_y 
)
inlineprotectedvirtual

отпускание зажатой клавиши (код клавиши преобразуется в соответствующий ASCII-код)

См. также
AScreen::onMouse
Аргументы
codeASCII-код отпущенной клавиши (нелатинские буквы могут не работать)
mouse_xx-координата мыши в окне в момент отпускания
mouse_yy-координата мыши в окне в момент отпускания
virtual void AScreen::onDrag ( int  mouse_x,
int  mouse_y 
)
inlineprotectedvirtual

движение мыши с зажатыми кнопками

Срабатывает периодически с некоторой частотой в процессе движения.

См. также
AScreen::onMouse
Аргументы
mouse_xx-координата мыши в окне
mouse_yy-координата мыши в окне
virtual void AScreen::onEntry ( bool  entered)
inlineprotectedvirtual

вход/выход мыши в окно

Аргументы
enteredпризнак входа указателя мыши в окно (true – вошёл, false – вышел)
virtual void AScreen::onHover ( int  mouse_x,
int  mouse_y 
)
inlineprotectedvirtual

движение мыши с отпущенными кнопками

Срабатывает периодически с некоторой частотой в процессе движения.

См. также
AScreen::onMouse
Аргументы
mouse_xx-координата мыши в окне
mouse_yy-координата мыши в окне
virtual void AScreen::onMouse ( int  button,
int  mouse_x,
int  mouse_y 
)
inlineprotectedvirtual

нажатие кнопки мыши

Координаты мыши отсчитываются от верхнего левого угла окна (не области рисования, без учёта заголовка?) вправо по горизонтали (x) и вниз по вертикали (y).

Аргументы
codeкод (GLUT_LEFT_BUTTON, GLUT_RIGHT_BUTTON или GLUT_MIDDLE_BUTTON) нажатой кнопки
mouse_xx-координата мыши в окне в момент нажатия
mouse_yy-координата мыши в окне в момент нажатия

Переопределяется в GameScreen.

virtual void AScreen::onMouseUp ( int  button,
int  mouse_x,
int  mouse_y 
)
inlineprotectedvirtual

отпускание кнопки мыши

См. также
AScreen::onMouse
Аргументы
codeкод нажатой кнопки
mouse_xx-координата мыши в окне в момент отпускания
mouse_yy-координата мыши в окне в момент отпускания
virtual void AScreen::onMouseWheel ( int  wheel_number,
int  direction,
int  mouse_x,
int  mouse_y 
)
inlineprotectedvirtual

прокручивание колеса мыши

Аргументы
wheel_number– "номер колеса" (можно игнорировать?)
direction– направление прокрутки (теоретически должно быть равно либо +1, либо -1)
mouse_xx-координата мыши в окне в момент срабатывания
mouse_yy-координата мыши в окне в момент срабатывания
virtual void AScreen::onPosition ( int  x,
int  y 
)
inlineprotectedvirtual

перемещение окна (не реализовано в FreeGLUT 2.8)

Аргументы
xсмещение вправо от левого верхнего угла экрана
yсмещение вниз от левого верхнего угла экрана
void AScreen::onReshape ( int  width,
int  height 
)
protectedvirtual

изменение размеров окна извне

Аргументы
widthновая ширина области рисования (в пикселах)
heightновая высота области рисования (в пикселах)
virtual void AScreen::onSpecialKey ( int  code,
int  mouse_x,
int  mouse_y 
)
inlineprotectedvirtual

нажатие специальной клавиши

См. также
AScreen::onMouse
Аргументы
codeкод (см. GLUT_KEY_...) нажатой клавиши
mouse_xx-координата мыши в окне в момент нажатия
mouse_yy-координата мыши в окне в момент нажатия

Переопределяется в GameScreen.

virtual void AScreen::onSpecialKeyUp ( int  code,
int  mouse_x,
int  mouse_y 
)
inlineprotectedvirtual

отпускание зажатой специальной клавиши

См. также
AScreen::onMouse
Аргументы
codeкод (см. GLUT_KEY_...) отпущенной клавиши
mouse_xx-координата мыши в окне в момент отпускания
mouse_yy-координата мыши в окне в момент отпускания
virtual void AScreen::onVisibility ( bool  visible)
inlineprotectedvirtual

изменение видимости окна (присутствует на экране, не присутствует на экране)

Аргументы
visibleпризнак видимости окна (true – видно)
void AScreen::select ( )

использовать данный экран для обработки событий (сделать его активным)

В каждый конкретный момент может быть выбран только один активный экран.


Объявления и описания членов классов находятся в файлах: