diff options
Diffstat (limited to 'tqtinterface/qt4/tools/designer/examples/opengl')
4 files changed, 561 insertions, 0 deletions
diff --git a/tqtinterface/qt4/tools/designer/examples/opengl/glwidget.cpp b/tqtinterface/qt4/tools/designer/examples/opengl/glwidget.cpp new file mode 100644 index 0000000..1109807 --- /dev/null +++ b/tqtinterface/qt4/tools/designer/examples/opengl/glwidget.cpp @@ -0,0 +1,170 @@ +/********************************************************************** +** +** Copyright (C) 2000-2008 Trolltech ASA. All rights reserved. +** +** This file is part of TQt Designer. +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** Alternatively you may (at your option) use any later version +** of the GNU General Public License if such license has been +** publicly approved by Trolltech ASA (or its successors, if any) +** and the KDE Free TQt Foundation. +** +** Please review the following information to ensure GNU General +** Public Licensing requirements will be met: +** http://trolltech.com/products/qt/licenses/licensing/opensource/. +** If you are unsure which license is appropriate for your use, please +** review the following information: +** http://trolltech.com/products/qt/licenses/licensing/licensingoverview +** or contact the sales department at sales@trolltech.com. +** +** Licensees holding valid TQt Commercial licenses may use this file in +** accordance with the TQt Commercial License Agreement provided with +** the Software. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#include "glwidget.h" + +/*! + Create a GLWidget widget +*/ + +GLWidget::GLWidget( TQWidget* tqparent, const char* name ) + : TQGLWidget( tqparent, name ) +{ + xrot = yrot = zrot = 25; // default object rotation + scale_ = 1.25; // default object scale + object = 0; +} + +/*! + Release allocated resources +*/ + +GLWidget::~GLWidget() +{ + glDeleteLists( object, 1 ); +} + + +/*! + Paint the box. The actual openGL commands for drawing the box are + performed here. +*/ + +void GLWidget::paintGL() +{ + glClear( GL_COLOR_BUFFER_BIT ); + + glLoadIdentity(); + glTranslatef( 0.0, 0.0, -10.0 ); + glScalef( scale_, scale_, scale_ ); + + glRotatef( xrot, 1.0, 0.0, 0.0 ); + glRotatef( yrot, 0.0, 1.0, 0.0 ); + glRotatef( zrot, 0.0, 0.0, 1.0 ); + + glCallList( object ); +} + +/*! + Set up the OpenGL rendering state, and define display list +*/ + +void GLWidget::initializeGL() +{ + qglClearColor( black ); // Let OpenGL clear to black + object = makeObject(); // Generate an OpenGL display list + glShadeModel( GL_FLAT ); +} + + + +/*! + Set up the OpenGL view port, matrix mode, etc. +*/ + +void GLWidget::resizeGL( int w, int h ) +{ + glViewport( 0, 0, (GLint)w, (GLint)h ); + glMatrixMode( GL_PROJECTION ); + glLoadIdentity(); + glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 15.0 ); + glMatrixMode( GL_MODELVIEW ); +} + + +/*! + Generate an OpenGL display list for the object to be shown, i.e. the box +*/ + +GLuint GLWidget::makeObject() +{ + GLuint list; + + list = glGenLists( 1 ); + + glNewList( list, GL_COMPILE ); + + qglColor( white ); // Shorthand for glColor3f or glIndex + + glLineWidth( 2.0 ); + + glBegin( GL_LINE_LOOP ); + glVertex3f( 1.0f, 0.5f, -0.4f ); + glVertex3f( 1.0f, -0.5f, -0.4f ); + glVertex3f( -1.0f, -0.5f, -0.4f ); + glVertex3f( -1.0f, 0.5f, -0.4f ); + glEnd(); + + glBegin( GL_LINE_LOOP ); + glVertex3f( 1.0f, 0.5f, 0.4f ); + glVertex3f( 1.0f, -0.5f, 0.4f ); + glVertex3f( -1.0f, -0.5f, 0.4f ); + glVertex3f( -1.0f, 0.5f, 0.4f ); + glEnd(); + + glBegin( GL_LINES ); + glVertex3f( 1.0f, 0.5f, -0.4f ); glVertex3f( 1.0f, 0.5f, 0.4f ); + glVertex3f( 1.0f, -0.5f, -0.4f ); glVertex3f( 1.0f, -0.5f, 0.4f ); + glVertex3f( -1.0f, -0.5f, -0.4f ); glVertex3f( -1.0f, -0.5f, 0.4f ); + glVertex3f( -1.0f, 0.5f, -0.4f ); glVertex3f( -1.0f, 0.5f, 0.4f ); + glEnd(); + + glEndList(); + + return list; +} + +void GLWidget::setXRot( double x ) +{ + xrot = x; + update(); +} + +void GLWidget::setYRot( double y ) +{ + yrot = y; + update(); +} + +void GLWidget::setZRot( double z ) +{ + zrot = z; + update(); +} + +void GLWidget::setScale( double s ) +{ + scale_ = s; + update(); +} diff --git a/tqtinterface/qt4/tools/designer/examples/opengl/glwidget.h b/tqtinterface/qt4/tools/designer/examples/opengl/glwidget.h new file mode 100644 index 0000000..7efe658 --- /dev/null +++ b/tqtinterface/qt4/tools/designer/examples/opengl/glwidget.h @@ -0,0 +1,75 @@ +/********************************************************************** +** +** Copyright (C) 2000-2008 Trolltech ASA. All rights reserved. +** +** This file is part of TQt Designer. +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** Alternatively you may (at your option) use any later version +** of the GNU General Public License if such license has been +** publicly approved by Trolltech ASA (or its successors, if any) +** and the KDE Free TQt Foundation. +** +** Please review the following information to ensure GNU General +** Public Licensing requirements will be met: +** http://trolltech.com/products/qt/licenses/licensing/opensource/. +** If you are unsure which license is appropriate for your use, please +** review the following information: +** http://trolltech.com/products/qt/licenses/licensing/licensingoverview +** or contact the sales department at sales@trolltech.com. +** +** Licensees holding valid TQt Commercial licenses may use this file in +** accordance with the TQt Commercial License Agreement provided with +** the Software. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#ifndef GLWIDGET_H +#define GLWIDGET_H + +#include <tqgl.h> + +class GLWidget : public TQGLWidget +{ + TQ_OBJECT + Q_PROPERTY( double xRot READ xRot WRITE setXRot ) + Q_PROPERTY( double yRot READ yRot WRITE setYRot ) + Q_PROPERTY( double zRot READ zRot WRITE setZRot ) + Q_PROPERTY( double scale READ scale WRITE setScale ) + +public: + GLWidget( TQWidget* tqparent, const char* name ); + ~GLWidget(); + + double xRot() const { return xrot; } + double yRot() const { return yrot; } + double zRot() const { return zrot; } + double scale() const { return scale_; } + +public Q_SLOTS: + void setXRot( double ); + void setYRot( double ); + void setZRot( double ); + void setScale( double ); + +protected: + void initializeGL(); + void paintGL(); + void resizeGL( int w, int h ); + + virtual GLuint makeObject(); + +private: + GLuint object; + GLfloat xrot, yrot, zrot, scale_; +}; + +#endif diff --git a/tqtinterface/qt4/tools/designer/examples/opengl/main.cpp b/tqtinterface/qt4/tools/designer/examples/opengl/main.cpp new file mode 100644 index 0000000..ec2ebbd --- /dev/null +++ b/tqtinterface/qt4/tools/designer/examples/opengl/main.cpp @@ -0,0 +1,305 @@ +/********************************************************************** +** +** Copyright (C) 2000-2008 Trolltech ASA. All rights reserved. +** +** This file is part of TQt Designer. +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** Alternatively you may (at your option) use any later version +** of the GNU General Public License if such license has been +** publicly approved by Trolltech ASA (or its successors, if any) +** and the KDE Free TQt Foundation. +** +** Please review the following information to ensure GNU General +** Public Licensing requirements will be met: +** http://trolltech.com/products/qt/licenses/licensing/opensource/. +** If you are unsure which license is appropriate for your use, please +** review the following information: +** http://trolltech.com/products/qt/licenses/licensing/licensingoverview +** or contact the sales department at sales@trolltech.com. +** +** Licensees holding valid TQt Commercial licenses may use this file in +** accordance with the TQt Commercial License Agreement provided with +** the Software. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#include <widgetinterface.h> + +#include <tqobjectcleanuphandler.h> +#include <tqpixmap.h> + +#include "glwidget.h" + +/* XPM */ +static char * cube_xmp[] = { +"48 48 104 2", +" c None", +". c #30C230C22081", +"X c #30C230C230C2", +"o c #30C2410330C2", +"O c #410330C24103", +"+ c #410341034103", +"@ c #514451445144", +"# c #514461855144", +"$ c #618551446185", +"% c #618561856185", +"& c #71C671C671C6", +"* c #71C6820771C6", +"= c #965882078617", +"- c #861792488617", +"; c #965892489658", +": c #9658A2899658", +"> c #9E79A2899E79", +", c #AEBAAEBA9E79", +"< c #AEBAAEBAAEBA", +"1 c #AEBABEFBAEBA", +"2 c #BEFBBEFBBEFB", +"3 c #CF3CBEFBCF3C", +"4 c #CF3CCF3CCF3C", +"5 c #DF7DCF3CCF3C", +"6 c #DF7DDF7DCF3C", +"7 c #DF7DDF7DDF7D", +"8 c #EFBEDF7DDF7D", +"9 c #DF7DEFBEDF7D", +"0 c #EFBEDF7DEFBE", +"q c #EFBEEFBEDF7D", +"w c #208130C22081", +"e c #410351445144", +"r c #514451446185", +"t c #71C6618571C6", +"y c #861771C68617", +"u c #9E7992489E79", +"i c #9E79AEBA9E79", +"p c #BEFBAEBABEFB", +"a c #BEFBCF3CBEFB", +"s c #BEFBCF3CCF3C", +"d c #CF3CCF3CDF7D", +"f c #CF3CDF7DCF3C", +"g c #DF7DDF7DEFBE", +"h c #208120812081", +"j c #30C2208130C2", +"k c #410330C230C2", +"l c #4103410330C2", +"z c #410351444103", +"x c #618551445144", +"c c #618561855144", +"v c #618571C66185", +"b c #861771C671C6", +"n c #8617820771C6", +"m c #965882079658", +"M c #9E7992489658", +"N c #AEBAA289AEBA", +"B c #BEFBAEBAAEBA", +"V c #DF7DCF3CDF7D", +"C c #CF3CDF7DDF7D", +"Z c #208120811040", +"A c #965892488617", +"S c #104020812081", +"D c #861782078617", +"F c #861792489658", +"G c #965892489E79", +"H c #104020811040", +"J c #208110402081", +"K c #30C220812081", +"L c #BEFBBEFBCF3C", +"P c #104010401040", +"I c #208110401040", +"U c #618571C671C6", +"Y c #71C671C68617", +"T c #71C682078617", +"R c #CF3CBEFBBEFB", +"E c #CF3CCF3CBEFB", +"W c #000010401040", +"Q c #104010402081", +"! c #9E79AEBAAEBA", +"~ c #104010400000", +"^ c #AEBAA2899E79", +"/ c #71C671C66185", +"( c #000010400000", +") c #000000000000", +"_ c #104000001040", +"` c #2081208130C2", +"' c #9658A2899E79", +"] c #104000000000", +"[ c #000000001040", +"{ c #30C241034103", +"} c #9E79A289AEBA", +"| c #AEBABEFBBEFB", +" . c #514461856185", +".. c #9E79A2899658", +"X. c #71C661856185", +"o. c #30C230C24103", +"O. c #514441035144", +"+. c #514451444103", +"@. c #410341035144", +"#. c #AEBAAEBABEFB", +"$. c #208130C230C2", +"%. c #6185618571C6", +"&. c #514441034103", +"*. c #861782079658", +" . X o O + @ # $ % & * = - ; : > , < 1 2 2 3 4 5 6 7 7 8 9 0 q ", +" w X X O + @ e r % t & y - ; : u i < < p a 3 s d f 7 7 g 9 0 9 ; ", +" h j X k l + z x c t v b n m ; M > N < B 2 2 a 3 4 V 6 7 7 0 9 m ; ", +" h h w X f d f d f V f V f 7 f 7 C 7 f V f V f d f V f 7 9 g 9 m ; ; ", +" Z h w j - 4 4 5 4 5 4 5 4 V f V 6 V f V f V 4 5 4 5 4 V 7 7 7 m A ; ; ", +" S h h j - D s 4 4 4 4 4 4 4 4 d f V f d f d 4 d 4 4 4 V C 7 7 m - ; F G ", +" H J Z K * D D m ; M 5 4 V 7 = D m - ; ; ", +" H h S h * y D L F ; : 4 f V C D D m a ; ; G ", +" P I H J & b n 2 2 m A M 3 4 5 f y D = 2 2 A ; ; ", +" P P H J U Y & p 1 2 - ; : 4 4 d f y T D 1 p 1 ; F G ", +" P P H J % t & < < < m ; u R E 4 f b * y B < < A ; ; ", +" W P P Q % t v < ! < - ; : L a 4 4 & * y < < ! ; ; G ", +" ~ P ~ I c $ % > ^ > m ; M 2 2 3 4 t / b ^ i ^ ; M ; ", +" ( P W P # $ % > > > F ; : p a 3 s t U & > > > ; ; G ", +" ) _ ( _ @ $ # M ; u m ; u p 2 2 a % v t M ; u ; M ; ", +" ( _ ( P P P H h h ` w X o : ; F F ; : & * D - G ' > i < 1 2 a % v t : ; F ; : u ", +" ) ] ( _ ~ P P I Z h w j X O m - m ; ; M & y - m ; > i N < 2 2 $ c % m - m ; M : ", +") [ ( _ W P P Q H h h j X O { D D - F G : y T m ; u > } < p | r .% D D - G : u ", +"V f 5 4 5 f V f V f V f V f V y * y m ; u f 5 f V f 5 4 V f x @ $ y * y : u ..", +"4 d f 4 f d f d 4 d f V f V f U & U F G : d f d f d f 4 4 d @ r # U & U G : > ", +"3 4 3 E 4 E 4 4 3 4 4 4 5 4 5 t v X.; ; u 4 4 4 4 E 4 E 3 4 @ @ x t v X.; u ..", +"a 4 a o.{ + .% v ; G > 3 a 4 e @ # .% v u ' > ", +"3 2 3 X O o $ # $ ; ; u 2 3 2 O.+.@ $ # $ : u > ", +"a 2 a X o + @ @ @ ; u ' 2 2 2 z @ @ @ @ @ u > } ", +"p < p X k l O.z O.; : u 1 p < O.+.@ O.z O...> i ", +"1 < 1 o.o + @.z @.; G > #.1 < z O.@ + @.z > > } ", +"N , N X O o l + o ; ; u 1 1 1 O.+.@ O l + : u > ", +"i } i o.o + O o o.; u o + z @ # % v } i } e @ @ } < #.| L a 4 f V o o.o G ' > ", +"> ..u o O + . X . ; o O + O.@ $ % & u u ..@ @ x , < 1 2 2 3 4 5 6 X . X ; u ..", +"' u : O + + j $.j $.o.{ O.e r % %.U G : u @ r # < < p 2 3 s d f 7 $.j $.u : u ", +"; A M l + + h j . K h j h K h h h h ; ; A x @ $ h h h h h K h j 6 7 7 0 : u ..", +"- m - + { @. h h w %.w h h h h h S h S m - m # r # h S h S h h h f 7 9 g F G : ", +"y D D l + + Z h h t % h Z J Z J Z J Z J D y D x # $ H J Z J Z J f V 7 7 - M ; ", +"* y * + z O. S h h & U t y * y @ $ . 4 d C 7 - m ; ", +"& / b l + + P J Z y & t & & / x c $ E 5 4 V n = D ", +"v %.v + z O. H J H D * & & v %.# % . a 4 f V * D - ", +"X.% % + &.z P P H D n y c $ % $ c $ a 3 4 V * y D ", +"# $ # + z @ P P H J m - D $ # $ # $ % 2 3 4 d * y T ", +"@ @ x + + z W P P Q m D m @ @ @ $ c % 2 R E 4 & b * ", +"z O.e + z @ P ~ I ; ; *. @ z O. .% % L s 4 U & * ", +"&.+ &.l &.+.W P M ; m + &.+ $ c X.2 3 v t & ", +"{ + { @.z O._ u ' ; + { + .$ % 3 v t & ", +"O o k + O.P P P H h h ` w X o l + z @ c X./ b n m ; u o O o $ % % % t v ", +"$.X $.@._ ~ P P I Z h w j X O + + @ # % v & * D - ; : X $.X .% v %.v ", +"j . j _ W P P Q H h h j X O { + &.@ $ c t & y D m ; > . j . % c X.% ", +"w j w ` w j w ` w ` h ` h h S h h h h ` h ` w ` w j w ` w j .% % ", +"h h K h h h h h h h J h J H J Z J H J h h h h h h h J h h h $ % ", +"S h h h H h S h S h S h H Q H J H Q H h H h S h S h S h S h . "}; + + +class OpenGLWidgetInterface : public WidgetInterface +{ +public: + OpenGLWidgetInterface(); + + TQRESULT queryInterface( const TQUuid&, TQUnknownInterface ** ); + TQ_REFCOUNT; + + TQStringList featureList() const; + + TQWidget* create( const TQString &classname, TQWidget* tqparent = 0, const char* name = 0 ); + TQString group( const TQString& ) const; + TQIconSet iconSet( const TQString& ) const; + TQString includeFile( const TQString& ) const; + TQString toolTip( const TQString& ) const; + TQString whatsThis( const TQString& ) const; + bool isContainer( const TQString& ) const; + +private: + TQObjectCleanupHandler objects; +}; + +OpenGLWidgetInterface::OpenGLWidgetInterface() +{ +} + +TQStringList OpenGLWidgetInterface::featureList() const +{ + TQStringList list; + + list << "GLWidget"; + + return list; +} + +TQWidget* OpenGLWidgetInterface::create( const TQString &description, TQWidget* tqparent, const char* name ) +{ + TQWidget* w = 0; + + if ( description == "GLWidget" ) + w = new GLWidget( tqparent, name ); + + objects.add( w ); + return w; +} + +TQString OpenGLWidgetInterface::group( const TQString &description ) const +{ + if ( description == "GLWidget" ) + return "Views"; + return TQString(); +} + +TQIconSet OpenGLWidgetInterface::iconSet( const TQString &description ) const +{ + if ( description == "GLWidget" ) + return TQIconSet( (const char**)cube_xmp ); + return TQIconSet(); +} + +TQString OpenGLWidgetInterface::includeFile( const TQString &description ) const +{ + if ( description == "GLWidget" ) + return "glwidget.h"; + return TQString(); +} + +TQString OpenGLWidgetInterface::toolTip( const TQString &description ) const +{ + if ( description == "GLWidget" ) + return TQT_TR_NOOP("OpenGL Widget"); + return TQString(); +} + +TQString OpenGLWidgetInterface::whatsThis( const TQString &description ) const +{ + if ( description == "GLWidget" ) + return "A widget for OpenGL rendering"; + return TQString(); +} + +bool OpenGLWidgetInterface::isContainer( const TQString& ) const +{ + return FALSE; +} + +TQRESULT OpenGLWidgetInterface::queryInterface( const TQUuid& uuid, TQUnknownInterface **iface ) +{ + *iface = 0; + + if ( uuid == IID_TQUnknown ) + *iface = (TQUnknownInterface*)this; + else if ( uuid == IID_TQFeatureList ) + *iface = (TQFeatureListInterface*)this; + else if ( uuid == IID_Widget ) + *iface = (WidgetInterface*)this; + else + return TQE_NOINTERFACE; + + (*iface)->addRef(); + return TQS_OK; +} + +TQ_EXPORT_COMPONENT() +{ + TQ_CREATE_INSTANCE( OpenGLWidgetInterface ); +} diff --git a/tqtinterface/qt4/tools/designer/examples/opengl/opengl.pro b/tqtinterface/qt4/tools/designer/examples/opengl/opengl.pro new file mode 100644 index 0000000..d28eb32 --- /dev/null +++ b/tqtinterface/qt4/tools/designer/examples/opengl/opengl.pro @@ -0,0 +1,11 @@ +TEMPLATE = lib +CONFIG += qt warn_on release plugin +HEADERS = glwidget.h +SOURCES = main.cpp \ + glwidget.cpp +DESTDIR = ../../../../plugins/designer +INCLUDEPATH += ../../interfaces + +TARGET = glwidget +target.path += $$plugins.path/designer +INSTALLS += target |