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

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

#include <Screen.hpp>

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

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

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

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

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

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

virtual void on_select ()
 вызывается при выборе данного экрана
 
virtual void on_deselect ()
 вызывается при выборе другого экрана, если этот экран был активным
 
virtual void on_idle ()
 отсутствие событий, вызывается периодически
 
virtual void on_display ()=0
 перерисовка кадра
 
virtual void on_display_before ()
 действие, выполняемое перед отрисовкой кадра
 
virtual void on_display_after ()
 действие, выполняемое после отрисовки кадра
 
virtual void on_reshape (int width, int height)
 изменение размеров окна извне Подробнее...
 
virtual void on_position (int x, int y)
 перемещение окна (не реализовано в FreeGLUT 2.8) Подробнее...
 
virtual void on_visibility (bool visible)
 изменение видимости окна (присутствует на экране, не присутствует на экране) Подробнее...
 
virtual void on_char (unsigned char code, int mouse_x, int mouse_y)
 нажатие клавиши (код клавиши преобразуется в соответствующий ASCII-код) Подробнее...
 
virtual void on_char_up (unsigned char code, int mouse_x, int mouse_y)
 отпускание зажатой клавиши (код клавиши преобразуется в соответствующий ASCII-код) Подробнее...
 
virtual void on_special_key (int code, int mouse_x, int mouse_y)
 нажатие специальной клавиши Подробнее...
 
virtual void on_special_key_up (int code, int mouse_x, int mouse_y)
 отпускание зажатой специальной клавиши Подробнее...
 
virtual void on_entry (bool entered)
 вход/выход мыши в окно Подробнее...
 
virtual void on_hover (int mouse_x, int mouse_y)
 движение мыши с отпущенными кнопками Подробнее...
 
virtual void on_drag (int mouse_x, int mouse_y)
 движение мыши с зажатыми кнопками Подробнее...
 
virtual void on_mouse (int button, int mouse_x, int mouse_y)
 нажатие кнопки мыши Подробнее...
 
virtual void on_mouse_up (int button, int mouse_x, int mouse_y)
 отпускание кнопки мыши Подробнее...
 
virtual void on_mouse_wheel (int wheel_number, int direction, int mouse_x, int mouse_y)
 прокручивание колеса мыши Подробнее...
 

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

static void current_screen_select (AScreen *)
 
static void on_idle_wrapper ()
 
static void on_display_wrapper ()
 
static void on_reshape_wrapper (int width, int height)
 
static void on_position_wrapper (int x, int y)
 
static void on_visibility_wrapper (int status)
 
static void on_char_wrapper (unsigned char code, int mouse_x, int mouse_y)
 
static void on_char_up_wrapper (unsigned char code, int mouse_x, int mouse_y)
 
static void on_special_key_wrapper (int code, int mouse_x, int mouse_y)
 
static void on_special_key_up_wrapper (int code, int mouse_x, int mouse_y)
 
static void on_entry_wrapper (int status)
 
static void on_hover_wrapper (int mouse_x, int mouse_y)
 
static void on_drag_wrapper (int mouse_x, int mouse_y)
 
static void on_mouse_button_wrapper (int button, int state, int x, int y)
 
static void on_mouse_wheel_wrapper (int wheel, int direction, int x, int y)
 

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

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

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

Методы

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

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

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

Переопределяется в Game_screen, Hall_of_fame_screen и Enter_name_screen.

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

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

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

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

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

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

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

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

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

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

См. также
AScreen::on_mouse
Аргументы
mouse_xx-координата мыши в окне
mouse_yy-координата мыши в окне
virtual void AScreen::on_mouse ( 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-координата мыши в окне в момент нажатия

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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