]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
Gauss Points Geometry presentation
authorouv <ouv@opencascade.com>
Tue, 20 Sep 2005 15:06:45 +0000 (15:06 +0000)
committerouv <ouv@opencascade.com>
Tue, 20 Sep 2005 15:06:45 +0000 (15:06 +0000)
src/PIPELINE/VISU_GaussPointsPL.cxx
src/PIPELINE/VISU_GaussPointsPL.hxx
src/PIPELINE/VISU_OpenGLPointSpriteMapper.cxx
src/PIPELINE/VISU_OpenGLPointSpriteMapper.hxx
src/VISUGUI/VISUM_msg_en.po
src/VISUGUI/VisuGUI_GaussPointsDlg.cxx
src/VISUGUI/VisuGUI_GaussPointsDlg.h
src/VISU_I/VISU_GaussPoints_i.cc
src/VISU_I/VISU_GaussPoints_i.hh

index 19fd0260604c221d3369867c97592fdcb7d499eb..c666087f24ceb87c8b3297207ac94a62ececbfee 100644 (file)
@@ -43,6 +43,7 @@ vtkStandardNewMacro(VISU_GaussPointsPL);
 //----------------------------------------------------------------------------
 VISU_GaussPointsPL
 ::VISU_GaussPointsPL():
+  myRelativeSize(0.1),
   myRelativeMinSize(0.03),
   myRelativeMaxSize(0.30),
   myMagnificationIncrement(0.1)
@@ -204,7 +205,7 @@ void
 VISU_GaussPointsPL
 ::SetClamp(float theClamp)
 {
-  cout << "VISU_GaussPointsPL::SetClamp " << theClamp << endl;;
+  //cout << "VISU_GaussPointsPL::SetClamp " << theClamp << endl;;
   myPSMapper->SetPointSpriteClamp( theClamp );
 
   Modified();
@@ -226,6 +227,18 @@ VISU_GaussPointsPL
   return myPSMapper->GetMaximumSupportedSize();
 }
 
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::SetRelativeSize(float theRelativeSize)
+{
+  myRelativeSize = theRelativeSize;
+
+  myPSMapper->SetPointSpriteSize( 1000.0 * myAverageCellSize * myRelativeSize );
+
+  Modified();
+}
+
 //----------------------------------------------------------------------------
 void
 VISU_GaussPointsPL
@@ -238,6 +251,7 @@ VISU_GaussPointsPL
   cout << myRelativeMinSize << " * 1000.0 = ";
   cout << 1000.0 * myAverageCellSize * myRelativeMinSize << endl;
   */
+  myPSMapper->SetPointSpriteSize( 0.0 );
   myPSMapper->SetPointSpriteMinSize( 1000.0 * myAverageCellSize * myRelativeMinSize );
 
   Modified();
@@ -255,6 +269,7 @@ VISU_GaussPointsPL
   cout << myRelativeMaxSize << " * 1000.0 = ";
   cout << 1000.0 * myAverageCellSize * myRelativeMaxSize << endl;
   */
+  myPSMapper->SetPointSpriteSize( 0.0 );
   myPSMapper->SetPointSpriteMaxSize( 1000.0 * myAverageCellSize * myRelativeMaxSize );
 
   Modified();
index 5d3e8b934b70d9edcc0c9eece23f55a6fceeb806..da44167a331d587c59155424d69a2f31305154fe 100644 (file)
@@ -95,6 +95,15 @@ public:
   float 
   GetMaximumSupportedSize();
 
+  void
+  SetRelativeSize(float theRelativeSize);
+
+  float 
+  GetRelativeSize()
+  {
+    return myRelativeSize;
+  }
+
   void
   SetRelativeMinSize(float theRelativeMinSize);
 
@@ -146,6 +155,7 @@ protected:
   float mySourceScalarRange[2];
   float myDeltaScalarRange;
   float myAverageCellSize;
+  float myRelativeSize;
   float myRelativeMinSize;
   float myRelativeMaxSize;
   float myMagnificationIncrement;
index 327ff5f9af64a850734bde41ba40003167ba4552..a75c5465777b5496898fac0d9598a40d83ccf8de 100755 (executable)
@@ -126,6 +126,7 @@ VISU_OpenGLPointSpriteMapper::VISU_OpenGLPointSpriteMapper()
 #endif
 
   this->PointSpriteClamp         = 100.0;
