Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef PARAGON_UIMANAGER_HPP
- #define PARAGON_UIMANAGER_HPP
- #include <QtGui/QtGui>
- #include <QtCore/QtCore>
- #include <QtCore/QObject>
- #include <QImageWriter>
- #include "irrlicht.h"
- namespace client {
- namespace utility {
- /*
- int nextHigherPowerOfTwo (int value) {
- --value;
- int retValue = 1;
- while (retValue < value) {
- retValue <<= 1;
- }
- return retValue;
- }*/
- }
- class UIManager : public QObject {
- Q_OBJECT
- public:
- UIManager () : mWidgetScene (0), mWidgetView (0), mTopLevelWidget (0), mFocusedWidget (0) {
- mWidgetScene = new QGraphicsScene (this);
- mWidgetView = new QGraphicsView (mWidgetScene);
- mWidgetView->setAlignment (Qt::AlignLeft | Qt::AlignTop);
- QEvent wsce (QEvent::WindowActivate);
- QApplication::sendEvent (mWidgetScene, &wsce);
- mWidgetView->setGeometry (QRect (0, 0, 640, 480));
- //connect (mWidgetScene, SIGNAL (changed (const QList <QRectF> &)), this, SLOT (setUiDirty()));
- }
- virtual ~UIManager () {
- QEvent wsce (QEvent::WindowDeactivate);
- QApplication::sendEvent (mWidgetScene, &wsce);
- }
- void setActiveWidget (QWidget *widget) {
- if (mTopLevelWidget && mTopLevelWidget != widget) {
- if (mFocusedWidget) {
- QEvent foe (QEvent::FocusOut);
- QApplication::sendEvent (mFocusedWidget, &foe);
- mFocusedWidget = NULL;
- }
- mWidgetScene->clear();
- mTopLevelWidget = NULL;
- }
- qDebug () << "added widget";
- mWidgetScene->addWidget (widget);
- mTopLevelWidget = widget;
- }
- void renderIntoTexture (irr::video::ITexture *tex) {
- uchar *pd = (uchar *) tex->lock();
- QImage textureImg ((uchar *)pd, tex->getSize().Width, tex->getSize().Height, QImage::Format_ARGB32_Premultiplied);
- // textureImg.fill (0);
- qDebug () << textureImg.height() << "," << textureImg.width();
- QPainter painter (&textureImg);
- mWidgetView->render (&painter, QRect (QPoint (0, 0), mWidgetView->size()), QRect (QPoint (0, 0), mWidgetView->size()));
- painter.end();
- QImageWriter writer ("foo.png");
- writer.setFormat ("png");
- if (!writer.write (textureImg)) {
- qDebug () << writer.errorString();
- }
- tex->unlock();
- }
- private:
- QGraphicsScene *mWidgetScene;
- QGraphicsView *mWidgetView;
- QWidget *mTopLevelWidget;
- QWidget *mFocusedWidget;
- };
- }
- #endif
Add Comment
Please, Sign In to add comment