/*
3D C++ Toolkit (TDT)
Window Class
Copyright (c) 2008
John Ryland
*/
#ifndef WINDOW_H
#define WINDOW_H
#include <TDT/event.h>
namespace TDT
{
class Window
{
public:
Window();
virtual ~Window();
/* Properties */
const char *windowTitle() const { return mWindowTitle; }
const char *windowIconText() const { return mWindowIconText; }
int x() const { return mX; }
int y() const { return mY; }
int width() const { return mWidth; }
int height() const { return mHeight; }
bool isVisible() const { return mVisible; }
bool isMinimized() const { return mMinimized; }
bool isMaximized() const { return mMaximized; }
bool isFullScreen() const { return mFullScreen; }
int winId() const { return mWinId; }
int cursor() const { return mCursor; }
/* Gains access to the window buffer */
void *backingStore() { return mBackingStore; }
/* Commands */
void setWindowTitle(const char *title);
void setWindowIconText(const char *iconText);
void move(int x, int y);
void resize(int width, int height);
void setGeometry(int x, int y, int width, int height);
void show();
void hide();
void setVisible(bool visible);
void showNormal();
void showMinimized();
void showMaximized();
void showFullScreen();
void setCursor(int cursor);
void repaint();
/* Events */
virtual bool event(Event ev);
virtual void paintEvent();
virtual void showEvent();
virtual void hideEvent();
virtual void closeEvent();
//virtual void moveEvent(int x, int y);
virtual void resizeEvent(int width, int height);
virtual void keyPressEvent(int key, int x, int y);
virtual void keyReleaseEvent(int key, int x, int y);
virtual void mousePressEvent(int button, int x, int y);
virtual void mouseReleaseEvent(int button, int x, int y);
virtual void mouseMoveEvent(int x, int y);
virtual void focusInEvent();
virtual void focusOutEvent();
virtual void idleEvent();
virtual void timerEvent(int timerId);
virtual void overlayDisplayedEvent();
/*
Possibly overlooked functions:
virtual void mouseDoubleClickEvent(QMouseEvent *);
virtual void wheelEvent(QWheelEvent *);
virtual void enterEvent(QEvent *);
virtual void leaveEvent(QEvent *);
virtual void moveEvent(QMoveEvent *);
virtual void closeEvent(QCloseEvent *);
virtual void contextMenuEvent(QContextMenuEvent *);
virtual void tabletEvent(QTabletEvent *);
virtual void actionEvent(QActionEvent *);
virtual void dragEnterEvent(QDragEnterEvent *);
virtual void dragMoveEvent(QDragMoveEvent *);
virtual void dragLeaveEvent(QDragLeaveEvent *);
virtual void dropEvent(QDropEvent *);
*/
private:
void init(int x, int y, int w, int h);
void saveGeometry();
int mX, mY, mWidth, mHeight, mWinId;
int mRestoreX, mRestoreY, mRestoreWidth, mRestoreHeight;
int mCursor;
bool mVisible, mMinimized, mMaximized, mFullScreen;
const char *mWindowTitle;
const char *mWindowIconText;
void *mBackingStore;
};
};
#endif // WINDOW_H