Mercurial > hg > orthanc-stone
diff Framework/Layers/DicomStructureSetRendererFactory.cpp @ 125:44fc253d4876 wasm
refactoring
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 08 Nov 2017 16:13:55 +0100 |
parents | ed0003f6102c |
children | c9e88e7935a4 |
line wrap: on
line diff
--- a/Framework/Layers/DicomStructureSetRendererFactory.cpp Sun Oct 08 10:52:24 2017 +0200 +++ b/Framework/Layers/DicomStructureSetRendererFactory.cpp Wed Nov 08 16:13:55 2017 +0100 @@ -49,7 +49,33 @@ if (visible_) { cairo_set_line_width(context.GetObject(), 3.0f / view.GetZoom()); - structureSet_.Render(context, slice_); + + cairo_t* cr = context.GetObject(); + + for (size_t k = 0; k < structureSet_.GetStructureCount(); k++) + { + std::vector< std::vector<DicomStructureSet::PolygonPoint> > polygons; + + if (structureSet_.ProjectStructure(polygons, k, slice_)) + { + uint8_t red, green, blue; + structureSet_.GetStructureColor(red, green, blue, k); + context.SetSourceColor(red, green, blue); + + for (size_t i = 0; i < polygons.size(); i++) + { + cairo_move_to(cr, polygons[i][0].first, polygons[i][0].second); + + for (size_t j = 1; j < polygons[i].size(); j++) + { + cairo_line_to(cr, polygons[i][j].first, polygons[i][j].second); + } + + cairo_line_to(cr, polygons[i][0].first, polygons[i][0].second); + cairo_stroke(cr); + } + } + } } return true; @@ -199,11 +225,7 @@ void DicomStructureSetRendererFactory::ScheduleLayerCreation(const CoordinateSystem3D& viewportSlice) { - bool isOpposite; - if (structureSet_.get() != NULL && - GeometryToolbox::IsParallelOrOpposite(isOpposite, - viewportSlice.GetNormal(), - structureSet_->GetNormal())) + if (structureSet_.get() != NULL) { NotifyLayerReady(new Renderer(*structureSet_, viewportSlice), viewportSlice, false); }