comparison OrthancStone/Sources/Loaders/DicomStructureSetLoader.cpp @ 1896:b3c08e607d9f

simplified signature of DicomStructureSet::ProjectStructure()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 26 Jan 2022 17:19:37 +0100
parents 14c8f339d480
children 07964689cb0b
comparison
equal deleted inserted replaced
1895:14c8f339d480 1896:b3c08e607d9f
364 } 364 }
365 #endif 365 #endif
366 366
367 for (size_t i = 0; i < content_.GetStructuresCount(); i++) 367 for (size_t i = 0; i < content_.GetStructuresCount(); i++)
368 { 368 {
369 if ((visibility_.size() == 0) || visibility_.at(i)) 369 if (visibility_.size() == 0 ||
370 visibility_.at(i))
370 { 371 {
371 const Color& color = content_.GetStructureColor(i); 372 content_.ProjectOntoLayer(*layer, cuttingPlane, i, content_.GetStructureColor(i));
372
373 #if USE_BOOST_UNION_FOR_POLYGONS == 1
374 std::vector< std::vector<ScenePoint2D> > polygons;
375
376 if (content_.ProjectStructure(polygons, i, cuttingPlane))
377 {
378 for (size_t j = 0; j < polygons.size(); j++)
379 {
380 PolylineSceneLayer::Chain chain;
381 chain.resize(polygons[j].size());
382
383 for (size_t k = 0; k < polygons[j].size(); k++)
384 {
385 chain[k] = ScenePoint2D(polygons[j][k].GetX(), polygons[j][k].GetY());
386 }
387
388 layer->AddChain(chain, true /* closed */, color);
389 }
390 }
391 #else
392 std::vector< std::pair<ScenePoint2D, ScenePoint2D> > segments;
393
394 if (content_.ProjectStructure(segments, i, cuttingPlane))
395 {
396 for (size_t j = 0; j < segments.size(); j++)
397 {
398 PolylineSceneLayer::Chain chain;
399 chain.resize(2);
400
401 chain[0] = ScenePoint2D(segments[j].first.GetX(), segments[j].first.GetY());
402 chain[1] = ScenePoint2D(segments[j].second.GetX(), segments[j].second.GetY());
403
404 layer->AddChain(chain, false /* NOT closed */, color);
405 }
406 }
407 #endif
408 } 373 }
409 } 374 }
410 375
411 return layer.release(); 376 return layer.release();
412 } 377 }