X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGLViewer%2FGLViewer_Viewer2d.cxx;h=b91b6248a06ee626798685744e943e25b998d576;hb=ee2404a020ff8bb9db84f624af1179804f8c8dbe;hp=7d03218ba75fd020f4fddc20baf649323a817ff6;hpb=399155730966dfc225fbb24f66204b05664385f2;p=modules%2Fgui.git diff --git a/src/GLViewer/GLViewer_Viewer2d.cxx b/src/GLViewer/GLViewer_Viewer2d.cxx index 7d03218ba..b91b6248a 100644 --- a/src/GLViewer/GLViewer_Viewer2d.cxx +++ b/src/GLViewer/GLViewer_Viewer2d.cxx @@ -1,47 +1,50 @@ -// Copyright (C) 2005 OPEN CASCADE +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE // -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// Author : OPEN CASCADE +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// Author : OPEN CASCADE // File: GLViewer_Viewer2d.cxx // Created: November, 2004 - //#include +// #include "GLViewer_Viewer2d.h" #include "GLViewer_Object.h" +#include "GLViewer_ViewFrame.h" #include "GLViewer_BaseObjects.h" #include "GLViewer_CoordSystem.h" #include "GLViewer_Context.h" #include "GLViewer_Drawer.h" #include "GLViewer_Selector2d.h" -//#include "GLViewer_Sketcher.h" #include "GLViewer_ViewPort2d.h" #include "SUIT_Desktop.h" #include "SUIT_ViewWindow.h" +#include "SUIT_ViewManager.h" -#include "OSD_Timer.hxx" -#include - -#include -#include -#include +#include +#include +#include +#include +#include +#include /*! Constructor @@ -50,15 +53,13 @@ GLViewer_Viewer2d::GLViewer_Viewer2d( const QString& title) : GLViewer_Viewer( title ) { - myGLContext = new GLViewer_Context( this ); - - //myGLSketcher = new GLViewer_Sketcher( this ); + myGLContext = new GLViewer_Context( this ); - createSelector(); + createSelector(); - mySelMode = GLViewer_Viewer::Multiple; + mySelMode = GLViewer_Viewer::Multiple; - myDrawers.clear(); + myDrawers.clear(); } /*! @@ -83,14 +84,14 @@ SUIT_ViewWindow* GLViewer_Viewer2d::createView( SUIT_Desktop* theDesktop ) Adds item for change background color \param thePopup - menu */ -void GLViewer_Viewer2d::addPopupItems( QPopupMenu* thePopup ) +void GLViewer_Viewer2d::addPopupItems( QMenu* thePopup ) { // CTH8434. "Change background color" menu item is available if there are no selected objects if ( getSelector() == 0 || getSelector()->numSelected() == 0 ) { - if( thePopup->count() > 0 ) - thePopup->insertSeparator(); - thePopup->insertItem( tr( "CHANGE_BGCOLOR" ), this, SLOT( onChangeBgColor() ) ); + if( thePopup->actions().count() > 0 ) + thePopup->addSeparator(); + thePopup->addAction( tr( "CHANGE_BGCOLOR" ), this, SLOT( onChangeBgColor() ) ); } } @@ -103,7 +104,7 @@ void GLViewer_Viewer2d::onChangeBgColor() return; GLViewer_ViewPort2d* vp = ( ( GLViewer_ViewPort2d* )getActiveView()->getViewPort() ); - QColor selColor = QColorDialog::getColor( vp->backgroundColor(), vp ); + QColor selColor = QColorDialog::getColor( vp->backgroundColor(), vp ); if ( selColor.isValid() ) { vp->setBackgroundColor( selColor ); } @@ -136,7 +137,7 @@ void GLViewer_Viewer2d::updateColors( QColor colorH, QColor colorS ) */ - activateAllDrawers( TRUE ); + activateAllDrawers( true ); } /*! @@ -145,15 +146,15 @@ void GLViewer_Viewer2d::updateColors( QColor colorH, QColor colorS ) */ void GLViewer_Viewer2d::updateBorders( GLViewer_Rect* theRect ) { - QPtrVector views = getViewManager()->getViews(); + QVector views = getViewManager()->getViews(); for ( int i = 0, n = views.count(); i < n; i++ ) { GLViewer_Rect* border = ( ( GLViewer_ViewPort2d* )((GLViewer_ViewFrame*)views[i])->getViewPort() )->getBorder(); - border->setLeft( QMIN( border->left(), theRect->left() ) ); - border->setRight( QMAX( border->right(), theRect->right() ) ); - border->setBottom( QMIN( border->bottom(), theRect->bottom() ) ); - border->setTop( QMAX( border->top(), theRect->top() ) ); + border->setLeft( qMin( border->left(), theRect->left() ) ); + border->setRight( qMax( border->right(), theRect->right() ) ); + border->setBottom( qMin( border->bottom(), theRect->bottom() ) ); + border->setTop( qMax( border->top(), theRect->top() ) ); } } @@ -162,7 +163,7 @@ void GLViewer_Viewer2d::updateBorders( GLViewer_Rect* theRect ) */ void GLViewer_Viewer2d::updateBorders() { - QPtrVector views = getViewManager()->getViews(); + QVector views = getViewManager()->getViews(); ObjList anObjects = myGLContext->getObjects(); ObjList::Iterator beginIt = anObjects.begin(); @@ -189,10 +190,10 @@ void GLViewer_Viewer2d::updateBorders() } else { - border->setLeft( QMIN( border->left(), aRect->left() ) ); - border->setRight( QMAX( border->right(), aRect->right() ) ); - border->setBottom( QMIN( border->bottom(), aRect->bottom() ) ); - border->setTop( QMAX( border->top(), aRect->top() ) ); + border->setLeft( qMin( border->left(), aRect->left() ) ); + border->setRight( qMax( border->right(), aRect->right() ) ); + border->setBottom( qMin( border->bottom(), aRect->bottom() ) ); + border->setTop( qMax( border->top(), aRect->top() ) ); } } } @@ -206,7 +207,7 @@ void GLViewer_Viewer2d::updateAll() if ( !getActiveView() ) return; - QPtrVector views = getViewManager()->getViews(); + QVector views = getViewManager()->getViews(); for ( int i = 0, n = views.count(); i < n; i++ ) ( ( GLViewer_ViewPort2d* )( ( GLViewer_ViewFrame* )views[i] )->getViewPort() )->getGLWidget()->updateGL(); } @@ -226,18 +227,18 @@ void GLViewer_Viewer2d::updateDrawers( GLboolean update, GLfloat scX, GLfloat sc /*! Activates drawers for objects from list \param theObjects only */ -void GLViewer_Viewer2d::activateDrawers( QValueList& theObjects, bool onlyUpdate, GLboolean swap ) +void GLViewer_Viewer2d::activateDrawers( QList& theObjects, bool onlyUpdate, GLboolean swap ) { //cout << "GLViewer_Viewer2d::activateDrawers " << (int)onlyUpdate << " " << (int)swap << endl; - QValueList::Iterator anIt = myDrawers.begin(); - QValueList::Iterator endDIt = myDrawers.end(); + QList::Iterator anIt = myDrawers.begin(); + QList::Iterator endDIt = myDrawers.end(); for( ; anIt != endDIt; anIt++ ) (*anIt)->clear(); - QValueList anActiveDrawers; - QValueList::Iterator endOIt = theObjects.end(); + QList anActiveDrawers; + QList::Iterator endOIt = theObjects.end(); - for( QValueList::Iterator oit = theObjects.begin(); oit != endOIt; ++oit ) + for( QList::Iterator oit = theObjects.begin(); oit != endOIt; ++oit ) { GLViewer_Drawer* aDrawer = (*oit)->getDrawer(); if( !aDrawer ) @@ -265,11 +266,11 @@ void GLViewer_Viewer2d::activateDrawers( QValueList& theObject int aPriority = aDrawer->getPriority(); - if( anActiveDrawers.findIndex( aDrawer ) != -1 ) + if( anActiveDrawers.indexOf( aDrawer ) != -1 ) continue; - QValueList::Iterator aDIt = anActiveDrawers.begin(); - QValueList::Iterator aDEndIt = anActiveDrawers.end(); + QList::Iterator aDIt = anActiveDrawers.begin(); + QList::Iterator aDEndIt = anActiveDrawers.end(); for( ; aDIt != aDEndIt; ++aDIt ) if( (*aDIt)->getPriority() > aPriority ) break; @@ -277,10 +278,10 @@ void GLViewer_Viewer2d::activateDrawers( QValueList& theObject anActiveDrawers.insert( aDIt, aDrawer ); } - QValueList::Iterator aDIt = anActiveDrawers.begin(); - QValueList::Iterator aDEndIt = anActiveDrawers.end(); + QList::Iterator aDIt = anActiveDrawers.begin(); + QList::Iterator aDEndIt = anActiveDrawers.end(); - QPtrVector views = getViewManager()->getViews(); + QVector views = getViewManager()->getViews(); for ( int i = 0, n = views.count(); i < n; i++ ) { float xScale, yScale; @@ -523,7 +524,7 @@ QRect* GLViewer_Viewer2d::getWinObjectRect( GLViewer_Object* theObject ) GLfloat anAngle = curvp->getGLWidget()->getRotationAngle() * PI / 180.; - QPointArray aPointArray(4); + QPolygon aPointArray(4); aPointArray[0] = QPoint( (int)(aLeft*cos(anAngle) - aTop*sin(anAngle)), (int)(aLeft*sin(anAngle) + aTop*cos(anAngle)) ); aPointArray[1] = QPoint( (int)(aRight*cos(anAngle) - aTop*sin(anAngle)), @@ -539,10 +540,10 @@ QRect* GLViewer_Viewer2d::getWinObjectRect( GLViewer_Object* theObject ) { int x = aPointArray[i].x(); int y = aPointArray[i].y(); - aMinLeft = QMIN( aMinLeft,x ); - aMaxRight = QMAX( aMaxRight, x ); - aMinTop = QMIN( aMinTop, y ); - aMaxBottom = QMAX( aMaxBottom, y ); + aMinLeft = qMin( aMinLeft,x ); + aMaxRight = qMax( aMaxRight, x ); + aMinTop = qMin( aMinTop, y ); + aMaxBottom = qMax( aMaxBottom, y ); } aLeft = (aMinLeft/* + xPan*/)*xScale + aWidth / 2; @@ -640,7 +641,7 @@ bool GLViewer_Viewer2d::testRotation( QMouseEvent* e ) { if ( ( e->button() == GLViewer_View2dTransformer::rotateButton() ) && ( e->type() == QEvent::MouseButtonPress ) && - ( e->state() & GLViewer_ViewTransformer::accelKey() ) ) + ( e->modifiers() & GLViewer_ViewTransformer::accelKey() ) ) { activateTransform( GLViewer_Viewer::Rotate ); return true; @@ -667,7 +668,7 @@ void GLViewer_Viewer2d::insertHeader( VectorFileType aType, QFile& hFile ) header += "%%Pages: 1\n"; header += "%%Page: 1\n\n"; - hFile.writeBlock( header.ascii(), header.length() ); + hFile.write( header.toLatin1() ); } else if( aType == HPGL ) { @@ -681,7 +682,7 @@ void GLViewer_Viewer2d::insertHeader( VectorFileType aType, QFile& hFile ) header += "LT;\n"; header += "VS36;\n"; - hFile.writeBlock( header.ascii(), header.length() ); + hFile.write( header.toLatin1() ); } } @@ -695,12 +696,12 @@ void GLViewer_Viewer2d::insertEnding( VectorFileType aType, QFile& hFile ) if( aType == POST_SCRIPT ) { QString ending = "showpage\n\n%%EOF"; - hFile.writeBlock( ending.ascii(), ending.length() ); + hFile.write( ending.toLatin1() ); } else if( aType == HPGL ) { QString ending = "PU;PA0,0;SP;EC;PG1;EC1;OE\n"; - hFile.writeBlock( ending.ascii(), ending.length() ); + hFile.write( ending.toLatin1() ); } } @@ -730,7 +731,7 @@ bool GLViewer_Viewer2d::translateTo( VectorFileType aType, QString FileName, Pap if ( !getActiveView() ) return false; - QFile hFile( FileName.ascii() ); + QFile hFile( FileName.toLatin1() ); #ifdef WIN32 HDC hMetaFileDC; @@ -779,8 +780,8 @@ bool GLViewer_Viewer2d::translateTo( VectorFileType aType, QString FileName, Pap if( aType==POST_SCRIPT || aType==HPGL ) { - hFile.open( IO_ReadWrite | IO_Truncate ); - hFile.at( 0 ); + hFile.open( QIODevice::ReadWrite | QIODevice::Truncate ); + hFile.seek( 0 ); insertHeader( aType, hFile ); } #ifdef WIN32 @@ -792,7 +793,7 @@ bool GLViewer_Viewer2d::translateTo( VectorFileType aType, QString FileName, Pap HDC screen_dc = GetDC( 0 ); //The screen device context HDC bitDC = CreateCompatibleDC ( screen_dc ); //The context compatible with screen - hMetaFileDC = CreateEnhMetaFile( bitDC, FileName.ascii(), &r, "" ); + hMetaFileDC = CreateEnhMetaFile( bitDC, FileName.toLatin1().data(), &r, "" ); SetMapMode( hMetaFileDC, MM_HIMETRIC ); SetWindowOrgEx( hMetaFileDC, 0, r.bottom, NULL ); HRGN ClipRgn = CreateRectRgn( 0, 0, AW, AH ); @@ -818,7 +819,7 @@ bool GLViewer_Viewer2d::translateTo( VectorFileType aType, QString FileName, Pap arg( AW-mmLeft-mmRight ).arg( AH-mmBottom-mmTop ); //It is set clipping path - hFile.writeBlock( aBuffer.ascii(), aBuffer.length() ); + hFile.write( aBuffer.toLatin1() ); aCurVP->getGLWidget()->translateBackgroundToPS( hFile, &aViewerCS, &aPaperCS ); } @@ -874,15 +875,15 @@ void GLViewer_Viewer2d::repaintView( GLViewer_ViewFrame* theView, bool makeCurre float xScale; float yScale; - QValueList::Iterator anIt = myDrawers.begin(); - QValueList::Iterator endDIt = myDrawers.end(); + QList::Iterator anIt = myDrawers.begin(); + QList::Iterator endDIt = myDrawers.end(); for( ; anIt != endDIt; anIt++ ) (*anIt)->clear(); - QValueList anActiveDrawers; - QValueList::Iterator endOIt = anActiveObjs.end(); + QList anActiveDrawers; + QList::Iterator endOIt = anActiveObjs.end(); - for( QValueList::Iterator oit = anActiveObjs.begin(); oit != endOIt; ++oit ) + for( QList::Iterator oit = anActiveObjs.begin(); oit != endOIt; ++oit ) { GLViewer_Drawer* aDrawer = (*oit)->getDrawer(); if( !aDrawer ) @@ -904,12 +905,12 @@ void GLViewer_Viewer2d::repaintView( GLViewer_ViewFrame* theView, bool makeCurre } } aDrawer->addObject( (*oit) ); - if( anActiveDrawers.findIndex( aDrawer ) == -1 ) + if( anActiveDrawers.indexOf( aDrawer ) == -1 ) anActiveDrawers.append( aDrawer ); } - QValueList::Iterator aDIt = anActiveDrawers.begin(); - QValueList::Iterator aDEndIt = anActiveDrawers.end(); + QList::Iterator aDIt = anActiveDrawers.begin(); + QList::Iterator aDEndIt = anActiveDrawers.end(); GLViewer_ViewPort2d* vp = ( GLViewer_ViewPort2d* )aCurView->getViewPort(); vp->getScale( xScale, yScale ); @@ -991,7 +992,7 @@ void GLViewer_Viewer2d::finishOperations( QMouseEvent* e ) vp->finishSelectByRect(); if ( getSelector() && !aSelRect.isNull() ) { - bool append = bool ( e->state() & GLViewer_Selector::appendKey() ); + bool append = bool ( e->modifiers() & GLViewer_Selector::appendKey() ); getSelector()->select( aSelRect, append ); } } @@ -1017,7 +1018,7 @@ void GLViewer_Viewer2d::startOperations( QWheelEvent* e ) } -int GLViewer_View2dTransformer::rotateBtn = RightButton; +int GLViewer_View2dTransformer::rotateBtn = Qt::RightButton; /*! Constructor