Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/visualization/Qt3D/src/G4Qt3DUtils.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /visualization/Qt3D/src/G4Qt3DUtils.cc (Version 11.3.0) and /visualization/Qt3D/src/G4Qt3DUtils.cc (Version 10.4.p2)


  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 // John Allison, 18th July 2020                   
 27                                                   
 28 #include "G4Qt3DUtils.hh"                         
 29                                                   
 30 #include "G4Qt3DQEntity.hh"                       
 31 #include "G4PhysicalVolumeModel.hh"               
 32                                                   
 33 Qt3DCore::QTransform* G4Qt3DUtils::CreateQTran    
 34 {                                                 
 35   auto* q = new Qt3DCore::QTransform;             
 36   q->setMatrix                                    
 37   (QMatrix4x4                                     
 38   (g.xx(),g.xy(),g.xz(),g.dx(),                   
 39    g.yx(),g.yy(),g.yz(),g.dy(),                   
 40    g.zx(),g.zy(),g.zz(),g.dz(),                   
 41    0,0,0,1));                                     
 42   q->setObjectName("transform");                  
 43   return q;                                       
 44 }                                                 
 45                                                   
 46 QColor G4Qt3DUtils::ConvertToQColor(const G4Co    
 47   QColor qColor;                                  
 48   qColor.setRgbF(c.GetRed(),c.GetGreen(),c.Get    
 49   return qColor;                                  
 50 }                                                 
 51                                                   
 52 QVector3D G4Qt3DUtils::ConvertToQVector3D(cons    
 53   return QVector3D(v.x(),v.y(),v.z());            
 54 }                                                 
 55                                                   
 56 // https://stackoverflow.com/questions/4575927    
 57 void G4Qt3DUtils::delete_entity_recursively(Qt    
 58 #ifdef G4QT3DDEBUG                                
 59   G4Qt3DUtils::LogFile << "node " << node->obj    
 60 #endif                                            
 61   Qt3DCore::QEntity* entity = dynamic_cast<Qt3    
 62   if(entity == nullptr){                          
 63 #ifdef G4QT3DDEBUG                                
 64     G4String name = node->objectName().toStdSt    
 65     if (name == "") name = "X";                   
 66     G4Qt3DUtils::LogFile << (void*)node << ":     
 67     << "Deleting non-entity node " << name <<     
 68 #endif                                            
 69     delete node;                                  
 70     node = nullptr;                               
 71     return;                                       
 72   }                                               
 73   for (auto component: entity->components()) {    
 74 #ifdef G4QT3DDEBUG                                
 75     G4String name = component->objectName().to    
 76     if (name == "") name = "X";                   
 77     G4Qt3DUtils::LogFile << (void*)node << ":     
 78     << " of " << entity->objectName().toStdStr    
 79 #endif                                            
 80     entity->removeComponent(component);           
 81     delete component;                             
 82     component = nullptr;                          
 83   }                                               
 84   for (auto child_node: entity->childNodes())     
 85     G4String name = child_node->objectName().t    
 86     if (name == "") name = "X";                   
 87 #ifdef G4QT3DDEBUG                                
 88     G4Qt3DUtils::LogFile << (void*)child_node     
 89     << " of " << entity->objectName().toStdStr    
 90 #endif                                            
 91     delete_entity_recursively(child_node);        
 92   }                                               
 93   G4String name = entity->objectName().toStdSt    
 94   if (name == "") name = "X";                     
 95 #ifdef G4QT3DDEBUG                                
 96   G4Qt3DUtils::LogFile << (void*)entity << ":     
 97 #endif                                            
 98   delete entity;                                  
 99   entity = nullptr;                               
100 }                                                 
101                                                   
102 void G4Qt3DUtils::delete_components_and_childr    
103   Qt3DCore::QEntity* entity = dynamic_cast<Qt3    
104   if(entity == nullptr){                          
105 #ifdef G4QT3DDEBUG                                
106     G4String name = node->objectName().toStdSt    
107     if (name == "") name = "X";                   
108     G4Qt3DUtils::LogFile << (void*)node << ":     
109 #endif                                            
110     return;                                       
111   }                                               
112   for (auto component: entity->components()){     
113 #ifdef G4QT3DDEBUG                                
114     G4String name = component->objectName().to    
115     if (name == "") name = "X";                   
116     G4Qt3DUtils::LogFile << (void*)entity << "    
117     << " of " << entity->objectName().toStdStr    
118 #endif                                            
119     entity->removeComponent(component);           
120     delete(component);                            
121     component = nullptr;                          
122   }                                               
123   auto child_nodes = entity->childNodes();        
124   for (auto child_node: child_nodes) {            
125     G4String name = child_node->objectName().t    
126     if (name == "") name = "X";                   
127 #ifdef G4QT3DDEBUG                                
128     G4Qt3DUtils::LogFile << (void*)child_node     
129     << " of " << entity->objectName().toStdStr    
130 #endif                                            
131     delete_entity_recursively(child_node);        
132   }                                               
133   G4String name = entity->objectName().toStdSt    
134   if (name == "") name = "X";                     
135 #ifdef G4QT3DDEBUG                                
136   G4Qt3DUtils::LogFile << (void*)entity << ":     
137 #endif                                            
138   child_nodes.clear();                            
139 }                                                 
140                                                   
141 #ifdef G4QT3DDEBUG                                
142 std::ofstream G4Qt3DUtils::LogFile("LogFile.tx    
143 void G4Qt3DUtils::PrintQObjectTree                
144  (const QObject* node,                            
145   const G4String& where)                          
146 {                                                 
147   auto& logFile = G4Qt3DUtils::LogFile;           
148   if (where.length()) logFile << "\n===== QObj    
149   static G4int iDep = -1;                         
150   ++iDep;                                         
151   G4String nodeName = node->objectName().toStd    
152   if (nodeName == "") nodeName = "X";             
153   for (G4int i = 0; i < iDep; ++i) logFile <<     
154   logFile << (void*)node << ": "                  
155   << "Node at depth " << iDep << ": " << nodeN    
156   << "thread: " << node->thread() << ": "         
157   << "parent: " << node->parent() << ": ";        
158   const auto* g4node = dynamic_cast<const G4Qt    
159   if (g4node) {                                   
160     logFile << g4node->GetPVNodeID() << std::e    
161   } else {                                        
162     logFile << typeid(node).name() << std::end    
163   }                                               
164   if (g4node) {                                   
165     for (const auto& component: g4node->compon    
166       G4String name = component->objectName().    
167       if (name == "") name = "X";                 
168       for (G4int i = 0; i < iDep; ++i) logFile    
169       logFile << (void*)component << ": "<< "C    
170       << name << " of " << nodeName << std::en    
171     }                                             
172   }                                               
173   for (const auto& child: node->children()) {     
174     PrintQObjectTree(child);                      
175   }                                               
176   --iDep;                                         
177   if (where.length()) logFile << "===== End: Q    
178   return;                                         
179 }                                                 
180 #endif                                            
181