mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-11-17 21:11:39 +00:00
Nel3DWidget is no longer in the GUI Editor namespace.
--HG-- branch : gsoc2014-dfighter
This commit is contained in:
parent
81908eea01
commit
dde63ceb31
3 changed files with 128 additions and 137 deletions
|
@ -27,152 +27,145 @@
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Nel3DWidget::Nel3DWidget( QWidget *parent ) :
|
||||||
|
QWidget( parent )
|
||||||
namespace GUIEditor
|
|
||||||
{
|
{
|
||||||
Nel3DWidget::Nel3DWidget( QWidget *parent ) :
|
driver = NULL;
|
||||||
QWidget( parent )
|
textContext = NULL;
|
||||||
|
|
||||||
|
// Need to set this attribute with a NULL paintengine returned to Qt
|
||||||
|
// so that we can render the widget normally ourselves, without the image
|
||||||
|
// disappearing when a widget is resized or shown on top of us
|
||||||
|
setAttribute( Qt::WA_PaintOnScreen, true );
|
||||||
|
setAttribute( Qt::WA_OpaquePaintEvent, true );
|
||||||
|
setAttribute( Qt::WA_NoSystemBackground, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
Nel3DWidget::~Nel3DWidget()
|
||||||
|
{
|
||||||
|
if( driver != NULL )
|
||||||
{
|
{
|
||||||
driver = NULL;
|
|
||||||
textContext = NULL;
|
|
||||||
|
|
||||||
// Need to set this attribute with a NULL paintengine returned to Qt
|
|
||||||
// so that we can render the widget normally ourselves, without the image
|
|
||||||
// disappearing when a widget is resized or shown on top of us
|
|
||||||
setAttribute( Qt::WA_PaintOnScreen, true );
|
|
||||||
setAttribute( Qt::WA_OpaquePaintEvent, true );
|
|
||||||
setAttribute( Qt::WA_NoSystemBackground, true );
|
|
||||||
}
|
|
||||||
|
|
||||||
Nel3DWidget::~Nel3DWidget()
|
|
||||||
{
|
|
||||||
if( driver != NULL )
|
|
||||||
{
|
|
||||||
if( textContext != NULL )
|
|
||||||
{
|
|
||||||
driver->deleteTextContext( textContext );
|
|
||||||
textContext = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
driver->release();
|
|
||||||
delete driver;
|
|
||||||
driver = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Nel3DWidget::init()
|
|
||||||
{
|
|
||||||
nlassert( driver == NULL );
|
|
||||||
|
|
||||||
driver = NL3D::UDriver::createDriver( 0, false, 0 );
|
|
||||||
driver->setMatrixMode2D11();
|
|
||||||
driver->setDisplay( winId(), NL3D::UDriver::CMode( width(), height(), 32, true ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
void Nel3DWidget::createTextContext( std::string fontFile )
|
|
||||||
{
|
|
||||||
if( driver == NULL )
|
|
||||||
return;
|
|
||||||
|
|
||||||
std::string font;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
font = NLMISC::CPath::lookup( fontFile );
|
|
||||||
}
|
|
||||||
catch( ... )
|
|
||||||
{
|
|
||||||
nlinfo( "Font %s cannot be found, cannot create textcontext!", fontFile.c_str() );
|
|
||||||
exit( EXIT_FAILURE );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( textContext != NULL )
|
if( textContext != NULL )
|
||||||
{
|
{
|
||||||
driver->deleteTextContext( textContext );
|
driver->deleteTextContext( textContext );
|
||||||
textContext = NULL;
|
textContext = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
textContext = driver->createTextContext( font );
|
driver->release();
|
||||||
|
delete driver;
|
||||||
|
driver = NULL;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Nel3DWidget::clear()
|
void Nel3DWidget::init()
|
||||||
|
{
|
||||||
|
nlassert( driver == NULL );
|
||||||
|
|
||||||
|
driver = NL3D::UDriver::createDriver( 0, false, 0 );
|
||||||
|
driver->setMatrixMode2D11();
|
||||||
|
driver->setDisplay( winId(), NL3D::UDriver::CMode( width(), height(), 32, true ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void Nel3DWidget::createTextContext( std::string fontFile )
|
||||||
|
{
|
||||||
|
if( driver == NULL )
|
||||||
|
return;
|
||||||
|
|
||||||
|
std::string font;
|
||||||
|
|
||||||
|
try
|
||||||
{
|
{
|
||||||
if( driver == NULL )
|
font = NLMISC::CPath::lookup( fontFile );
|
||||||
return;
|
|
||||||
driver->clearBuffers( NLMISC::CRGBA::Black );
|
|
||||||
driver->swapBuffers();
|
|
||||||
}
|
}
|
||||||
|
catch( ... )
|
||||||
void Nel3DWidget::showEvent( QShowEvent *evnt )
|
|
||||||
{
|
{
|
||||||
QWidget::showEvent( evnt );
|
nlinfo( "Font %s cannot be found, cannot create textcontext!", fontFile.c_str() );
|
||||||
|
exit( EXIT_FAILURE );
|
||||||
if( driver != NULL )
|
|
||||||
driver->activate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( textContext != NULL )
|
||||||
|
{
|
||||||
|
driver->deleteTextContext( textContext );
|
||||||
|
textContext = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
textContext = driver->createTextContext( font );
|
||||||
|
}
|
||||||
|
|
||||||
|
void Nel3DWidget::clear()
|
||||||
|
{
|
||||||
|
if( driver == NULL )
|
||||||
|
return;
|
||||||
|
driver->clearBuffers( NLMISC::CRGBA::Black );
|
||||||
|
driver->swapBuffers();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Nel3DWidget::showEvent( QShowEvent *evnt )
|
||||||
|
{
|
||||||
|
QWidget::showEvent( evnt );
|
||||||
|
|
||||||
|
if( driver != NULL )
|
||||||
|
driver->activate();
|
||||||
|
}
|
||||||
|
|
||||||
#if defined ( NL_OS_WINDOWS )
|
#if defined ( NL_OS_WINDOWS )
|
||||||
|
|
||||||
typedef bool ( *winProc )( NL3D::IDriver *driver, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam );
|
typedef bool ( *winProc )( NL3D::IDriver *driver, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam );
|
||||||
|
|
||||||
bool Nel3DWidget::winEvent( MSG *message, long *result )
|
bool Nel3DWidget::winEvent( MSG *message, long *result )
|
||||||
|
{
|
||||||
|
if( driver != NULL )
|
||||||
{
|
{
|
||||||
if( driver != NULL )
|
NL3D::IDriver *iDriver = dynamic_cast< NL3D::CDriverUser* >( driver )->getDriver();
|
||||||
|
if( iDriver != NULL )
|
||||||
{
|
{
|
||||||
NL3D::IDriver *iDriver = dynamic_cast< NL3D::CDriverUser* >( driver )->getDriver();
|
winProc proc = (winProc)iDriver->getWindowProc();
|
||||||
if( iDriver != NULL )
|
return proc( iDriver, message->hwnd, message->message, message->wParam, message->lParam );
|
||||||
{
|
|
||||||
winProc proc = (winProc)iDriver->getWindowProc();
|
|
||||||
return proc( iDriver, message->hwnd, message->message, message->wParam, message->lParam );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
#elif defined( NL_OS_MAC )
|
#elif defined( NL_OS_MAC )
|
||||||
|
|
||||||
typedef bool ( *cocoaProc )( NL3D::IDriver *, const void *e );
|
typedef bool ( *cocoaProc )( NL3D::IDriver *, const void *e );
|
||||||
|
|
||||||
bool Nel3DWidget::macEvent( EventHandlerCallRef caller, EventRef event )
|
bool Nel3DWidget::macEvent( EventHandlerCallRef caller, EventRef event )
|
||||||
|
{
|
||||||
|
if( caller )
|
||||||
|
nlerror( "You are using QtCarbon! Only QtCocoa supported, please upgrade Qt" );
|
||||||
|
|
||||||
|
if( driver != NULL )
|
||||||
{
|
{
|
||||||
if( caller )
|
NL3D::IDriver *iDriver = dynamic_cast< NL3D::CDriverUser* >( driver )->getDriver();
|
||||||
nlerror( "You are using QtCarbon! Only QtCocoa supported, please upgrade Qt" );
|
if( iDriver != NULL )
|
||||||
|
|
||||||
if( driver != NULL )
|
|
||||||
{
|
{
|
||||||
NL3D::IDriver *iDriver = dynamic_cast< NL3D::CDriverUser* >( driver )->getDriver();
|
cocoaProc proc = ( cocoaProc )iDriver->getWindowProc();
|
||||||
if( iDriver != NULL )
|
return proc( iDriver, event );
|
||||||
{
|
|
||||||
cocoaProc proc = ( cocoaProc )iDriver->getWindowProc();
|
|
||||||
return proc( iDriver, event );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
#elif defined( NL_OS_UNIX )
|
#elif defined( NL_OS_UNIX )
|
||||||
|
|
||||||
typedef bool ( *x11Proc )( NL3D::IDriver *drv, XEvent *e );
|
typedef bool ( *x11Proc )( NL3D::IDriver *drv, XEvent *e );
|
||||||
|
|
||||||
bool Nel3DWidget::x11Event( XEvent *event )
|
bool Nel3DWidget::x11Event( XEvent *event )
|
||||||
|
{
|
||||||
|
if( driver != NULL )
|
||||||
{
|
{
|
||||||
|
NL3D::IDriver *iDriver = dynamic_cast< NL3D::CDriverUser* >( driver )->getDriver();
|
||||||
if( driver != NULL )
|
if( driver != NULL )
|
||||||
{
|
{
|
||||||
NL3D::IDriver *iDriver = dynamic_cast< NL3D::CDriverUser* >( driver )->getDriver();
|
x11Proc proc = ( x11Proc )iDriver->getWindowProc();
|
||||||
if( driver != NULL )
|
return proc( iDriver, event );
|
||||||
{
|
|
||||||
x11Proc proc = ( x11Proc )iDriver->getWindowProc();
|
|
||||||
return proc( iDriver, event );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -28,48 +28,46 @@ namespace NL3D
|
||||||
class UTextContext;
|
class UTextContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace GUIEditor
|
/// Nel 3D interface to Qt
|
||||||
|
class Nel3DWidget : public QWidget
|
||||||
{
|
{
|
||||||
/// Nel 3D interface to Qt
|
Q_OBJECT
|
||||||
class Nel3DWidget : public QWidget
|
public:
|
||||||
{
|
Nel3DWidget( QWidget *parent = NULL );
|
||||||
Q_OBJECT
|
virtual ~Nel3DWidget();
|
||||||
public:
|
|
||||||
Nel3DWidget( QWidget *parent = NULL );
|
|
||||||
virtual ~Nel3DWidget();
|
|
||||||
|
|
||||||
virtual void init();
|
void init();
|
||||||
void createTextContext( std::string fontFile );
|
void createTextContext( std::string fontFile );
|
||||||
|
|
||||||
NL3D::UDriver* getDriver() const{ return driver; }
|
NL3D::UDriver* getDriver() const{ return driver; }
|
||||||
NL3D::UTextContext* getTextContext() const{ return textContext; }
|
NL3D::UTextContext* getTextContext() const{ return textContext; }
|
||||||
|
|
||||||
|
|
||||||
// Need to return NULL paintengine to Qt so that we can
|
// Need to return NULL paintengine to Qt so that we can
|
||||||
// render the widget normally ourselves, without the image
|
// render the widget normally ourselves, without the image
|
||||||
// disappearing when a widget is resized or shown on top of us
|
// disappearing when a widget is resized or shown on top of us
|
||||||
QPaintEngine* paintEngine() const{ return NULL; }
|
QPaintEngine* paintEngine() const{ return NULL; }
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void clear();
|
void clear();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
void showEvent( QShowEvent *evnt );
|
void showEvent( QShowEvent *evnt );
|
||||||
|
|
||||||
#if defined(NL_OS_WINDOWS)
|
#if defined(NL_OS_WINDOWS)
|
||||||
virtual bool winEvent( MSG *message, long *result );
|
bool winEvent( MSG *message, long *result );
|
||||||
#elif defined(NL_OS_MAC)
|
#elif defined(NL_OS_MAC)
|
||||||
virtual bool macEvent( EventHandlerCallRef caller, EventRef event );
|
bool macEvent( EventHandlerCallRef caller, EventRef event );
|
||||||
#elif defined(NL_OS_UNIX)
|
#elif defined(NL_OS_UNIX)
|
||||||
virtual bool x11Event( XEvent *event );
|
bool x11Event( XEvent *event );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NL3D::UDriver *driver;
|
NL3D::UDriver *driver;
|
||||||
NL3D::UTextContext *textContext;
|
NL3D::UTextContext *textContext;
|
||||||
};
|
|
||||||
}
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "project_files.h"
|
#include "project_files.h"
|
||||||
|
|
||||||
class QWidget;
|
class QWidget;
|
||||||
|
class Nel3DWidget;
|
||||||
|
|
||||||
namespace NLGUI
|
namespace NLGUI
|
||||||
{
|
{
|
||||||
|
@ -31,7 +32,6 @@ namespace NLGUI
|
||||||
namespace GUIEditor
|
namespace GUIEditor
|
||||||
{
|
{
|
||||||
class CEditorSelectionWatcher;
|
class CEditorSelectionWatcher;
|
||||||
class Nel3DWidget;
|
|
||||||
|
|
||||||
/// Qt viewport controller for the Nel GUI library
|
/// Qt viewport controller for the Nel GUI library
|
||||||
class NelGUICtrl : public QObject
|
class NelGUICtrl : public QObject
|
||||||
|
|
Loading…
Reference in a new issue