From 0138131c26e4f4d27ce543cbe234bcc41726670b Mon Sep 17 00:00:00 2001 From: Sergey Linev <S.Linev@gsi.de> Date: Mon, 10 Dec 2018 12:27:02 +0100 Subject: [PATCH] eve7: temporary move REvePadHolder to CSG, where it only used As next step, all gPad-related functions will be removed completely --- graf3d/eve7/inc/LinkDef.h | 1 - graf3d/eve7/inc/ROOT/REveUtil.hxx | 29 +++--------------- graf3d/eve7/src/REveCsgOps.cxx | 50 ++++++++++++++++++++++++++++++- graf3d/eve7/src/REveUtil.cxx | 36 ++-------------------- 4 files changed, 55 insertions(+), 61 deletions(-) diff --git a/graf3d/eve7/inc/LinkDef.h b/graf3d/eve7/inc/LinkDef.h index ff0f801ac0d..0df02075d3b 100644 --- a/graf3d/eve7/inc/LinkDef.h +++ b/graf3d/eve7/inc/LinkDef.h @@ -72,7 +72,6 @@ // REveUtil #pragma link C++ class ROOT::Experimental::REveUtil+; #pragma link C++ class ROOT::Experimental::REveException+; -#pragma link C++ class ROOT::Experimental::REvePadHolder+; #pragma link C++ class ROOT::Experimental::REveGeoManagerHolder+; #pragma link C++ class ROOT::Experimental::REveRefCnt+; #pragma link C++ class ROOT::Experimental::REveRefBackPtr+; diff --git a/graf3d/eve7/inc/ROOT/REveUtil.hxx b/graf3d/eve7/inc/ROOT/REveUtil.hxx index a2650ff5ca9..d5d0324973f 100644 --- a/graf3d/eve7/inc/ROOT/REveUtil.hxx +++ b/graf3d/eve7/inc/ROOT/REveUtil.hxx @@ -23,7 +23,6 @@ #include <set> #include <exception> -class TVirtualPad; class TGeoManager; namespace ROOT { @@ -110,34 +109,14 @@ REveException operator+(const REveException &s1, const char *s2); // Exception-safe global variable holders /******************************************************************************/ -class REvePadHolder { -private: - TVirtualPad *fOldPad; - Bool_t fModifyUpdateP; - - REvePadHolder(const REvePadHolder &); // Not implemented - REvePadHolder &operator=(const REvePadHolder &); // Not implemented - -public: - REvePadHolder(Bool_t modify_update_p, TVirtualPad *new_pad = 0, Int_t subpad = 0); - virtual ~REvePadHolder(); - - ClassDef(REvePadHolder, 0); // Exception-safe wrapper for temporary setting of gPad variable. -}; - class REveGeoManagerHolder { private: - TGeoManager *fManager; - Int_t fNSegments; - - REveGeoManagerHolder(const REveGeoManagerHolder &); // Not implemented - REveGeoManagerHolder &operator=(const REveGeoManagerHolder &); // Not implemented + TGeoManager *fManager{nullptr}; ///<! hold manager + Int_t fNSegments{0}; ///<! previous settings for num segments public: - REveGeoManagerHolder(TGeoManager *new_gmgr = 0, Int_t n_seg = 0); - virtual ~REveGeoManagerHolder(); - - ClassDef(REveGeoManagerHolder, 0); // Exception-safe wrapper for temporary setting of gGeoManager variable. + REveGeoManagerHolder(TGeoManager *new_gmgr = nullptr, Int_t n_seg = 0); + ~REveGeoManagerHolder(); }; /******************************************************************************/ diff --git a/graf3d/eve7/src/REveCsgOps.cxx b/graf3d/eve7/src/REveCsgOps.cxx index 4f5e61d6dc1..2d5d67406ca 100644 --- a/graf3d/eve7/src/REveCsgOps.cxx +++ b/graf3d/eve7/src/REveCsgOps.cxx @@ -2892,6 +2892,52 @@ TBaseMesh* TCsgVV3D::BuildComposite() //------------------------------------------------------------------------------ +/** \class REvePadHolder +\ingroup REve +Exception safe wrapper for setting gPad. +Optionally calls gPad->Modified()/Update() in destructor. +*/ + + +class REvePadHolder { +private: + TVirtualPad *fOldPad{nullptr}; ///<! + Bool_t fModifyUpdateP{kFALSE}; ///<! + +public: + REvePadHolder(Bool_t modify_update_p, TVirtualPad *new_pad = 0, Int_t subpad = 0); + ~REvePadHolder(); +}; + +//////////////////////////////////////////////////////////////////////////////// +/// Constructor. + +REvePadHolder::REvePadHolder(Bool_t modify_update_p, TVirtualPad* new_pad, Int_t subpad) : + fOldPad (gPad), + fModifyUpdateP (modify_update_p) +{ + if (new_pad != 0) + new_pad->cd(subpad); + else + gPad = 0; +} + +//////////////////////////////////////////////////////////////////////////////// +/// Destructor. + +REvePadHolder::~REvePadHolder() +{ + if (fModifyUpdateP && gPad != 0) { + gPad->Modified(); + gPad->Update(); + } + gPad = fOldPad; +} + + + + + TBaseMesh *BuildFromCompositeShape(TGeoCompositeShape *cshape, Int_t n_seg) { TCsgVV3D vv3d; @@ -2970,8 +3016,10 @@ std::unique_ptr<TBaseMesh> MakeMesh(TGeoMatrix *matr, TGeoShape *shape) return res; } -std::unique_ptr<TBaseMesh> BuildFromCompositeShapeNew(TGeoCompositeShape *cshape, Int_t) +std::unique_ptr<TBaseMesh> BuildFromCompositeShapeNew(TGeoCompositeShape *cshape, Int_t n_seg) { + REveGeoManagerHolder gmgr(REveGeoShape::GetGeoManager(), n_seg); + return MakeMesh(nullptr, cshape); } diff --git a/graf3d/eve7/src/REveUtil.cxx b/graf3d/eve7/src/REveUtil.cxx index cf18201c12d..1756d4d6328 100644 --- a/graf3d/eve7/src/REveUtil.cxx +++ b/graf3d/eve7/src/REveUtil.cxx @@ -24,7 +24,6 @@ #include "TROOT.h" #include "TInterpreter.h" -#include "TVirtualPad.h" #include "TSystem.h" #include "TGClient.h" @@ -364,37 +363,6 @@ REveException REX::operator+(const REveException &s1, const char *s2) { REveException r(s1); r += s2; return r; } -/** \class REvePadHolder -\ingroup REve -Exception safe wrapper for setting gPad. -Optionally calls gPad->Modified()/Update() in destructor. -*/ - -//////////////////////////////////////////////////////////////////////////////// -/// Constructor. - -REvePadHolder::REvePadHolder(Bool_t modify_update_p, TVirtualPad* new_pad, Int_t subpad) : - fOldPad (gPad), - fModifyUpdateP (modify_update_p) -{ - if (new_pad != 0) - new_pad->cd(subpad); - else - gPad = 0; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Destructor. - -REvePadHolder::~REvePadHolder() -{ - if (fModifyUpdateP && gPad != 0) { - gPad->Modified(); - gPad->Update(); - } - gPad = fOldPad; -} - /** \class REveGeoManagerHolder \ingroup REve Exception safe wrapper for setting gGeoManager. @@ -423,7 +391,7 @@ REveGeoManagerHolder::REveGeoManagerHolder(TGeoManager* new_gmgr, Int_t n_seg) : } else { - gGeoIdentity = 0; + gGeoIdentity = nullptr; } } @@ -443,7 +411,7 @@ REveGeoManagerHolder::~REveGeoManagerHolder() } else { - gGeoIdentity = 0; + gGeoIdentity = nullptr; } } -- GitLab