X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_PatternWidget.cxx;h=178800a6273be63f8b945988b7a8e88edeac8325;hb=81f4aba6d730b754eeac248a753c33ba673beaa1;hp=80614980c442c934e3e7d53b14751914cde60d12;hpb=e4737e85f0da6d3f90fd08f6be1c2825195fe16f;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_PatternWidget.cxx b/src/SMESHGUI/SMESHGUI_PatternWidget.cxx index 80614980c..178800a62 100644 --- a/src/SMESHGUI/SMESHGUI_PatternWidget.cxx +++ b/src/SMESHGUI/SMESHGUI_PatternWidget.cxx @@ -1,30 +1,30 @@ // SMESH SMESHGUI : GUI for SMESH component // // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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. -// -// 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 -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// 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. +// +// 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. +// +// 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 +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org // // // // File : SMESHGUI_PatternWidget.cxx // Author : Michael ZORIN // Module : SMESH -// $Header: +// $Header: #include "SMESHGUI_PatternWidget.h" @@ -35,59 +35,57 @@ //================================================================================= // class : SMESHGUI_PatternWidget() -// purpose : +// purpose : //================================================================================= -SMESHGUI_PatternWidget::SMESHGUI_PatternWidget( QWidget* parent, const char* name, WFlags fl ) - : QFrame( parent, name, WStyle_Customize) +SMESHGUI_PatternWidget::SMESHGUI_PatternWidget (QWidget* parent, const char* name, WFlags fl) + : QFrame(parent, name, WStyle_Customize) { myMinU = myMinV = myMaxU = myMaxV = 0; setMinimumHeight(150); repaint(); } - - //================================================================================= // function : ~SMESHGUI_PatternWidget() -// purpose : +// purpose : //================================================================================= SMESHGUI_PatternWidget::~SMESHGUI_PatternWidget() { } - //================================================================================= -// function : SMESHGUI_PatternWidget::SetPoints -// purpose : +// function : SetPoints() +// purpose : //================================================================================= -void SMESHGUI_PatternWidget::SetPoints( PointVector thePoints, QValueVector theKeys, ConnectivityVector theConnections ) +void SMESHGUI_PatternWidget::SetPoints (PointVector thePoints, + QValueVector theKeys, + ConnectivityVector theConnections) { myPoints = thePoints; myKeys = theKeys; myConnections = theConnections; - + if (!thePoints.size()) return; - + myMinU = myMaxU = (thePoints[0]).x; myMinV = myMaxV = (thePoints[0]).y; double x, y; - - for (int i = 1; i < thePoints.size(); i++) - { - x = (thePoints[i]).x; - y = (thePoints[i]).y; - - if ( myMinU > x ) - myMinU = x; - if ( myMaxU < x) - myMaxU = x; - if ( myMinV > y ) - myMinV = y; - if ( myMaxV < y) - myMaxV = y; - } - + + for (int i = 1; i < thePoints.size(); i++) { + x = (thePoints[i]).x; + y = (thePoints[i]).y; + + if (myMinU > x) + myMinU = x; + if (myMaxU < x) + myMaxU = x; + if (myMinV > y) + myMinV = y; + if (myMaxV < y) + myMaxV = y; + } + repaint(); } @@ -95,77 +93,73 @@ static const int Shift = 4; // shift of the point number from point static const int Border = 20; //================================================================================= -// function : SMESHGUI_PatternWidget::paintEvent -// purpose : +// function : paintEvent() +// purpose : //================================================================================= -void SMESHGUI_PatternWidget::paintEvent( QPaintEvent * ) +void SMESHGUI_PatternWidget::paintEvent (QPaintEvent*) { - QPainter paint( this ); - paint.setBrush (Qt::SolidPattern ); + QPainter paint (this); + paint.setBrush(Qt::SolidPattern); //Draw points const int aRadius = 3; // radius of a point - - for (int i = 0; i < myKeys.size() && i < myPoints.size(); i++) - { - SMESH::PointStruct aPoint = myPoints[ myKeys[i] ]; - QPoint aQPnt = MapCoords( aPoint.x, aPoint.y); - - paint.drawPie( aQPnt.x() - aRadius, aQPnt.y() - aRadius, aRadius*2, aRadius*2, 5760, 5760 ); - paint.drawText( aQPnt.x() + Shift, aQPnt.y() - Shift, QString::number( i+1 ) ); - } - + + for (int i = 0; i < myKeys.size() && i < myPoints.size(); i++) { + SMESH::PointStruct aPoint = myPoints[ myKeys[i] ]; + QPoint aQPnt = MapCoords(aPoint.x, aPoint.y); + + paint.drawPie(aQPnt.x() - aRadius, aQPnt.y() - aRadius, aRadius*2, aRadius*2, 5760, 5760); + paint.drawText(aQPnt.x() + Shift, aQPnt.y() - Shift, QString::number(i+1)); + } + //Draw lines - for (int i = 0; i < myConnections.size(); i++) - { - QValueVector aCVector = myConnections[i]; - - if ( aCVector.size() == 0 ) - continue; - - SMESH::PointStruct aPoint = myPoints[ aCVector[0] ]; - const QPoint aBeginPnt = MapCoords( aPoint.x, aPoint.y); - QPoint aFirstPnt = aBeginPnt, aSecondPnt; - - for (int j = 1; j < aCVector.size(); j++) - { - aPoint = myPoints[ aCVector[j] ]; - aSecondPnt = MapCoords( aPoint.x, aPoint.y); - paint.drawLine(aFirstPnt, aSecondPnt); - aFirstPnt = aSecondPnt; - } - - paint.drawLine(aBeginPnt, aSecondPnt); + for (int i = 0; i < myConnections.size(); i++) { + QValueVector aCVector = myConnections[i]; + + if (aCVector.size() == 0) + continue; + + SMESH::PointStruct aPoint = myPoints[ aCVector[0] ]; + const QPoint aBeginPnt = MapCoords(aPoint.x, aPoint.y); + QPoint aFirstPnt = aBeginPnt, aSecondPnt; + + for (int j = 1; j < aCVector.size(); j++) { + aPoint = myPoints[ aCVector[j] ]; + aSecondPnt = MapCoords(aPoint.x, aPoint.y); + paint.drawLine(aFirstPnt, aSecondPnt); + aFirstPnt = aSecondPnt; } -} + paint.drawLine(aBeginPnt, aSecondPnt); + } +} //================================================================================= -// function : SMESHGUI_PatternWidget::MapCoords -// purpose : +// function : MapCoords() +// purpose : //================================================================================= -QPoint SMESHGUI_PatternWidget::MapCoords( const double u, const double v ) +QPoint SMESHGUI_PatternWidget::MapCoords (const double u, const double v) { int aWidth = width() - 2*Border; int aHeight = height() - 2*Border; double aUBound = myMaxU - myMinU; double aVBound = myMaxV - myMinV; - + double aUScale = aWidth/aUBound; double aVScale = aHeight/aVBound; - + double aScale; aUScale <= aVScale ? aScale = aUScale : aScale = aVScale; - double aUMiddle = ( myMaxU + myMinU )/2; - double aVMiddle = ( myMaxV + myMinV )/2; - - int x = int( aWidth/2 + (u - aUMiddle)*aScale + Border - Shift); - - int y = int( aHeight/2 + (aVMiddle - v)*aScale + Border + Shift); - + double aUMiddle = (myMaxU + myMinU)/2; + double aVMiddle = (myMaxV + myMinV)/2; + + int x = int(aWidth/2 + (u - aUMiddle)*aScale + Border - Shift); + + int y = int(aHeight/2 + (aVMiddle - v)*aScale + Border + Shift); + QPoint aPoint = QPoint(x, y); - + return aPoint; }