+  this->PointSpriteSize          =   0.0;
   this->PointSpriteMinSize       =  15.0;
   this->PointSpriteMaxSize       =  50.0;
   this->PointSpriteMagnification =   1.0;
@@ -215,7 +216,7 @@ GLhandleARB VISU_OpenGLPointSpriteMapper::InitShader()
   std::string fileName = std::string( getenv( "VISU_ROOT_DIR") ) +
                          "/share/salome/resources/Vertex_Program_ARB.txt";
 
-  //std::string fileName = std::string( "/dn06/salome/ouv/SALOME3/VISU_SRC/resources/Vertex_Program_ARB.txt");
+  //std::string fileName = std::string( "/dn06/salome/ouv/SALOME/VISU_SRC/resources/Vertex_Program_ARB.txt");
   char* shader = readFromFile( fileName );
 
   PFNGLSHADERSOURCEARBPROC glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)dlsym( this->OpenGLLibrary, "glShaderSourceARB" );
@@ -288,6 +289,14 @@ void VISU_OpenGLPointSpriteMapper::SetPointSpriteClamp( float theClamp )
 #endif
 }
 //-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::SetPointSpriteSize( float theSize )
+{
+  this->PointSpriteSize = theSize;
+#ifdef GL_ARB_shader_objects
+  this->SetShaderVariable( "geomSize", theSize );
+#endif
+}
+//-----------------------------------------------------------------------------
 void VISU_OpenGLPointSpriteMapper::SetPointSpriteMinSize( float theMinSize )
 {
   this->PointSpriteMinSize = theMinSize;
@@ -366,7 +375,9 @@ void VISU_OpenGLPointSpriteMapper::InitExtensions()
   this->SetShaderVariable( "attrib2",       1.0 );
   this->SetShaderVariable( "attrib3",       1.0 );
   this->SetShaderVariable( "clamp",         this->PointSpriteClamp );
+  this->SetShaderVariable( "geomSize",      this->PointSpriteSize );
   this->SetShaderVariable( "minSize",       this->PointSpriteMinSize );
+  this->SetShaderVariable( "attrib4",       1.0 );
   this->SetShaderVariable( "maxSize",       this->PointSpriteMaxSize );
   this->SetShaderVariable( "magnification", this->PointSpriteMagnification );
 #endif
@@ -747,7 +758,7 @@ void VISU_OpenGLPointSpriteMapper::DrawPoints(int idx,
                                              vtkCellArray *cells,
                                              vtkRenderer *ren)
 {
-  this->XMLImageDataReader->SetFileName( "/dn06/salome/ouv/SALOME3/TextureAlphaChannel.vti" );
+  this->XMLImageDataReader->SetFileName( "/dn06/salome/ouv/SALOME/TextureAlphaChannel.vti" );
   vtkImageData* imageData = this->XMLImageDataReader->GetOutput();
   this->InitTexture( imageData );
 
index 52f7b73e7e91a506f0c723e1e486501d96d5be50..bdbea7cc44dc0b3dabc9927c4a792f8e76b01619 100755 (executable)
@@ -141,11 +141,13 @@ public:
   // Description:
   // Point Sprite size parameters
   vtkGetMacro(PointSpriteClamp, float);
+  vtkGetMacro(PointSpriteSize, float);
   vtkGetMacro(PointSpriteMinSize, float);
   vtkGetMacro(PointSpriteMaxSize, float);
   vtkGetMacro(PointSpriteMagnification, float);
 
   void SetPointSpriteClamp( float );
+  void SetPointSpriteSize( float );
   void SetPointSpriteMinSize( float );
   void SetPointSpriteMaxSize( float );
   void SetPointSpriteMagnification( float );
@@ -190,6 +192,7 @@ protected:
 #endif
 
   float             PointSpriteClamp;
+  float             PointSpriteSize;
   float             PointSpriteMinSize;
   float             PointSpriteMaxSize;
   float             PointSpriteMagnification;
index 2b7f6e9c0acb6e86d44caf04a4bf1dd0dbd002d8..ec671c9480cf33edfa95ec7b20238ed028c8e60e 100644 (file)
@@ -135,12 +135,18 @@ msgstr "Gauss Points"
 msgid "VisuGUI_GaussPointsDlg::SCALAR_BAR_TAB"
 msgstr "Scalar Bar"
 
+msgid "VisuGUI_GaussPointsDlg::PRS_TITLE"
+msgstr "Presentation"
+
+msgid "VisuGUI_GaussPointsDlg::RESULTS"
+msgstr "Results"
+
+msgid "VisuGUI_GaussPointsDlg::GEOMETRY"
+msgstr "Geometry"
+
 msgid "VisuGUI_GaussPointsDlg::PRIMITIVE_TITLE"
 msgstr "Primitive"
 
-msgid "VisuGUI_GaussPointsDlg::SIZE_TITLE"
-msgstr "Size"
-
 msgid "VisuGUI_GaussPointsDlg::POINT_SPRITE"
 msgstr "Point Sprite"
 
@@ -162,6 +168,12 @@ msgstr "Main Texture (16x16) : "
 msgid "VisuGUI_GaussPointsDlg::ALPHA_CHANNEL_TEXTURE"
 msgstr "Alpha Channel Texture (16x16) : "
 
+msgid "VisuGUI_GaussPointsDlg::SIZE_TITLE"
+msgstr "Size"
+
+msgid "VisuGUI_GaussPointsDlg::SIZE"
+msgstr "Size of points (%) : "
+
 msgid "VisuGUI_GaussPointsDlg::MIN_SIZE"
 msgstr "Range values for min size (%) : "
 
@@ -174,6 +186,12 @@ msgstr "Magnification (%) : "
 msgid "VisuGUI_GaussPointsDlg::INCREMENT"
 msgstr "Increment : "
 
+msgid "VisuGUI_GaussPointsDlg::COLOR_TITLE"
+msgstr "Color"
+
+msgid "VisuGUI_GaussPointsDlg::COLOR"
+msgstr "Color : "
+
 msgid "VisuGUI_GaussScalarBarPane::ACTIVE_BAR_GRP"
 msgstr "Active bar"
 
index 26a5128c11bf7ba4e329a5c117deedcdf0b1f0b9..65945aa650ded319f969a6700c75adeff1e43faf 100644 (file)
@@ -35,7 +35,6 @@
 
 #include "VISU_GaussPoints_i.hh"
 #include "VISU_GaussPointsPL.hxx"
-//#include "VISU_ScalarMap_i.hh"
 #include "VISU_ScalarMapPL.hxx"
 #include "VISU_Convertor.hxx"
 
@@ -708,6 +707,15 @@ VisuGUI_GaussPointsDlg::VisuGUI_GaussPointsDlg(SalomeApp_Module* theModule, bool
   TopLayout->setMargin(11);
 
 
+  // Presentation
+  QButtonGroup* PrsGroup = new QButtonGroup( 2, Qt::Horizontal, tr( "PRS_TITLE" ), this, "PrimitiveTypeGroup" );
+  PrsGroup->setRadioButtonExclusive( true );
+  PrsGroup->layout()->setMargin( 11 );
+  PrsGroup->layout()->setSpacing(6);
+
+  myResultsButton = new QRadioButton( tr( "RESULTS" ), PrsGroup );
+  myGeometryButton = new QRadioButton( tr( "GEOMETRY" ), PrsGroup );
+
   QTabWidget* aTabBox = new QTabWidget (this);
 
   // Gauss points pane
@@ -716,18 +724,18 @@ VisuGUI_GaussPointsDlg::VisuGUI_GaussPointsDlg(SalomeApp_Module* theModule, bool
   aBox->setSpacing(6);
 
   // Primitive
-  QGroupBox* TopGroup = new QGroupBox ( tr( "PRIMITIVE_TITLE" ), aBox, "TopGroup" );
-  TopGroup->setColumnLayout(0, Qt::Vertical );
-  TopGroup->layout()->setSpacing( 0 );
-  TopGroup->layout()->setMargin( 0 );
+  QGroupBox* PrimitiveGroup = new QGroupBox ( tr( "PRIMITIVE_TITLE" ), aBox, "PrimitiveGroup" );
+  PrimitiveGroup->setColumnLayout(0, Qt::Vertical );
+  PrimitiveGroup->layout()->setSpacing( 0 );
+  PrimitiveGroup->layout()->setMargin( 0 );
 
-  QGridLayout* TopGroupLayout = new QGridLayout (TopGroup->layout());
-  TopGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
-  TopGroupLayout->setSpacing(6);
-  TopGroupLayout->setMargin(11);
+  QGridLayout* PrimitiveGroupLayout = new QGridLayout (PrimitiveGroup->layout());
+  PrimitiveGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+  PrimitiveGroupLayout->setSpacing(6);
+  PrimitiveGroupLayout->setMargin(11);
 
   // Primitive Type
-  QButtonGroup* aPrimitiveTypeGroup = new QButtonGroup( 3, Qt::Horizontal, TopGroup, "PrimitiveTypeGroup" );
+  QButtonGroup* aPrimitiveTypeGroup = new QButtonGroup( 3, Qt::Horizontal, PrimitiveGroup, "PrimitiveTypeGroup" );
   aPrimitiveTypeGroup->setRadioButtonExclusive( true );
   aPrimitiveTypeGroup->setFrameStyle( QFrame::NoFrame );
   aPrimitiveTypeGroup->layout()->setMargin( 0 );
@@ -741,98 +749,144 @@ VisuGUI_GaussPointsDlg::VisuGUI_GaussPointsDlg(SalomeApp_Module* theModule, bool
   QRadioButton* aGeometricalSphereButton = new QRadioButton( tr( "GEOMETRICAL_SPHERE" ), aPrimitiveTypeGroup );
   aGeometricalSphereButton->setEnabled( false );
 
-  TopGroupLayout->addMultiCellWidget( aPrimitiveTypeGroup, 0, 0, 0, 2 );
+  PrimitiveGroupLayout->addMultiCellWidget( aPrimitiveTypeGroup, 0, 0, 0, 2 );
 
   // Clamp
-  QLabel* aClampLabel = new QLabel( tr( "MAXIMUM_SIZE" ), TopGroup );
-  myClampSpinBox = new QtxDblSpinBox( 1.0, 512.0, 1.0, TopGroup );
+  QLabel* aClampLabel = new QLabel( tr( "MAXIMUM_SIZE" ), PrimitiveGroup );
+  myClampSpinBox = new QtxDblSpinBox( 1.0, 512.0, 1.0, PrimitiveGroup );
   myClampSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
   myClampSpinBox->setValue( 200.0 );
 
-  TopGroupLayout->addWidget( aClampLabel, 1, 0 );
-  TopGroupLayout->addMultiCellWidget( myClampSpinBox, 1, 1, 1, 2 );
+  PrimitiveGroupLayout->addWidget( aClampLabel, 1, 0 );
+  PrimitiveGroupLayout->addMultiCellWidget( myClampSpinBox, 1, 1, 1, 2 );
 
   // Main Texture
-  QLabel* aMainTextureLabel = new QLabel( tr( "MAIN_TEXTURE" ), TopGroup );
-  myMainTextureLineEdit = new QLineEdit( TopGroup );
-  QPushButton* aMainTextureButton = new QPushButton( TopGroup );
+  QLabel* aMainTextureLabel = new QLabel( tr( "MAIN_TEXTURE" ), PrimitiveGroup );
+  myMainTextureLineEdit = new QLineEdit( PrimitiveGroup );
+  QPushButton* aMainTextureButton = new QPushButton( PrimitiveGroup );
   aMainTextureButton->setAutoDefault( false );
   aMainTextureButton->setPixmap( aResourceMgr->loadPixmap( "VISU", tr( "ICON_LOAD_TEXTURE" ) ) );
   connect( aMainTextureButton, SIGNAL( clicked() ), this, SLOT( onBrowseMainTexture() ) );
 
-  TopGroupLayout->addWidget( aMainTextureLabel, 2, 0 );
-  TopGroupLayout->addWidget( myMainTextureLineEdit, 2, 1 );
-  TopGroupLayout->addWidget( aMainTextureButton, 2, 2 );
+  PrimitiveGroupLayout->addWidget( aMainTextureLabel, 2, 0 );
+  PrimitiveGroupLayout->addWidget( myMainTextureLineEdit, 2, 1 );
+  PrimitiveGroupLayout->addWidget( aMainTextureButton, 2, 2 );
 
   // Alpha Channel Texture
-  QLabel* aAlphaChannelTextureLabel = new QLabel( tr( "ALPHA_CHANNEL_TEXTURE" ), TopGroup );
-  myAlphaChannelTextureLineEdit = new QLineEdit( TopGroup );
-  QPushButton* aAlphaChannelTextureButton = new QPushButton( TopGroup );
+  QLabel* aAlphaChannelTextureLabel = new QLabel( tr( "ALPHA_CHANNEL_TEXTURE" ), PrimitiveGroup );
+  myAlphaChannelTextureLineEdit = new QLineEdit( PrimitiveGroup );
+  QPushButton* aAlphaChannelTextureButton = new QPushButton( PrimitiveGroup );
   aAlphaChannelTextureButton->setAutoDefault( false );
   aAlphaChannelTextureButton->setPixmap( aResourceMgr->loadPixmap( "VISU", tr( "ICON_LOAD_TEXTURE" ) ) );
   connect( aAlphaChannelTextureButton, SIGNAL( clicked() ), this, SLOT( onBrowseAlphaChannelTexture() ) );
 
-  TopGroupLayout->addWidget( aAlphaChannelTextureLabel, 3, 0 );
-  TopGroupLayout->addWidget( myAlphaChannelTextureLineEdit, 3, 1 );
-  TopGroupLayout->addWidget( aAlphaChannelTextureButton, 3, 2 );
+  PrimitiveGroupLayout->addWidget( aAlphaChannelTextureLabel, 3, 0 );
+  PrimitiveGroupLayout->addWidget( myAlphaChannelTextureLineEdit, 3, 1 );
+  PrimitiveGroupLayout->addWidget( aAlphaChannelTextureButton, 3, 2 );
 
   // Alpha Channel Threshold
-  QLabel* aAlphaChannelThresholdLabel = new QLabel( tr( "ALPHA_CHANNEL_THRESHOLD" ), TopGroup );
-  QtxDblSpinBox* aAlphaChannelThresholdSpinBox = new QtxDblSpinBox( 0.0, 1.0, 0.1, TopGroup );
+  QLabel* aAlphaChannelThresholdLabel = new QLabel( tr( "ALPHA_CHANNEL_THRESHOLD" ), PrimitiveGroup );
+  QtxDblSpinBox* aAlphaChannelThresholdSpinBox = new QtxDblSpinBox( 0.0, 1.0, 0.1, PrimitiveGroup );
   aAlphaChannelThresholdSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
   aAlphaChannelThresholdSpinBox->setValue( 0.1 );
 
-  TopGroupLayout->addWidget( aAlphaChannelThresholdLabel, 4, 0 );
-  TopGroupLayout->addMultiCellWidget( aAlphaChannelThresholdSpinBox, 4, 4, 1, 2 );
-
+  PrimitiveGroupLayout->addWidget( aAlphaChannelThresholdLabel, 4, 0 );
+  PrimitiveGroupLayout->addMultiCellWidget( aAlphaChannelThresholdSpinBox, 4, 4, 1, 2 );
 
   // Size
-  QGroupBox* BottomGroup = new QGroupBox ( tr( "SIZE_TITLE" ), aBox, "BottomGroup" );
-  BottomGroup->setColumnLayout(0, Qt::Vertical );
-  BottomGroup->layout()->setSpacing( 0 );
-  BottomGroup->layout()->setMargin( 0 );
+  QGroupBox* SizeGroup = new QGroupBox ( tr( "SIZE_TITLE" ), aBox, "SizeGroup" );
+  SizeGroup->setColumnLayout(0, Qt::Vertical );
+  SizeGroup->layout()->setSpacing( 0 );
+  SizeGroup->layout()->setMargin( 0 );
+
+  QGridLayout* SizeGroupLayout = new QGridLayout (SizeGroup->layout());
+  SizeGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+  SizeGroupLayout->setSpacing(6);
+  SizeGroupLayout->setMargin(11);
+
+  // Geometry Size
+  mySizeLabel = new QLabel( tr( "SIZE" ), SizeGroup );
+  mySizeSpinBox = new QtxDblSpinBox( 0, 100, 1, SizeGroup );
+  mySizeSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  mySizeSpinBox->setValue( 10 );
 
-  QGridLayout* BottomGroupLayout = new QGridLayout (BottomGroup->layout());
-  BottomGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
-  BottomGroupLayout->setSpacing(6);
-  BottomGroupLayout->setMargin(11);
+  SizeGroupLayout->addWidget( mySizeLabel, 0, 0 );
+  SizeGroupLayout->addWidget( mySizeSpinBox, 0, 1 );
 
   // Min Size
-  QLabel* aMinSizeLabel = new QLabel( tr( "MIN_SIZE" ), BottomGroup );
-  myMinSizeSpinBox = new QtxDblSpinBox( 0, 100, 1, BottomGroup );
+  myMinSizeLabel = new QLabel( tr( "MIN_SIZE" ), SizeGroup );
+  myMinSizeSpinBox = new QtxDblSpinBox( 0, 100, 1, SizeGroup );
   myMinSizeSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
   myMinSizeSpinBox->setValue( 10 );
 
-  BottomGroupLayout->addWidget( aMinSizeLabel, 0, 0 );
-  BottomGroupLayout->addWidget( myMinSizeSpinBox, 0, 1 );
+  SizeGroupLayout->addWidget( myMinSizeLabel, 1, 0 );
+  SizeGroupLayout->addWidget( myMinSizeSpinBox, 1, 1 );
 
   // Max Size
-  QLabel* aMaxSizeLabel = new QLabel( tr( "MAX_SIZE" ), BottomGroup );
-  myMaxSizeSpinBox = new QtxDblSpinBox( 0, 100, 1, BottomGroup );
+  myMaxSizeLabel = new QLabel( tr( "MAX_SIZE" ), SizeGroup );
+  myMaxSizeSpinBox = new QtxDblSpinBox( 0, 100, 1, SizeGroup );
   myMaxSizeSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
   myMaxSizeSpinBox->setValue( 33 );
 
-  BottomGroupLayout->addWidget( aMaxSizeLabel, 0, 2 );
-  BottomGroupLayout->addWidget( myMaxSizeSpinBox, 0, 3 );
+  SizeGroupLayout->addWidget( myMaxSizeLabel, 1, 2 );
+  SizeGroupLayout->addWidget( myMaxSizeSpinBox, 1, 3 );
 
   // Magnification
-  QLabel* aMagnificationLabel = new QLabel( tr( "MAGNIFICATION" ), BottomGroup );
-  myMagnificationSpinBox = new QtxDblSpinBox( 50, 200, 10, BottomGroup );
+  QLabel* aMagnificationLabel = new QLabel( tr( "MAGNIFICATION" ), SizeGroup );
+  myMagnificationSpinBox = new QtxDblSpinBox( 10, 1000, 10, SizeGroup );
   myMagnificationSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
   myMagnificationSpinBox->setValue( 100 );
 
-  BottomGroupLayout->addWidget( aMagnificationLabel, 1, 0 );
-  BottomGroupLayout->addWidget( myMagnificationSpinBox, 1, 1 );
+  SizeGroupLayout->addWidget( aMagnificationLabel, 2, 0 );
+  SizeGroupLayout->addWidget( myMagnificationSpinBox, 2, 1 );
 
   // Increment
-  QLabel* aIncrementLabel = new QLabel( tr( "INCREMENT" ), BottomGroup );
-  myIncrementSpinBox = new QtxDblSpinBox( 5, 50, 5, BottomGroup );
+  QLabel* aIncrementLabel = new QLabel( tr( "INCREMENT" ), SizeGroup );
+  myIncrementSpinBox = new QtxDblSpinBox( 5, 50, 5, SizeGroup );
   myIncrementSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
   myIncrementSpinBox->setValue( 10 );
 
-  BottomGroupLayout->addWidget( aIncrementLabel, 1, 2 );
-  BottomGroupLayout->addWidget( myIncrementSpinBox, 1, 3 );
+  SizeGroupLayout->addWidget( aIncrementLabel, 2, 2 );
+  SizeGroupLayout->addWidget( myIncrementSpinBox, 2, 3 );
+
+
+  // Color
+  QGroupBox* ColorGroup = new QGroupBox ( tr( "COLOR_TITLE" ), aBox, "ColorGroup" );
+  ColorGroup->setColumnLayout(0, Qt::Vertical );
+  ColorGroup->layout()->setSpacing( 0 );
+  ColorGroup->layout()->setMargin( 0 );
+
+  QGridLayout* ColorGroupLayout = new QGridLayout (ColorGroup->layout());
+  ColorGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft);
+  ColorGroupLayout->setSpacing(6);
+  ColorGroupLayout->setMargin(11);
+
+  QLabel* aColorLabel = new QLabel( tr( "COLOR" ), ColorGroup );
+  myColorButton = new QPushButton( ColorGroup );
+  myColorButton->setPaletteBackgroundColor( Qt::blue );
+  myColorButton->setPaletteForegroundColor( Qt::blue );
+
+  ColorGroupLayout->addWidget( aColorLabel, 0, 0 );
+  ColorGroupLayout->addWidget( myColorButton, 0, 1 );
 
+  connect( myColorButton, SIGNAL( clicked() ), this, SLOT( onColorButtonPressed() ) );
+
+  connect( myGeometryButton, SIGNAL( toggled( bool ) ), ColorGroup,       SLOT( setEnabled( bool ) ) );
+  connect( myGeometryButton, SIGNAL( toggled( bool ) ), mySizeLabel,      SLOT( setEnabled( bool ) ) );
+  connect( myGeometryButton, SIGNAL( toggled( bool ) ), mySizeSpinBox,    SLOT( setEnabled( bool ) ) );
+  connect( myResultsButton,  SIGNAL( toggled( bool ) ), myMinSizeLabel,   SLOT( setEnabled( bool ) ) );
+  connect( myResultsButton,  SIGNAL( toggled( bool ) ), myMinSizeSpinBox, SLOT( setEnabled( bool ) ) );
+  connect( myResultsButton,  SIGNAL( toggled( bool ) ), myMaxSizeLabel,   SLOT( setEnabled( bool ) ) );
+  connect( myResultsButton,  SIGNAL( toggled( bool ) ), myMaxSizeSpinBox, SLOT( setEnabled( bool ) ) );
+
+  bool isResults = myResultsButton->isChecked();
+  ColorGroup->setEnabled( !isResults );
+  mySizeLabel->setEnabled( !isResults );
+  mySizeSpinBox->setEnabled( !isResults );
+  myMinSizeLabel->setEnabled( isResults );
+  myMinSizeSpinBox->setEnabled( isResults );
+  myMaxSizeLabel->setEnabled( isResults );
+  myMaxSizeSpinBox->setEnabled( isResults );
 
   myScalarPane = new VisuGUI_GaussScalarBarPane(this, SetPref);
   myScalarPane->setMargin(5);
@@ -861,7 +915,8 @@ VisuGUI_GaussPointsDlg::VisuGUI_GaussPointsDlg(SalomeApp_Module* theModule, bool
   buttonCancel->setAutoDefault( TRUE );
   GroupButtonsLayout->addWidget( buttonCancel, 0, 2 );
 
-  TopLayout->addWidget(aTabBox);
+  TopLayout->addWidget( PrsGroup );
+  TopLayout->addWidget( aTabBox );
   TopLayout->addWidget( GroupButtons );
 
   connect( buttonOk,     SIGNAL( clicked() ), this, SLOT( accept() ) );
@@ -870,9 +925,16 @@ VisuGUI_GaussPointsDlg::VisuGUI_GaussPointsDlg(SalomeApp_Module* theModule, bool
 
 void VisuGUI_GaussPointsDlg::initFromPrsObject( VISU::GaussPoints_i* thePrs )
 {
+  bool isResults = thePrs->IsColored();
+  myResultsButton->setChecked( isResults );
+  myGeometryButton->setChecked( !isResults );
+
+  myColorButton->setPaletteBackgroundColor( thePrs->GetColor() );
+
   myClampSpinBox->setMaxValue( thePrs->GetGaussPointsPL()->GetMaximumSupportedSize() );
   myClampSpinBox->setValue( thePrs->GetGaussPointsPL()->GetClamp() );
 
+  mySizeSpinBox->setValue( thePrs->GetGaussPointsPL()->GetRelativeSize() * 100.0 );
   myMinSizeSpinBox->setValue( thePrs->GetGaussPointsPL()->GetRelativeMinSize() * 100.0 );
   myMaxSizeSpinBox->setValue( thePrs->GetGaussPointsPL()->GetRelativeMaxSize() * 100.0 );
 
@@ -886,8 +948,18 @@ int VisuGUI_GaussPointsDlg::storeToPrsObject( VISU::GaussPoints_i* thePrs )
 {
   thePrs->GetGaussPointsPL()->SetClamp( myClampSpinBox->value() );
 
-  thePrs->GetGaussPointsPL()->SetRelativeMinSize( myMinSizeSpinBox->value() / 100.0 );
-  thePrs->GetGaussPointsPL()->SetRelativeMaxSize( myMaxSizeSpinBox->value() / 100.0 );
+  bool isResults = myResultsButton->isChecked();
+  if( isResults )
+  {
+    thePrs->GetGaussPointsPL()->SetRelativeMinSize( myMinSizeSpinBox->value() / 100.0 );
+    thePrs->GetGaussPointsPL()->SetRelativeMaxSize( myMaxSizeSpinBox->value() / 100.0 );
+  }
+  else
+  {
+    thePrs->GetGaussPointsPL()->SetRelativeSize( mySizeSpinBox->value() / 100.0 );
+    thePrs->SetColor( myColorButton->paletteBackgroundColor() );
+  }
+  thePrs->ShowColored( isResults );
 
   thePrs->GetGaussPointsPL()->SetMagnification( myMagnificationSpinBox->value() / 100.0 );
   thePrs->GetGaussPointsPL()->SetMagnificationIncrement( myIncrementSpinBox->value() / 100.0 );
@@ -916,3 +988,10 @@ void VisuGUI_GaussPointsDlg::onBrowseAlphaChannelTexture()
   if( !aFileName.isNull() )
     myAlphaChannelTextureLineEdit->setText( aFileName );
 }
+
+void VisuGUI_GaussPointsDlg::onColorButtonPressed()
+{
+  QColor aColor = myColorButton->paletteBackgroundColor();
+  aColor = QColorDialog::getColor( aColor, this );
+  myColorButton->setPaletteBackgroundColor( aColor );
+}
index 9a9d7c4bc1ca2d8283a4e3ea8434a7fbd9539ea2..fdcda88ccea74292b5b09033d2c97d7df9cd86d0 100644 (file)
@@ -132,6 +132,7 @@ protected slots:
 
   void onBrowseMainTexture();
   void onBrowseAlphaChannelTexture();
+  void onColorButtonPressed();
 
 private:
   VisuGUI_GaussScalarBarPane*   myScalarPane;
@@ -141,11 +142,20 @@ private:
   QLineEdit*               myMainTextureLineEdit;
   QLineEdit*               myAlphaChannelTextureLineEdit;
 
+  QRadioButton*            myResultsButton;
+  QRadioButton*            myGeometryButton;
+
+  QLabel*                  mySizeLabel;
+  QtxDblSpinBox*           mySizeSpinBox;
+  QLabel*                  myMinSizeLabel;
   QtxDblSpinBox*           myMinSizeSpinBox;
+  QLabel*                  myMaxSizeLabel;
   QtxDblSpinBox*           myMaxSizeSpinBox;
 
   QtxDblSpinBox*           myMagnificationSpinBox;
   QtxDblSpinBox*           myIncrementSpinBox;
+
+  QPushButton*             myColorButton;
 };
 
 #endif // VISUGUI_GAUSSPOINTSDLS_H
index 0c90309742318ed58a11415326930678d2a196cf..7fa87b1de4a34087064ea2b31fde1a66a4371475 100644 (file)
@@ -89,7 +89,9 @@ GaussPoints_i(Result_i* theResult,
   PrsObject_i(theResult->GetStudyDocument()), 
   Prs3d_i(theResult,theAddToStudy),
   ScalarMap_i(theResult,theAddToStudy),
-  myGaussPointsPL(NULL)
+  myGaussPointsPL(NULL),
+  myIsColored(true),
+  myColor(Qt::blue)
 {
   if(MYDEBUG) MESSAGE("GaussPoints_i::GaussPoints_i");
 }
@@ -217,7 +219,20 @@ void
 VISU::GaussPoints_i
 ::UpdateActor(VISU_Actor* theActor) 
 {
-  VISU::ScalarMap_i::UpdateActor(theActor);
+  if(VISU_ScalarMapAct* anActor = dynamic_cast<VISU_ScalarMapAct*>(theActor)){
+    if(IsColored()){
+      anActor->SetBarVisibility(true);
+      myPipeLine->GetMapper()->SetScalarVisibility(1);
+    }else{
+      anActor->SetBarVisibility(false);
+      myPipeLine->GetMapper()->SetScalarVisibility(0);
+
+      anActor->GetProperty()->SetColor(myColor.red() / 255.0,
+                                      myColor.green() / 255.0,
+                                      myColor.blue() / 255.0);
+    }
+    VISU::ScalarMap_i::UpdateActor(theActor);
+  }
 }
 
 
index 81737c2a1009a664fd7724b92314c60e1363d6ab..67d4427ce4dca27286dfd505b56450174401cd70 100644 (file)
@@ -55,6 +55,12 @@ namespace VISU
 
     VISU_GaussPointsPL* GetGaussPointsPL(){ return myGaussPointsPL; }
 
+    QColor GetColor() { return myColor;}
+    void SetColor( const QColor& theColor ) { myColor = theColor; }
+
+    bool IsColored() { return myIsColored; }
+    void ShowColored( bool theColored ) { myIsColored = theColored; }
+
   protected:
     virtual void DoSetInput(Result_i* theResult);
     virtual void DoHook();
@@ -64,6 +70,8 @@ namespace VISU
     GetPipeLine();
 
     VISU_GaussPointsPL *myGaussPointsPL;
+    QColor myColor;
+    bool myIsColored;
 
   public:
     static