Merge lp:~jimmy-jonsson-hiq/forssim/Bug_485691 into lp:forssim

Proposed by Jimmy Jonsson
Status: Needs review
Proposed branch: lp:~jimmy-jonsson-hiq/forssim/Bug_485691
Merge into: lp:forssim
Diff against target: 273 lines (+50/-138)
4 files modified
src/DrillingStepsNode.cpp (+5/-0)
src/DrillingStepsNode.h (+6/-2)
src/HighlightNode.cpp (+34/-136)
src/HighlightNode.h (+5/-0)
To merge this branch: bzr merge lp:~jimmy-jonsson-hiq/forssim/Bug_485691
Reviewer Review Type Date Requested Status
Forsslund Systems Pending
Review via email: mp+15648@code.launchpad.net
To post a comment you must log in.

Unmerged revisions

357. By Jimmy <jimmy@ubuntu>

Bug_485691

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/DrillingStepsNode.cpp'
2--- src/DrillingStepsNode.cpp 2009-09-18 08:23:43 +0000
3+++ src/DrillingStepsNode.cpp 2009-12-04 13:05:28 +0000
4@@ -438,3 +438,8 @@
5 unsigned char DrillingStepsNode::getNoOfDrillingSteps(){
6 return noOfDrillingSteps;
7 }
8+
9+unsigned char DrillingStepsNode::getCurrentDrillingStepId()
10+{
11+ return currentDrillingStepId;
12+}
13
14=== modified file 'src/DrillingStepsNode.h'
15--- src/DrillingStepsNode.h 2009-08-12 11:49:25 +0000
16+++ src/DrillingStepsNode.h 2009-12-04 13:05:28 +0000
17@@ -232,6 +232,12 @@
18 */
19 unsigned char getNoOfDrillingSteps();
20
21+ unsigned char getCurrentDrillingStepId();
22+
23+ const vector<Vec3i> getVoxelsDrilledByExpertForDrillingStep(unsigned char drillingStepId);
24+
25+ const vector<Vec3i> getVoxelsDrilledByUserForDrillingStep(unsigned char drillingStepId);
26+
27 /**
28 * Exception class for DrillingStepsNode
29 */
30@@ -256,8 +262,6 @@
31 std::vector<drillingStepData_t> drillingStepData;
32 unsigned char currentDrillingStepId; // The currently selected drilling step
33 bool hasUserBoredThisDrillingStep;
34- const vector<Vec3i> getVoxelsDrilledByUserForDrillingStep(unsigned char drillingStepId);
35- const vector<Vec3i> getVoxelsDrilledByExpertForDrillingStep(unsigned char drillingStepId);
36 bool isExpertDrillingStep(Vec3i p, unsigned char expertDrillingStepId);
37 bool isCurrentExpertDrillingStep(Vec3i p);
38 void setExpertDrillingStepId(Vec3i p, unsigned char step);
39
40=== modified file 'src/HighlightNode.cpp'
41--- src/HighlightNode.cpp 2009-06-03 13:57:58 +0000
42+++ src/HighlightNode.cpp 2009-12-04 13:05:29 +0000
43@@ -58,147 +58,15 @@
44 volumeModelNode = static_cast< VolumeModel * >( volumeModelField->getValue() );
45 drillingStepsNode = static_cast< DrillingStepsNode * >( drillingStepsField->getValue() );
46
47+ currentDrillingStep = 1;
48+
49+ highlightExpertOn = false;
50+
51 X3DChildNode::initialize();
52
53 cout<<"Initialized Highlight Node"<<endl;
54 }
55
56-/*
57-void HighlightNode::enterNormalHighlightMode()
58-{
59- highlightType = NORMAL;
60-
61- cout << "Entering Highlight Node: Normal" << endl;
62-
63- for(unsigned int i =0;i<volumeModelNode->getWidth();i++)
64- for(unsigned int j =0;j<volumeModelNode->getHeight();j++)
65- for(unsigned int k =0;k<volumeModelNode->getDepth();k++)
66- if(volumeModelNode->getMaterialRemaining(Vec3i(i,j,k))!=0) // not air at this point in time
67- volumeModelNode->setImageValue(Vec3i(i,j,k),volumeModelNode->getOriginalImageValue(Vec3i(i,j,k)),0,0);
68- else
69- volumeModelNode->setImageValue(Vec3i(i,j,k),0.0,0.0,0.0);
70-}
71-
72-void HighlightNode::enterUserHighlightMode()
73-{
74- highlightType = USER;
75-
76- cout << "Entering Highlight Node: User" << endl;
77-
78- // establish the original image
79- for(unsigned int i =0;i<volumeModelNode->getWidth();i++)
80- for(unsigned int j =0;j<volumeModelNode->getHeight();j++)
81- for(unsigned int k =0;k<volumeModelNode->getDepth();k++)
82- volumeModelNode->setImageValue(Vec3i(i,j,k),volumeModelNode->getOriginalImageValue(Vec3i(i,j,k)),0,0);
83-
84- vector<Vec3i>::const_iterator i;
85- const vector<Vec3i> voxelsDrilledByUserForCurrentStep = drillingStepsNode->getVoxelsDrilledByUserForCurrentDrillingStep();
86-
87- for(i=voxelsDrilledByUserForCurrentStep.begin();i<voxelsDrilledByUserForCurrentStep.end();i++)
88- volumeModelNode->setImageValue(*i,1/255.0,0.0,0.0);
89-}
90-
91-void HighlightNode::enterExpertHighlightMode()
92-{
93- highlightType = EXPERT;
94-
95- cout << "Entering Highlight Node: Expert" << endl;
96-
97- // establish the original image
98- for(unsigned int i =0;i<volumeModelNode->getWidth();i++)
99- for(unsigned int j =0;j<volumeModelNode->getHeight();j++)
100- for(unsigned int k =0;k<volumeModelNode->getDepth();k++)
101- volumeModelNode->setImageValue(Vec3i(i,j,k),volumeModelNode->getOriginalImageValue(Vec3i(i,j,k)),0,0);
102-
103- vector<Vec3i>::const_iterator i;
104- const vector<Vec3i> voxelsDrilledByExpertForCurrentStep = drillingStepsNode->getVoxelsDrilledByExpertForCurrentDrillingStep();
105-
106- for(i=voxelsDrilledByExpertForCurrentStep.begin();i<voxelsDrilledByExpertForCurrentStep.end();i++)
107- volumeModelNode->setImageValue(*i,6/255.0,0.0,0.0);
108-}
109-
110-void HighlightNode::enterForbiddenHighlightMode()
111-{
112- highlightType = FORBIDDEN;
113-
114- cout << "Entering Highlight Node: Forbidden" << endl;
115-
116- // establish the original image
117- for(unsigned int i =0;i<volumeModelNode->getWidth();i++)
118- for(unsigned int j =0;j<volumeModelNode->getHeight();j++)
119- for(unsigned int k =0;k<volumeModelNode->getDepth();k++)
120- volumeModelNode->setImageValue(Vec3i(i,j,k),volumeModelNode->getOriginalImageValue(Vec3i(i,j,k)),0,0);
121-
122- vector<Vec3i>::const_iterator i;
123- const vector<Vec3i> forbiddenVoxels = volumeModelNode->getAllForbiddenVoxels();
124-
125- for(i=forbiddenVoxels.begin();i<forbiddenVoxels.end();i++)
126- volumeModelNode->setImageValue(*i,3/255.0,0.0,0.0);
127-}
128-
129-void HighlightNode::enterUserVsExpertVsForbiddenHighlightMode()
130-{
131- highlightType = USER_VS_EXPERT_VS_FORBIDDEN;
132-
133- cout << "Entering Highlight Node: User Versus Expert" << endl;
134-
135- for(unsigned int i =0;i<volumeModelNode->getWidth();i++)
136- for(unsigned int j =0;j<volumeModelNode->getHeight();j++)
137- for(unsigned int k =0;k<volumeModelNode->getDepth();k++)
138- volumeModelNode->setImageValue(Vec3i(i,j,k),volumeModelNode->getOriginalImageValue(Vec3i(i,j,k)),0,0);
139-
140- vector<Vec3i>::const_iterator i;
141- const vector<Vec3i> voxelsDrilledByUserForCurrentStep = drillingStepsNode->getVoxelsDrilledByUserForCurrentDrillingStep();
142- const vector<Vec3i> voxelsDrilledByExpertForCurrentStep = drillingStepsNode->getVoxelsDrilledByExpertForCurrentDrillingStep();
143- const vector<Vec3i> forbiddenVoxels = volumeModelNode->getAllForbiddenVoxels();
144- vector<Vec3i> voxelsDrilledByExpertOnlyForCurrentStep;
145- vector<Vec3i> voxelsDrilledByUserOnlyForCurrentStep;
146- vector<Vec3i> voxelsDrilledByUserNotDrilledByExpertForCurrentStep;
147- vector<Vec3i> voxelsDrilledByBothUserAndExpertForCurrentStep;
148- vector<Vec3i> forbiddenVoxelsOnly;
149- vector<Vec3i> forbiddenVoxelsDrilledByUserForCurrentStep;
150-
151- std::set_difference(voxelsDrilledByExpertForCurrentStep.begin(), voxelsDrilledByExpertForCurrentStep.end(),
152- voxelsDrilledByUserForCurrentStep.begin(), voxelsDrilledByUserForCurrentStep.end(),
153- std::inserter(voxelsDrilledByExpertOnlyForCurrentStep, voxelsDrilledByExpertOnlyForCurrentStep.end()));
154-
155- std::set_difference(voxelsDrilledByUserForCurrentStep.begin(), voxelsDrilledByUserForCurrentStep.end(),
156- voxelsDrilledByExpertForCurrentStep.begin(), voxelsDrilledByExpertForCurrentStep.end(),
157- std::inserter(voxelsDrilledByUserNotDrilledByExpertForCurrentStep, voxelsDrilledByUserNotDrilledByExpertForCurrentStep.end()));
158- std::set_difference(voxelsDrilledByUserNotDrilledByExpertForCurrentStep.begin(), voxelsDrilledByUserNotDrilledByExpertForCurrentStep.end(),
159- forbiddenVoxels.begin(), forbiddenVoxels.end(),
160- std::inserter(voxelsDrilledByUserOnlyForCurrentStep, voxelsDrilledByUserOnlyForCurrentStep.end()));
161-
162- std::set_difference(forbiddenVoxels.begin(), forbiddenVoxels.end(),
163- voxelsDrilledByUserForCurrentStep.begin(), voxelsDrilledByUserForCurrentStep.end(),
164- std::inserter(forbiddenVoxelsOnly, forbiddenVoxelsOnly.end()));
165-
166- std::set_intersection(voxelsDrilledByExpertForCurrentStep.begin(), voxelsDrilledByExpertForCurrentStep.end(),
167- voxelsDrilledByUserForCurrentStep.begin(), voxelsDrilledByUserForCurrentStep.end(),
168- std::inserter(voxelsDrilledByBothUserAndExpertForCurrentStep, voxelsDrilledByBothUserAndExpertForCurrentStep.end()));
169-
170- std::set_intersection(voxelsDrilledByUserForCurrentStep.begin(), voxelsDrilledByUserForCurrentStep.end(),
171- forbiddenVoxels.begin(), forbiddenVoxels.end(),
172- std::inserter(forbiddenVoxelsDrilledByUserForCurrentStep, forbiddenVoxelsDrilledByUserForCurrentStep.end()));
173-
174- for(i=voxelsDrilledByUserOnlyForCurrentStep.begin();i<voxelsDrilledByUserOnlyForCurrentStep.end();i++)
175- volumeModelNode->setImageValue(*i,1/255.0,0.0,0.0);
176-
177- for(i=voxelsDrilledByExpertOnlyForCurrentStep.begin();i<voxelsDrilledByExpertOnlyForCurrentStep.end();i++)
178- volumeModelNode->setImageValue(*i,6/255.0,0.0,0.0);
179-
180- for(i=voxelsDrilledByBothUserAndExpertForCurrentStep.begin();i<voxelsDrilledByBothUserAndExpertForCurrentStep.end();i++)
181- volumeModelNode->setImageValue(*i,4/255.0,0.0,0.0);
182-
183- for(i=forbiddenVoxelsOnly.begin();i<forbiddenVoxelsOnly.end();i++)
184- volumeModelNode->setImageValue(*i,3/255.0,0.0,0.0);
185-
186- for(i=forbiddenVoxelsDrilledByUserForCurrentStep.begin();i<forbiddenVoxelsDrilledByUserForCurrentStep.end();i++)
187- volumeModelNode->setImageValue(*i,2/255.0,0.0,0.0);
188-
189-}
190-
191- */
192 void HighlightNode::highlightUser(bool enable)
193 {
194
195@@ -242,6 +110,7 @@
196 if(volumeModelNode->getMaterialRemaining(*i)!=0) // not air at this point in time
197 volumeModelNode->setImageValue(*i,6/255.0,0.0,0.0);
198 }
199+ highlightExpertOn = true;
200
201 }
202 else
203@@ -252,6 +121,7 @@
204 if(volumeModelNode->getMaterialRemaining(*i)!=0) // not air at this point in time
205 volumeModelNode->setImageValue(*i,volumeModelNode->getOriginalImageValue(*i),0,0);
206 }
207+ highlightExpertOn = false;
208 }
209 }
210
211@@ -280,3 +150,31 @@
212 }
213 }
214 }
215+
216+void HighlightNode::traverseSG( H3D::TraverseInfo &ti )
217+{
218+ if(currentDrillingStep != drillingStepsNode->getCurrentDrillingStepId())
219+ {
220+ if(highlightExpertOn)
221+ {
222+ vector<Vec3i>::const_iterator i;
223+
224+ // Remove highlighted voxels for previous drillingstep
225+ const vector<Vec3i> voxelsDrilledByExpertForPreviousStep = drillingStepsNode->getVoxelsDrilledByExpertForDrillingStep(currentDrillingStep);
226+ for(i=voxelsDrilledByExpertForPreviousStep.begin();i<voxelsDrilledByExpertForPreviousStep.end();i++)
227+ {
228+ if(volumeModelNode->getMaterialRemaining(*i)!=0) // not air at this point in time
229+ volumeModelNode->setImageValue(*i,volumeModelNode->getOriginalImageValue(*i),0,0);
230+ }
231+
232+ // Highlight voxels in current drillingstep
233+ const vector<Vec3i> voxelsDrilledByExpertForCurrentStep = drillingStepsNode->getVoxelsDrilledByExpertForDrillingStep(currentDrillingStep + 1);
234+ for(i=voxelsDrilledByExpertForCurrentStep.begin();i<voxelsDrilledByExpertForCurrentStep.end();i++)
235+ {
236+ if(volumeModelNode->getMaterialRemaining(*i)!=0) // not air at this point in time
237+ volumeModelNode->setImageValue(*i,6/255.0,0.0,0.0);
238+ }
239+ }
240+ currentDrillingStep = drillingStepsNode->getCurrentDrillingStepId();
241+ }
242+}
243
244=== modified file 'src/HighlightNode.h'
245--- src/HighlightNode.h 2009-06-03 13:57:58 +0000
246+++ src/HighlightNode.h 2009-12-04 13:05:29 +0000
247@@ -58,8 +58,10 @@
248 }
249
250 virtual void initialize();
251+ virtual void traverseSG( H3D::TraverseInfo &ti );
252
253 /*
254+ *
255 * The volume model node
256 */
257 auto_ptr< H3D::SFNode > volumeModelField;
258@@ -69,6 +71,7 @@
259 */
260 auto_ptr< H3D::SFNode > drillingStepsField;
261
262+
263 /// The H3DNodeDatabase for this node.
264 static H3D::H3DNodeDatabase database;
265
266@@ -100,6 +103,8 @@
267
268 VolumeModel *volumeModelNode;
269 DrillingStepsNode* drillingStepsNode;
270+ unsigned char currentDrillingStep;
271+ bool highlightExpertOn;
272
273 enum highlightType_e { NORMAL, USER, EXPERT, FORBIDDEN, USER_VS_EXPERT_VS_FORBIDDEN };
274

Subscribers

People subscribed via source and target branches