From 4d82fac90f9739030add4944b277ffe7581148cf Mon Sep 17 00:00:00 2001 From: ouv Date: Tue, 15 Mar 2011 13:56:27 +0000 Subject: [PATCH] Note 0009977 of the issue 0013178: EDF243 VISU : post_processing for fields at nodes --- .../gui/VISU/images/point_marker_dlg3.png | Bin 0 -> 8891 bytes .../gui/VISU/images/point_sprite_marker.png | Bin 0 -> 5795 bytes doc/salome/gui/VISU/input/point_marker.doc | 17 ++ idl/VISU_Gen.idl | 3 +- resources/Makefile.am | 1 + resources/Visu_point_sprite.png | Bin 0 -> 703 bytes src/OBJECT/VISU_IsoSurfActor.cxx | 9 +- src/OBJECT/VISU_IsoSurfActor.h | 4 + src/OBJECT/VISU_ScalarMapAct.cxx | 251 +++++++++++++++++- src/OBJECT/VISU_ScalarMapAct.h | 22 ++ src/VISUGUI/VISU_images.ts | 4 + src/VISUGUI/VisuGUI.cxx | 8 + src/VISU_I/VISU_DumpPython.cc | 5 +- src/VISU_I/VISU_Prs3d_i.cc | 2 + 14 files changed, 318 insertions(+), 8 deletions(-) create mode 100755 doc/salome/gui/VISU/images/point_marker_dlg3.png create mode 100755 doc/salome/gui/VISU/images/point_sprite_marker.png create mode 100755 resources/Visu_point_sprite.png diff --git a/doc/salome/gui/VISU/images/point_marker_dlg3.png b/doc/salome/gui/VISU/images/point_marker_dlg3.png new file mode 100755 index 0000000000000000000000000000000000000000..bec4a9a39a4344cd67e13bb57605a349e9781ca5 GIT binary patch literal 8891 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 NrmCn3s*|^f`Y)6biva)t literal 0 HcmV?d00001 diff --git a/doc/salome/gui/VISU/images/point_sprite_marker.png b/doc/salome/gui/VISU/images/point_sprite_marker.png new file mode 100755 index 0000000000000000000000000000000000000000..ea646309f04f34485d524ed2847c27d524c3b7bf GIT binary patch literal 5795 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 + +There is also an additional type of point marker - Point Sprite marker, +which allows to display points as OpenGL point sprites with predefined +shape and alpha mask. This marker is added to the end of the list of +standard markers. + +\note The Point Sprite marker is insensitive to scale factor parameter, +but it is possible to change its magnification by pressing "m" and "M" +(Shift + "m") buttons in the view, just like for Gauss Points presentation. + +\image html point_marker_dlg3.png + +
+ +\image html point_sprite_marker.png "Presentation with Point Sprite marker" + - Custom point markers It is also possible to load a point marker shape from an external file. diff --git a/idl/VISU_Gen.idl b/idl/VISU_Gen.idl index a5949704..c7cf388d 100644 --- a/idl/VISU_Gen.idl +++ b/idl/VISU_Gen.idl @@ -92,7 +92,8 @@ module VISU { MT_O_PLUS, MT_O_STAR, MT_O_X, - MT_USER + MT_USER, + MT_POINT_SPRITE /*!< VISU specific */ }; /*! diff --git a/resources/Makefile.am b/resources/Makefile.am index 5ea587cb..44856c00 100644 --- a/resources/Makefile.am +++ b/resources/Makefile.am @@ -57,6 +57,7 @@ Visu_ok.png \ Visu_plot2d.png \ Visu_plot3d.png \ Visu_point_selection.png \ +Visu_point_sprite.png \ Visu_points.png \ Visu_recording_stop.png \ Visu_remove.png \ diff --git a/resources/Visu_point_sprite.png b/resources/Visu_point_sprite.png new file mode 100755 index 0000000000000000000000000000000000000000..a7bd4aa2800a73cbd2e7155d4d05af91cd76c017 GIT binary patch literal 703 zcmV;w0zmzVP)wmb0yt=6p-th5S+B4Vp6HJ=&Jo0&vHql-f_ z@7;6mx%a+H6h$F5NG9o$v;W-H1~4Y@UzSQq>WSmq^!@uz>VcMocI;>~JD2iUF|sVw z7jVd0C>YPITQlA7CgycQ%$vXs7cu)bG)-xdwj)lgt5!gkU9zUR^sQTNUk2e02zil| zhdn}Z1Q@2IoWof^?sVUdbcJIHuw+u?f7EdB%oPOOm)t*}g78cv#yBO$8{nl#%rPpI zavt|D9;3A#=yG}@S`OrReEmf)UC1>Er4f){gY$Kh6PZx8{`MT=n0gSY^E2j+k&h`hob$|((?9IdM}Q0;*pYB`%F#2BJN zVFH0O5Lg7M02q=j!kxf{G3pTtw-DRw_p!eMds|Ok#ory59EZ)15cvke52plP&NRTwdw>$M0x{Iij!;#Ab$74Mtdzdq zLxV=q#JAKI`RrtVPi^~rI(HFsVU_fS_4IgAgJ6xqaYffI9xKOo={FbL$A5tHBPn>RgSs@lMums@?xjM*Yu zD3Hi_8|QhZYs4mTTv|>SHQ&zjNX8dRsJ~3kqOe4wNo$WB>h(7>eYZcQMx#*{i*2m8 lp-WdbW%uM?>s+y3!5@(6oV~Lj>MH;M002ovPDHLkV1h_WJ!Sv^ literal 0 HcmV?d00001 diff --git a/src/OBJECT/VISU_IsoSurfActor.cxx b/src/OBJECT/VISU_IsoSurfActor.cxx index 52785d4c..1aec5980 100644 --- a/src/OBJECT/VISU_IsoSurfActor.cxx +++ b/src/OBJECT/VISU_IsoSurfActor.cxx @@ -133,11 +133,18 @@ int VISU_IsoSurfActor::RenderOpaqueGeometry(vtkViewport *vp) return VISU_ScalarMapAct::RenderOpaqueGeometry(vp); } - +#if (VTK_XVERSION < 0x050100) int VISU_IsoSurfActor::RenderTranslucentGeometry(vtkViewport *vp) +#else +int VISU_IsoSurfActor::RenderTranslucentPolygonalGeometry(vtkViewport *vp) +#endif { UpdateLabels(); +#if (VTK_XVERSION < 0x050100) return VISU_ScalarMapAct::RenderTranslucentGeometry(vp); +#else + return VISU_ScalarMapAct::RenderTranslucentPolygonalGeometry(vp); +#endif } void VISU_IsoSurfActor::SetVisibility(int theMode){ diff --git a/src/OBJECT/VISU_IsoSurfActor.h b/src/OBJECT/VISU_IsoSurfActor.h index 345e66f9..acbccf5f 100644 --- a/src/OBJECT/VISU_IsoSurfActor.h +++ b/src/OBJECT/VISU_IsoSurfActor.h @@ -49,7 +49,11 @@ class VISU_OBJECT_EXPORT VISU_IsoSurfActor : public VISU_ScalarMapAct virtual void RemoveFromRender( vtkRenderer* ); virtual int RenderOpaqueGeometry(vtkViewport *viewport); +#if (VTK_XVERSION < 0x050100) virtual int RenderTranslucentGeometry(vtkViewport *viewport); +#else + virtual int RenderTranslucentPolygonalGeometry(vtkViewport *viewport); +#endif //virtual void SetPipeLine(VISU_PipeLine* thePipeLine); diff --git a/src/OBJECT/VISU_ScalarMapAct.cxx b/src/OBJECT/VISU_ScalarMapAct.cxx index 35673709..d26381de 100644 --- a/src/OBJECT/VISU_ScalarMapAct.cxx +++ b/src/OBJECT/VISU_ScalarMapAct.cxx @@ -56,6 +56,163 @@ #include +//============================================================================ +class VISU_PointsDeviceActor: public VISU_GaussDeviceActorBase +{ + public: + vtkTypeMacro(VISU_PointsDeviceActor, VISU_GaussDeviceActorBase); + + static + VISU_PointsDeviceActor* + New(); + + + //---------------------------------------------------------------------------- + virtual + void + SetInput(vtkDataSet* theDataSet) + { + myGeomFilter->SetInput( theDataSet ); + } + + + //---------------------------------------------------------------------------- + void + SetInteractor(vtkRenderWindowInteractor* theInteractor) + { + if(theInteractor == myInteractor) + return; + + if(myInteractor) + myInteractor->RemoveObserver(myEventCallbackCommand); + + if(theInteractor) + theInteractor->AddObserver(vtkCommand::CharEvent, + myEventCallbackCommand, + 0.0); + + myInteractor = theInteractor; + } + + + //---------------------------------------------------------------------------- + void + DoMapperShallowCopy( vtkMapper* theMapper, + bool theIsCopyInput ) + { + Superclass::DoMapperShallowCopy( theMapper, theIsCopyInput ); + + vtkDataSet* aDataSet = theMapper->GetInput(); + vtkFloatingPointType aScaleFactor = VISU_DeformedShapePL::GetScaleFactor( aDataSet ); + + GetPointSpriteMapper()->SetAverageCellSize( aScaleFactor ); + } + + + //---------------------------------------------------------------------------- + void + DeepCopy( VISU_PointsDeviceActor *theActor ) + { + VISU::CopyPointSpriteDataMapper( GetPointSpriteMapper(), theActor->GetPointSpriteMapper(), false ); + } + + protected: + //---------------------------------------------------------------------------- + VISU_PointsDeviceActor(): + myGeomFilter( VTKViewer_GeometryFilter::New() ), + myEventCallbackCommand( vtkCallbackCommand::New() ), + myInteractor( NULL ) + { + myGeomFilter->SetInside(true); + + VISU_OpenGLPointSpriteMapper* aMapper = VISU_OpenGLPointSpriteMapper::New(); + aMapper->SetInput( myGeomFilter->GetOutput() ); + + std::string aRootDir( getenv( "VISU_ROOT_DIR") ); + std::string aMainTexture = aRootDir + "/share/salome/resources/visu/sprite_texture.bmp"; + std::string anAlphaTexture = aRootDir + "/share/salome/resources/visu/sprite_alpha.bmp"; + VISU::TTextureValue aTextureValue = VISU::GetTexture( aMainTexture, anAlphaTexture ); + aMapper->SetImageData( aTextureValue.GetPointer() ); + + aMapper->SetUseLookupTableScalarRange(true); + aMapper->SetColorModeToMapScalars(); + aMapper->SetScalarVisibility(true); + + SetPointSpriteMapper( aMapper ); + + aMapper->Delete(); + + myEventCallbackCommand->SetClientData( this ); + myEventCallbackCommand->SetCallback( VISU_PointsDeviceActor::ProcessEvents ); + } + + + //---------------------------------------------------------------------------- + ~VISU_PointsDeviceActor() + { + SetInteractor( NULL ); + myGeomFilter->Delete(); + myEventCallbackCommand->Delete(); + } + + + //---------------------------------------------------------------------------- + static + void + ProcessEvents(vtkObject* theObject, + unsigned long theEvent, + void* theClientData, + void* theCallData) + { + if ( VISU_PointsDeviceActor* self = reinterpret_cast( theClientData ) ) + self->OnInteractorEvent( theEvent ); + } + + + //---------------------------------------------------------------------------- + void + OnInteractorEvent(unsigned long theEvent) + { + switch ( theEvent ) { + case vtkCommand::CharEvent: { + switch( myInteractor->GetKeyCode() ) { + case 'M' : + case 'm' : { + if ( !GetVisibility() ) + return; + + static vtkFloatingPointType anIncrement = 2; + vtkFloatingPointType aMagnification = GetPointSpriteMapper()->GetPointSpriteMagnification(); + vtkFloatingPointType coefficient = myInteractor->GetShiftKey() ? anIncrement : 1 / anIncrement; + + GetPointSpriteMapper()->SetPointSpriteMagnification( aMagnification * coefficient ); + + myInteractor->CreateTimer(VTKI_TIMER_UPDATE); + break; + } + default: + return; + } + break; + } + default: + return; + } + } + + + //---------------------------------------------------------------------------- + vtkCallbackCommand* myEventCallbackCommand; + vtkRenderWindowInteractor* myInteractor; + VTKViewer_GeometryFilter* myGeomFilter; + + private: + VISU_PointsDeviceActor(const VISU_PointsDeviceActor&); // Not implemented + void operator=(const VISU_PointsDeviceActor&); // Not implemented +}; + +vtkStandardNewMacro(VISU_PointsDeviceActor); + //---------------------------------------------------------------------------- vtkStandardNewMacro(VISU_ScalarMapAct); static vtkFloatingPointType EPS = 1.0 / VTK_LARGE_FLOAT; @@ -90,8 +247,14 @@ VISU_ScalarMapAct myPointsActor->SetProperty(aProperty); myPointsActor->SetUserMatrix(aMatrix); + myPointSpriteActor = VISU_PointsDeviceActor::New(); + myPointSpriteActor->SetProperty(aProperty); + myPointSpriteActor->SetUserMatrix(aMatrix); + aMatrix->Delete(); + myIsPointSpriteMode = false; + SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr(); //Quadratic 2D elements representation if(aResourceMgr) { @@ -112,6 +275,7 @@ VISU_ScalarMapAct myScalarBar->Delete(); myPointsActor->Delete(); + myPointSpriteActor->Delete(); mySurfaceActor->Delete(); myEdgeActor->Delete(); @@ -125,6 +289,8 @@ VISU_ScalarMapAct myEdgeActor->GetMapper()->ScalarVisibilityOff(); + myPointSpriteActor->DoMapperShallowCopy( thePipeLine->GetMapper(), false ); + VISU::CopyMapper( myPointsActor->GetMapper(), thePipeLine->GetMapper(), false ); VISU::CopyMapper( mySurfaceActor->GetMapper(), thePipeLine->GetMapper(), false ); } @@ -141,10 +307,12 @@ VISU_ScalarMapAct // myEdgeActor->SetInput( theDataSet ); if (theDataSet->IsA("vtkPolyData")) { + myPointSpriteActor->SetInput( myPolyDataExtractor->GetOutput() ); myPointsActor->SetInput( myPolyDataExtractor->GetOutput() ); mySurfaceActor->SetInput( myPolyDataExtractor->GetOutput() ); myEdgeActor->SetInput( myPolyDataExtractor->GetOutput() ); } else { + myPointSpriteActor->SetInput( myExtractor->GetOutput() ); myPointsActor->SetInput( myExtractor->GetOutput() ); mySurfaceActor->SetInput( myExtractor->GetOutput() ); myEdgeActor->SetInput( myExtractor->GetOutput() ); @@ -159,6 +327,7 @@ VISU_ScalarMapAct Superclass::SetTransform(theTransform); myPointsActor->SetTransform(theTransform); + myPointSpriteActor->SetTransform(theTransform); mySurfaceActor->SetTransform(theTransform); myEdgeActor->SetTransform(theTransform); @@ -278,6 +447,9 @@ VISU_ScalarMapAct ::SetOpacity(vtkFloatingPointType theValue) { mySurfaceActor->GetProperty()->SetOpacity(theValue); + + vtkFloatingPointType aPointSpriteOpacity = theValue > 0.0 ? 1.0 : 0.0; + myPointSpriteActor->GetPointSpriteMapper()->SetPointSpriteOpacity(aPointSpriteOpacity); } vtkFloatingPointType @@ -309,6 +481,7 @@ VISU_ScalarMapAct if(VISU_ScalarMapAct* anActor = dynamic_cast(theActor)){ Superclass::DeepCopy(theActor); SetBarVisibility(anActor->GetBarVisibility()); + myPointSpriteActor->DeepCopy( anActor->myPointSpriteActor ); SetShading(anActor->IsShading()); } } @@ -321,6 +494,8 @@ VISU_ScalarMapAct { Superclass::AddToRender(theRenderer); + myPointSpriteActor->SetInteractor( myInteractor ); + if(myScalarBar) theRenderer->AddActor2D(myScalarBar); } @@ -334,6 +509,7 @@ VISU_ScalarMapAct theRenderer->RemoveActor(myScalarBar); if ( vtkWindow* aWindow = theRenderer->GetRenderWindow() ) { + myPointSpriteActor->ReleaseGraphicsResources( aWindow ); myPointsActor->ReleaseGraphicsResources( aWindow ); mySurfaceActor->ReleaseGraphicsResources( aWindow ); myEdgeActor->ReleaseGraphicsResources( aWindow ); @@ -349,6 +525,7 @@ VISU_ScalarMapAct { Superclass::SetVisibility( theMode ); + myPointSpriteActor->SetVisibility( theMode ); myPointsActor->SetVisibility( theMode ); if(myScalarBar) @@ -396,6 +573,7 @@ VISU_ScalarMapAct else mySurfaceActor->SetRepresentation(theMode); + myPointSpriteActor->SetProperty( mySurfaceActor->GetProperty() ); myPointsActor->SetProperty( mySurfaceActor->GetProperty() ); SetShading(anIsShanding); @@ -435,6 +613,7 @@ VISU_ScalarMapAct GetMatrix(myEdgeActor->GetUserMatrix()); GetMatrix(mySurfaceActor->GetUserMatrix()); GetMatrix(myPointsActor->GetUserMatrix()); + GetMatrix(myPointSpriteActor->GetUserMatrix()); using namespace SVTK::Representation; switch ( GetRepresentation() ) { @@ -448,8 +627,13 @@ VISU_ScalarMapAct break; case Points: - myPointsActor->SetAllocatedRenderTime(this->AllocatedRenderTime,ren); - myPointsActor->RenderOpaqueGeometry(ren); + if( myIsPointSpriteMode ) { + myPointSpriteActor->SetAllocatedRenderTime(this->AllocatedRenderTime,ren); + myPointSpriteActor->RenderOpaqueGeometry(ren); + } else { + myPointsActor->SetAllocatedRenderTime(this->AllocatedRenderTime,ren); + myPointsActor->RenderOpaqueGeometry(ren); + } break; default: @@ -462,7 +646,11 @@ VISU_ScalarMapAct int VISU_ScalarMapAct +#if (VTK_XVERSION < 0x050100) ::RenderTranslucentGeometry(vtkViewport *ren) +#else +::RenderTranslucentPolygonalGeometry(vtkViewport *ren) +#endif { GetMatrix(myEdgeActor->GetUserMatrix()); GetMatrix(mySurfaceActor->GetUserMatrix()); @@ -487,12 +675,21 @@ VISU_ScalarMapAct break; case Points: - myPointsActor->SetAllocatedRenderTime(this->AllocatedRenderTime,ren); + if( myIsPointSpriteMode ) { + myPointSpriteActor->SetAllocatedRenderTime(this->AllocatedRenderTime,ren); +#if (VTK_XVERSION < 0x050100) + myPointSpriteActor->RenderTranslucentGeometry(ren); +#else + myPointSpriteActor->RenderTranslucentPolygonalGeometry(ren); +#endif + } else { + myPointsActor->SetAllocatedRenderTime(this->AllocatedRenderTime,ren); #if (VTK_XVERSION < 0x050100) - myPointsActor->RenderTranslucentGeometry(ren); + myPointsActor->RenderTranslucentGeometry(ren); #else - myPointsActor->RenderTranslucentPolygonalGeometry(ren); + myPointsActor->RenderTranslucentPolygonalGeometry(ren); #endif + } break; default: @@ -507,6 +704,46 @@ VISU_ScalarMapAct return 1; } +//---------------------------------------------------------------------------- +#if (VTK_XVERSION >= 0x050100) +int +VISU_ScalarMapAct +::HasTranslucentPolygonalGeometry() +{ + int result = 0; + + using namespace SVTK::Representation; + switch ( GetRepresentation() ) { + case Surfaceframe: + result |= mySurfaceActor->HasTranslucentPolygonalGeometry(); + result |= myEdgeActor->HasTranslucentPolygonalGeometry(); + break; + case Points: + if( myIsPointSpriteMode ) + result |= myPointSpriteActor->HasTranslucentPolygonalGeometry(); + else + result |= myPointsActor->HasTranslucentPolygonalGeometry(); + break; + default: + result |= mySurfaceActor->HasTranslucentPolygonalGeometry(); + } + + return result; +} +#endif + +//---------------------------------------------------------------------------- +unsigned long int +VISU_ScalarMapAct +::GetMemorySize() +{ + unsigned long int aSize = Superclass::GetMemorySize(); + + aSize += myPointSpriteActor->GetMemorySize(); + + return aSize; +} + //---------------------------------------------------------------------------- VISU_Actor::EQuadratic2DRepresentation @@ -542,12 +779,16 @@ void VISU_ScalarMapAct::SetMarkerStd( VTK::MarkerType theMarkerType, VTK::Marker { Superclass::SetMarkerStd( theMarkerType, theMarkerScale ); myPointsActor->SetMarkerStd( theMarkerType, theMarkerScale ); + + myIsPointSpriteMode = theMarkerType == VTK::MT_POINT_SPRITE; } void VISU_ScalarMapAct::SetMarkerTexture( int theMarkerId, VTK::MarkerTexture theMarkerTexture ) { Superclass::SetMarkerTexture( theMarkerId, theMarkerTexture ); myPointsActor->SetMarkerTexture( theMarkerId, theMarkerTexture ); + + myIsPointSpriteMode = false; } /** diff --git a/src/OBJECT/VISU_ScalarMapAct.h b/src/OBJECT/VISU_ScalarMapAct.h index 3233ff90..00b7b386 100644 --- a/src/OBJECT/VISU_ScalarMapAct.h +++ b/src/OBJECT/VISU_ScalarMapAct.h @@ -32,7 +32,13 @@ #include "VISU_OBJECT.h" #include "VISU_DataSetActor.h" +namespace VTK +{ + const MarkerType MT_POINT_SPRITE = MT_USER + 1; +} + class VISU_ScalarBarActor; +class VISU_PointsDeviceActor; //---------------------------------------------------------------------------- class VISU_OBJECT_EXPORT VISU_ScalarMapAct : public VISU_DataSetActor @@ -136,7 +142,15 @@ class VISU_OBJECT_EXPORT VISU_ScalarMapAct : public VISU_DataSetActor virtual int +#if (VTK_XVERSION < 0x050100) RenderTranslucentGeometry(vtkViewport *ren); +#else + RenderTranslucentPolygonalGeometry(vtkViewport *ren); + + virtual + int + HasTranslucentPolygonalGeometry(); +#endif virtual void @@ -174,6 +188,11 @@ class VISU_OBJECT_EXPORT VISU_ScalarMapAct : public VISU_DataSetActor bool IsShading(); + //! Gets memory size used by the instance (bytes). + virtual + unsigned long int + GetMemorySize(); + virtual void SetMarkerStd( VTK::MarkerType, VTK::MarkerScale ); @@ -197,9 +216,12 @@ class VISU_OBJECT_EXPORT VISU_ScalarMapAct : public VISU_DataSetActor bool myBarVisibility; VISU_ScalarBarActor* myScalarBar; + VISU_PointsDeviceActor* myPointSpriteActor; SVTK_DeviceActor* myPointsActor; SVTK_DeviceActor* mySurfaceActor; SVTK_DeviceActor* myEdgeActor; + + bool myIsPointSpriteMode; }; //---------------------------------------------------------------------------- diff --git a/src/VISUGUI/VISU_images.ts b/src/VISUGUI/VISU_images.ts index c2e31e3c..aace6561 100644 --- a/src/VISUGUI/VISU_images.ts +++ b/src/VISUGUI/VISU_images.ts @@ -145,6 +145,10 @@ ICON_POINT_SELECTION Visu_point_selection.png + + ICON_POINT_SPRITE + Visu_point_sprite.png + ICON_POINTS Visu_points.png diff --git a/src/VISUGUI/VisuGUI.cxx b/src/VISUGUI/VisuGUI.cxx index b09336a6..0377e286 100644 --- a/src/VISUGUI/VisuGUI.cxx +++ b/src/VISUGUI/VisuGUI.cxx @@ -1448,6 +1448,10 @@ VisuGUI _PTR(Study) aCStudy = GetCStudy( GetAppStudy( this ) ); int aStudyId = aCStudy->StudyId(); + QPixmap aPointSpritePixmap; + if( SUIT_ResourceMgr* aResourceMgr = VISU::GetResourceMgr() ) + aPointSpritePixmap = aResourceMgr->loadPixmap( "VISU", tr( "ICON_POINT_SPRITE" ) ); + bool update = false; for( SALOME_ListIteratorOfListIO It( aListIO ); It.More(); It.Next() ) { @@ -1462,6 +1466,8 @@ VisuGUI aDlg->setCustomMarkerMap( aMarkerMap[ aStudyId ] ); + aDlg->addExtraStdMarker( VTK::MT_POINT_SPRITE, aPointSpritePixmap ); + VISU::MarkerType aMarkerTypeCurrent = aPrs->GetMarkerType(); VISU::MarkerScale aMarkerScaleCurrent = aPrs->GetMarkerScale(); int aMarkerTextureCurrent = aPrs->GetMarkerTexture(); @@ -4291,6 +4297,8 @@ void VisuGUI::createPreferences() aMarkerTypeIndicesList << i; aMarkerTypeIconsList << pixmap; } + aMarkerTypeIndicesList << VTK::MT_POINT_SPRITE; + aMarkerTypeIconsList << aResourceMgr->loadPixmap( "VISU", tr( "ICON_POINT_SPRITE" ) ); setPreferenceProperty( typeOfMarker, "indexes", aMarkerTypeIndicesList ); setPreferenceProperty( typeOfMarker, "icons", aMarkerTypeIconsList ); diff --git a/src/VISU_I/VISU_DumpPython.cc b/src/VISU_I/VISU_DumpPython.cc index 55b74b23..04b04ed9 100644 --- a/src/VISU_I/VISU_DumpPython.cc +++ b/src/VISU_I/VISU_DumpPython.cc @@ -229,6 +229,7 @@ namespace VISU case MT_O_PLUS: aParam1 = "MT_O_PLUS"; break; case MT_O_STAR: aParam1 = "MT_O_STAR"; break; case MT_O_X: aParam1 = "MT_O_X"; break; + case MT_POINT_SPRITE: aParam1 = "MT_POINT_SPRITE"; break; default: aParam1 = "MT_NONE"; break; } switch( aMarkerScale ) { @@ -245,8 +246,10 @@ namespace VISU case MS_60: aParam2 = "MS_60"; break; case MS_65: aParam2 = "MS_65"; break; case MS_70: aParam2 = "MS_70"; break; - default: aParam2 = "MT_NONE"; break; + default: aParam2 = "MS_NONE"; break; } + if( aMarkerType == MT_POINT_SPRITE ) + aParam2 = "MS_NONE"; theStr<