class Canvas { public:

Canvas(int width, int height, char* windowTitle): // constructor // конструктор

void setWindow(float 1. float r. float b. float t);
void setViewport(int 1. int r. int b. int t):

IntRect getViewport(void): // divulge the viewport data // раскрываем данные порта просмотра

RealRect getWindow(void): // divulge the window data // раскрываем данные окна

f1 oat getWi ndowAspectRati о(void):

void clearScreenO;
void setBackgroundColor(float r. float g. float b): void setColor(float r. float g. float b);

3.4. Разработка класса Canvas

void lineTo(float x. float y):
void lineTo(Point2 p):
void moveTo(float x. float y);
void moveTo(Point2 p):

others later II остальные - позже

private:

Point2 CP : // current position in the world // текущая позиция в мировых координатах

IntRect viewport; // the current window // текущее окно

RealRect window; // the current viewport // текущий порт просмотра

others later II остальные - позже }

Конструктор класса Canvas берет в качестве аргументов ширину и высоту экранного окна, а также строку имени окна и создает нужное окно, производя при этом все необходимые инициализации. Кроме того, в Canvas также включены функции для установки и возвращения размеров окна и порта просмотра, а также для управления цветами рисования и фона. Заметим, что в этой версии класса нет явного упоминания о данных для преобразования окно - порт просмотра, поскольку это преобразование осуществляется «молча» самим OpenGL. В тематическом задании 3.4 мы добавим элементы данных для поддержки данного преобразования в средах, нуждающихся в этом. Остальные представленные функции- это варианты "lineToO и moveToO, фактически осуществляющие рисование (разумеется, в мировых координатах). В следующем разделе мы добавим еще «средства относительного рисования».

В листинге 3.7 показано, как класс Canvas обычно используется в приложениях. Создается единственный глобальный объект cvs, который инициализирует и открывает требуемое экранное окно. Данный объект сделан глобальным с той целью, чтобы его могли «видеть» функции обратного вызова, например display О. (Мы не можем передавать в такие функции cvs в качестве параметра, поскольку прототипы этих функций зафиксированы в правилах OpenGL Utility Toolkit.) Функция displayO устанавливает здесь окно и порт просмотра, а затем рисует прямую линию с помощью функций-членов класса Canvas. Тогда прямоугольник создается и рисуется посредством собственной функции-члена.


⇐ Предыдущая| |Следующая ⇒