Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

OSGQGLManagedWidget_qt.cpp

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002  *                                OpenSG                                     *
00003  *                                                                           *
00004  *                                                                           *
00005  *             Copyright (C) 2000-2002 by the OpenSG Forum                   *
00006  *                                                                           *
00007  *                            www.opensg.org                                 *
00008  *                                                                           *
00009  *   contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de          *
00010  *                                                                           *
00011 \*---------------------------------------------------------------------------*/
00012 /*---------------------------------------------------------------------------*\
00013  *                                License                                    *
00014  *                                                                           *
00015  * This library is free software; you can redistribute it and/or modify it   *
00016  * under the terms of the GNU Library General Public License as published    *
00017  * by the Free Software Foundation, version 2.                               *
00018  *                                                                           *
00019  * This library is distributed in the hope that it will be useful, but       *
00020  * WITHOUT ANY WARRANTY; without even the implied warranty of                *
00021  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         *
00022  * Library General Public License for more details.                          *
00023  *                                                                           *
00024  * You should have received a copy of the GNU Library General Public         *
00025  * License along with this library; if not, write to the Free Software       *
00026  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                 *
00027  *                                                                           *
00028 \*---------------------------------------------------------------------------*/
00029 /*---------------------------------------------------------------------------*\
00030  *                                Changes                                    *
00031  *                                                                           *
00032  *                                                                           *
00033  *                                                                           *
00034  *                                                                           *
00035  *                                                                           *
00036  *                                                                           *
00037 \*---------------------------------------------------------------------------*/
00038 
00039 //---------------------------------------------------------------------------
00040 //  Includes
00041 //---------------------------------------------------------------------------
00042 
00043 #include <stdlib.h>
00044 #include <stdio.h>
00045 
00046 #include <unistd.h>
00047 
00048 #include "OSGConfig.h"
00049 
00050 #include "OSGQGLManagedWidget_qt.h"
00051 
00052 #include "OSGQTWindow.h"
00053 
00054 OSG_USING_NAMESPACE
00055 
00056 /***************************************************************************\
00057  *                           Instance methods                              *
00058 \***************************************************************************/
00059 
00060 /*-------------------------------------------------------------------------*\
00061  -  public                                                                 -
00062 \*-------------------------------------------------------------------------*/
00063 
00064 /*------------- constructors & destructors --------------------------------*/
00065 
00069 OSGQGLManagedWidget::OSGQGLManagedWidget ( QWidget *parent, 
00070                                            const char *name,
00071                                            SimpleSceneManager *manager ) 
00072   : Inherited(parent,name)
00073 {
00074     FDEBUG(("OSGQGLManagedWidget constructor called\n"));
00075 
00076     OSG::QTWindowPtr qtWinPtr = OSG::QTWindow::create();
00077 
00078     OSG::beginEditCP(qtWinPtr);
00079     {
00080         qtWinPtr->setGlWidget(this);
00081     }
00082     OSG::endEditCP(qtWinPtr);
00083 
00084     if(manager != NULL)
00085     {
00086         _manager = manager;
00087     }
00088     else
00089     {
00090         _manager = new SimpleSceneManager; // mem leak here
00091     }
00092   
00093     _manager->setWindow ( qtWinPtr );
00094 }
00095 
00096 
00097 OSGQGLManagedWidget::OSGQGLManagedWidget(
00098     const OSGQGLManagedWidget &OSG_CHECK_ARG(source) ):
00099 
00100     Inherited()
00101 {
00102     FDEBUG(("OSGQGLManagedWidget copy constructor called\n"));
00103 }
00104 
00108 OSGQGLManagedWidget::~OSGQGLManagedWidget(void)
00109 {
00110     FDEBUG(("OSGQGLManagedWidget destructor called\n"));
00111 }
00112 
00115 OSGQGLManagedWidget& OSGQGLManagedWidget::operator = (const OSGQGLManagedWidget &source)
00116 {
00117     if (this != &source)
00118     {
00119         ;     // TODO; copy parts inherited from parent
00120     }
00121 
00122     return *this;
00123 }
00124 
00125 /*-------------------------- comparison -----------------------------------*/
00126 
00127 bool OSGQGLManagedWidget::operator < (const OSGQGLManagedWidget &other) const
00128 {
00129     return this < &other;
00130 }
00131 
00132 SimpleSceneManager & OSGQGLManagedWidget::getManager ( void )
00133 {
00134     return *_manager;
00135 }
00136 
00139 void OSGQGLManagedWidget::initializeGL(void)
00140 {
00141     FDEBUG(("OSGQGLManagedWidget::initializeGL()\n"));
00142 
00143     _manager->getWindow()->init();      // create the context
00144  
00145     FDEBUG (("after init()\n"));
00146 }
00147 
00148 
00149 void OSGQGLManagedWidget::paintGL(void)
00150 {
00151     FDEBUG(("OSGQGLManagedWidget::paintGL() \n"));
00152 
00153     _manager->getWindow()->activate(); // and activate it
00154 
00155     _manager->redraw();
00156 }
00157 
00158 void OSGQGLManagedWidget::resizeGL(int w, int h)
00159 {   
00160     FDEBUG (("OSGQGLManagedWidget::resizeGL()\n"));
00161 
00162     _manager->resize(w,h);
00163     paintGL();
00164 }
00165 
00166 void OSGQGLManagedWidget::mousePressEvent(QMouseEvent *me)
00167 {
00168     FDEBUG(("OSGQGLManagedWidget::mousePressEvent()\n"));
00169   
00170     switch(me->button()) 
00171     {
00172     case LeftButton:
00173         _manager->mouseButtonPress(SimpleSceneManager::MouseLeft, 
00174                                         me->x(), me->y()); 
00175         break;
00176     case MidButton:
00177         _manager->mouseButtonPress(SimpleSceneManager::MouseMiddle, 
00178                                         me->x(), me->y()); 
00179         break;
00180     case RightButton:
00181         _manager->mouseButtonPress(SimpleSceneManager::MouseRight, 
00182                                         me->x(), me->y()); 
00183         break;
00184     default:
00185         break;
00186     }
00187   
00188     paintGL();
00189 }
00190 
00191 void OSGQGLManagedWidget::mouseReleaseEvent(QMouseEvent *me)
00192 {
00193     FDEBUG(("OSGQGLManagedWidget::mouseReleaseEvent()\n"));
00194   
00195     switch(me->button()) 
00196     {
00197     case LeftButton:
00198         _manager->mouseButtonRelease(SimpleSceneManager::MouseLeft, 
00199                                         me->x(), me->y()); 
00200         break;
00201     case MidButton:
00202         _manager->mouseButtonRelease(SimpleSceneManager::MouseMiddle, 
00203                                         me->x(), me->y()); 
00204         break;
00205     case RightButton:
00206         _manager->mouseButtonRelease(SimpleSceneManager::MouseRight, 
00207                                         me->x(), me->y()); 
00208         break;
00209     default:
00210         break;
00211     }
00212    
00213     paintGL();
00214 }
00215 
00216 void OSGQGLManagedWidget::mouseMoveEvent ( QMouseEvent *me )
00217 {
00218     FDEBUG(("OSGQGLManagedWidget::mouseMoveEvent()\n"));
00219   
00220     _manager->mouseMove(me->pos().x(), me->pos().y());
00221   
00222     paintGL();
00223 }
00224 
00225 void OSGQGLManagedWidget::wheelEvent ( QWheelEvent* we)
00226 {
00227     int button;
00228 
00229      FDEBUG (("OSGQGLManagedWidget::wheelEvent()\n"));
00230 
00231     if(we->delta() > 0)
00232     {
00233         button = SimpleSceneManager::MouseUp;
00234     }
00235     else
00236     {
00237         button = SimpleSceneManager::MouseDown;
00238     }
00239 
00240     _manager->mouseButtonPress(button, we->x(), we->y());
00241 
00242     paintGL();
00243 }
00244 
00245 void OSGQGLManagedWidget::keyPressEvent(QKeyEvent *OSG_CHECK_ARG(ke))
00246 {
00247     FDEBUG(("OSGQGLManagedWidget::keyPressEvent()\n"));
00248 }
00249 
00250 void OSGQGLManagedWidget::closeEvent(QCloseEvent *event)
00251 {
00252     FDEBUG(("OSGQGLManagedWidget::closeEvent()\n"));
00253   
00254     emit closed(this);
00255 
00256     Inherited::closeEvent(event);
00257 }
00258 
00259 #ifdef __sgi
00260 #pragma set woff 1375
00261 #endif
00262 
00263 #include "OSGQGLManagedWidget_qt_moc.cpp"
00264 
00265 /*-------------------------------------------------------------------------*/
00266 /*                              cvs id's                                   */
00267 
00268 #ifdef __sgi
00269 #pragma set woff 1174
00270 #endif
00271 
00272 #ifdef OSG_LINUX_ICC
00273 #pragma warning( disable : 177 )
00274 #endif
00275 
00276 namespace
00277 {
00278     static char cvsid_cpp[] = "@(#)$Id: $";
00279     static char cvsid_hpp[] = OSGQGLMANAGEDWIDGET_HEADER_CVSID;
00280 }

Generated on Thu Aug 25 04:08:59 2005 for OpenSG by  doxygen 1.4.3