Mercurial > hg > orthanc-stone
comparison UnitTestsSources/VolumeRenderingTests.cpp @ 1782:f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 14 May 2021 16:30:54 +0200 |
parents | bf4b15b059ea |
children | 75d3e2ab1fe1 |
comparison
equal
deleted
inserted
replaced
1781:bf4b15b059ea | 1782:f053c80ea411 |
---|---|
186 | 186 |
187 | 187 |
188 // Render the scene using the identity viewpoint (default) | 188 // Render the scene using the identity viewpoint (default) |
189 static Orthanc::ImageAccessor* Render(OrthancStone::ISceneLayer* layer, | 189 static Orthanc::ImageAccessor* Render(OrthancStone::ISceneLayer* layer, |
190 unsigned int width, | 190 unsigned int width, |
191 unsigned int height) | 191 unsigned int height, |
192 bool fitScene) | |
192 { | 193 { |
193 OrthancStone::Scene2D scene; | 194 OrthancStone::Scene2D scene; |
194 scene.SetLayer(0, layer); | 195 scene.SetLayer(0, layer); |
196 | |
197 if (fitScene) | |
198 { | |
199 scene.FitContent(width, height); | |
200 } | |
201 | |
195 return Render(scene, width, height); | 202 return Render(scene, width, height); |
196 } | 203 } |
197 | 204 |
198 | 205 |
199 enum SlicerType | 206 enum SlicerType |
242 return NULL; | 249 return NULL; |
243 } | 250 } |
244 } | 251 } |
245 | 252 |
246 | 253 |
247 static OrthancStone::TextureBaseSceneLayer* Slice3x3x1Pattern(const OrthancStone::CoordinateSystem3D& volumeCoordinates, | 254 static OrthancStone::TextureBaseSceneLayer* Slice3x3x1Pattern(OrthancStone::VolumeProjection projection, |
255 const OrthancStone::CoordinateSystem3D& volumeCoordinates, | |
248 const OrthancStone::CoordinateSystem3D& cuttingPlane, | 256 const OrthancStone::CoordinateSystem3D& cuttingPlane, |
249 SlicerType type) | 257 SlicerType type) |
250 { | 258 { |
251 OrthancStone::VolumeImageGeometry geometry; | 259 OrthancStone::VolumeImageGeometry geometry; |
252 geometry.SetSizeInVoxels(3, 3, 1); | 260 |
261 switch (projection) | |
262 { | |
263 case OrthancStone::VolumeProjection_Axial: | |
264 geometry.SetSizeInVoxels(3, 3, 1); | |
265 break; | |
266 | |
267 case OrthancStone::VolumeProjection_Sagittal: | |
268 geometry.SetSizeInVoxels(1, 3, 3); | |
269 break; | |
270 | |
271 case OrthancStone::VolumeProjection_Coronal: | |
272 geometry.SetSizeInVoxels(3, 1, 3); | |
273 break; | |
274 | |
275 default: | |
276 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); | |
277 } | |
278 | |
253 geometry.SetAxialGeometry(volumeCoordinates); | 279 geometry.SetAxialGeometry(volumeCoordinates); |
254 | 280 |
255 boost::shared_ptr<OrthancStone::DicomVolumeImage> volume(new OrthancStone::DicomVolumeImage); | 281 boost::shared_ptr<OrthancStone::DicomVolumeImage> volume(new OrthancStone::DicomVolumeImage); |
256 volume->Initialize(geometry, Orthanc::PixelFormat_Grayscale8, false); | 282 volume->Initialize(geometry, Orthanc::PixelFormat_Grayscale8, false); |
257 | 283 |
258 { | 284 { |
259 OrthancStone::ImageBuffer3D::SliceWriter writer(volume->GetPixelData(), OrthancStone::VolumeProjection_Axial, 0); | 285 OrthancStone::ImageBuffer3D::SliceWriter writer(volume->GetPixelData(), projection, 0); |
260 Assign3x3Pattern(writer.GetAccessor()); | 286 Assign3x3Pattern(writer.GetAccessor()); |
261 } | 287 } |
262 | 288 |
263 OrthancStone::Vector v = volume->GetGeometry().GetVoxelDimensions(OrthancStone::VolumeProjection_Axial); | 289 OrthancStone::Vector v = volume->GetGeometry().GetVoxelDimensions(OrthancStone::VolumeProjection_Axial); |
264 if (!OrthancStone::LinearAlgebra::IsNear(1, v[0]) || | 290 if (!OrthancStone::LinearAlgebra::IsNear(1, v[0]) || |
280 | 306 |
281 for (unsigned int mode = 0; mode < 2; mode++) | 307 for (unsigned int mode = 0; mode < 2; mode++) |
282 { | 308 { |
283 OrthancStone::CoordinateSystem3D cuttingPlane; | 309 OrthancStone::CoordinateSystem3D cuttingPlane; |
284 | 310 |
285 std::unique_ptr<OrthancStone::TextureBaseSceneLayer> layer(Slice3x3x1Pattern(axial, cuttingPlane, static_cast<SlicerType>(mode))); | 311 std::unique_ptr<OrthancStone::TextureBaseSceneLayer> layer( |
312 Slice3x3x1Pattern(OrthancStone::VolumeProjection_Axial, axial, cuttingPlane, static_cast<SlicerType>(mode))); | |
286 | 313 |
287 ASSERT_TRUE(layer.get() != NULL); | 314 ASSERT_TRUE(layer.get() != NULL); |
288 ASSERT_EQ(OrthancStone::ISceneLayer::Type_FloatTexture, layer->GetType()); | 315 ASSERT_EQ(OrthancStone::ISceneLayer::Type_FloatTexture, layer->GetType()); |
289 | 316 |
290 OrthancStone::Extent2D box; | 317 OrthancStone::Extent2D box; |
307 ASSERT_FLOAT_EQ(150, GetPixelValue(texture, 0, 2)); | 334 ASSERT_FLOAT_EQ(150, GetPixelValue(texture, 0, 2)); |
308 ASSERT_FLOAT_EQ(175, GetPixelValue(texture, 1, 2)); | 335 ASSERT_FLOAT_EQ(175, GetPixelValue(texture, 1, 2)); |
309 ASSERT_FLOAT_EQ(200, GetPixelValue(texture, 2, 2)); | 336 ASSERT_FLOAT_EQ(200, GetPixelValue(texture, 2, 2)); |
310 } | 337 } |
311 | 338 |
312 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 5, 5)); | 339 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 5, 5, false)); |
313 ASSERT_EQ(5u, rendered->GetWidth()); | 340 ASSERT_EQ(5u, rendered->GetWidth()); |
314 ASSERT_EQ(5u, rendered->GetHeight()); | 341 ASSERT_EQ(5u, rendered->GetHeight()); |
315 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 0)); | 342 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 0)); |
316 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 0)); | 343 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 0)); |
317 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 2, 0)); | 344 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 2, 0)); |
352 | 379 |
353 { | 380 { |
354 std::unique_ptr<OrthancStone::ColorTextureSceneLayer> layer(new OrthancStone::ColorTextureSceneLayer(pixel)); | 381 std::unique_ptr<OrthancStone::ColorTextureSceneLayer> layer(new OrthancStone::ColorTextureSceneLayer(pixel)); |
355 layer->SetOrigin(0, 0); | 382 layer->SetOrigin(0, 0); |
356 | 383 |
357 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 2, 2)); | 384 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 2, 2, false)); |
358 ASSERT_EQ(2u, rendered->GetWidth()); | 385 ASSERT_EQ(2u, rendered->GetWidth()); |
359 ASSERT_EQ(2u, rendered->GetHeight()); | 386 ASSERT_EQ(2u, rendered->GetHeight()); |
360 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 0)); | 387 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 0)); |
361 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 0)); | 388 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 0)); |
362 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 1)); | 389 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 1)); |
365 | 392 |
366 { | 393 { |
367 std::unique_ptr<OrthancStone::ColorTextureSceneLayer> layer(new OrthancStone::ColorTextureSceneLayer(pixel)); | 394 std::unique_ptr<OrthancStone::ColorTextureSceneLayer> layer(new OrthancStone::ColorTextureSceneLayer(pixel)); |
368 layer->SetOrigin(-0.01, 0); | 395 layer->SetOrigin(-0.01, 0); |
369 | 396 |
370 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 2, 2)); | 397 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 2, 2, false)); |
371 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 0)); | 398 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 0)); |
372 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 0)); | 399 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 0)); |
373 ASSERT_FLOAT_EQ(255, GetPixelValue(*rendered, 0, 1)); | 400 ASSERT_FLOAT_EQ(255, GetPixelValue(*rendered, 0, 1)); |
374 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 1)); | 401 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 1)); |
375 } | 402 } |
376 | 403 |
377 { | 404 { |
378 std::unique_ptr<OrthancStone::ColorTextureSceneLayer> layer(new OrthancStone::ColorTextureSceneLayer(pixel)); | 405 std::unique_ptr<OrthancStone::ColorTextureSceneLayer> layer(new OrthancStone::ColorTextureSceneLayer(pixel)); |
379 layer->SetOrigin(-0.01, -0.01); | 406 layer->SetOrigin(-0.01, -0.01); |
380 | 407 |
381 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 2, 2)); | 408 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 2, 2, false)); |
382 ASSERT_FLOAT_EQ(255, GetPixelValue(*rendered, 0, 0)); | 409 ASSERT_FLOAT_EQ(255, GetPixelValue(*rendered, 0, 0)); |
383 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 0)); | 410 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 0)); |
384 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 1)); | 411 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 1)); |
385 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 1)); | 412 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 1)); |
386 } | 413 } |
387 | 414 |
388 { | 415 { |
389 std::unique_ptr<OrthancStone::ColorTextureSceneLayer> layer(new OrthancStone::ColorTextureSceneLayer(pixel)); | 416 std::unique_ptr<OrthancStone::ColorTextureSceneLayer> layer(new OrthancStone::ColorTextureSceneLayer(pixel)); |
390 layer->SetOrigin(0, -0.01); | 417 layer->SetOrigin(0, -0.01); |
391 | 418 |
392 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 2, 2)); | 419 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 2, 2, false)); |
393 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 0)); | 420 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 0)); |
394 ASSERT_FLOAT_EQ(255, GetPixelValue(*rendered, 1, 0)); | 421 ASSERT_FLOAT_EQ(255, GetPixelValue(*rendered, 1, 0)); |
395 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 1)); | 422 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 1)); |
396 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 1)); | 423 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 1)); |
397 } | 424 } |
480 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 27, 36, 3)); | 507 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 27, 36, 3)); |
481 } | 508 } |
482 } | 509 } |
483 | 510 |
484 | 511 |
512 | |
485 TEST(VolumeRendering, FlipAxial) | 513 TEST(VolumeRendering, FlipAxial) |
486 { | 514 { |
487 double x = 2; | 515 double x = 2; |
488 double y = 1; | 516 double y = 1; |
489 OrthancStone::CoordinateSystem3D axial(OrthancStone::LinearAlgebra::CreateVector(x, y, 0), | 517 OrthancStone::CoordinateSystem3D axial(OrthancStone::LinearAlgebra::CreateVector(x, y, 0), |
511 { | 539 { |
512 OrthancStone::CoordinateSystem3D cuttingPlane(OrthancStone::LinearAlgebra::CreateVector(0, 0, 0), | 540 OrthancStone::CoordinateSystem3D cuttingPlane(OrthancStone::LinearAlgebra::CreateVector(0, 0, 0), |
513 OrthancStone::LinearAlgebra::CreateVector(1, 0, 0), | 541 OrthancStone::LinearAlgebra::CreateVector(1, 0, 0), |
514 OrthancStone::LinearAlgebra::CreateVector(0, 1, 0)); | 542 OrthancStone::LinearAlgebra::CreateVector(0, 1, 0)); |
515 | 543 |
516 std::unique_ptr<OrthancStone::TextureBaseSceneLayer> layer(Slice3x3x1Pattern(axial, cuttingPlane, static_cast<SlicerType>(mode))); | 544 std::unique_ptr<OrthancStone::TextureBaseSceneLayer> layer( |
545 Slice3x3x1Pattern(OrthancStone::VolumeProjection_Axial, axial, cuttingPlane, static_cast<SlicerType>(mode))); | |
517 ASSERT_TRUE(AreSameImages(layer->GetTexture(), pattern)); | 546 ASSERT_TRUE(AreSameImages(layer->GetTexture(), pattern)); |
518 | 547 |
519 OrthancStone::Extent2D extent; | 548 OrthancStone::Extent2D extent; |
520 layer->GetBoundingBox(extent); | 549 layer->GetBoundingBox(extent); |
521 ASSERT_FLOAT_EQ(x - 0.5, extent.GetX1()); | 550 ASSERT_FLOAT_EQ(x - 0.5, extent.GetX1()); |
522 ASSERT_FLOAT_EQ(y - 0.5, extent.GetY1()); | 551 ASSERT_FLOAT_EQ(y - 0.5, extent.GetY1()); |
523 ASSERT_FLOAT_EQ(x + 2.5, extent.GetX2()); | 552 ASSERT_FLOAT_EQ(x + 2.5, extent.GetX2()); |
524 ASSERT_FLOAT_EQ(y + 2.5, extent.GetY2()); | 553 ASSERT_FLOAT_EQ(y + 2.5, extent.GetY2()); |
525 | 554 |
526 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 15, 15)); | 555 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 15, 15, false)); |
527 ASSERT_TRUE(IsConstImageWithExclusion(0.0f, *rendered, 9, 8, 3, 3)); | 556 ASSERT_TRUE(IsConstImageWithExclusion(0.0f, *rendered, 9, 8, 3, 3)); |
528 | 557 |
529 Orthanc::ImageAccessor p; | 558 Orthanc::ImageAccessor p; |
530 rendered->GetRegion(p, 9, 8, 3, 3); | 559 rendered->GetRegion(p, 9, 8, 3, 3); |
531 ASSERT_TRUE(AreSameImages(p, pattern)); | 560 ASSERT_TRUE(AreSameImages(p, pattern)); |
534 { | 563 { |
535 OrthancStone::CoordinateSystem3D cuttingPlane(OrthancStone::LinearAlgebra::CreateVector(0, 0, 0), | 564 OrthancStone::CoordinateSystem3D cuttingPlane(OrthancStone::LinearAlgebra::CreateVector(0, 0, 0), |
536 OrthancStone::LinearAlgebra::CreateVector(-1, 0, 0), | 565 OrthancStone::LinearAlgebra::CreateVector(-1, 0, 0), |
537 OrthancStone::LinearAlgebra::CreateVector(0, 1, 0)); | 566 OrthancStone::LinearAlgebra::CreateVector(0, 1, 0)); |
538 | 567 |
539 std::unique_ptr<OrthancStone::TextureBaseSceneLayer> layer(Slice3x3x1Pattern(axial, cuttingPlane, static_cast<SlicerType>(mode))); | 568 std::unique_ptr<OrthancStone::TextureBaseSceneLayer> layer( |
569 Slice3x3x1Pattern(OrthancStone::VolumeProjection_Axial, axial, cuttingPlane, static_cast<SlicerType>(mode))); | |
540 if (mode == 1) | 570 if (mode == 1) |
541 { | 571 { |
542 // Reslicer directly flips the pixels of the texture | 572 // Reslicer directly flips the pixels of the texture |
543 ASSERT_TRUE(AreSameImages(layer->GetTexture(), patternX)); | 573 ASSERT_TRUE(AreSameImages(layer->GetTexture(), patternX)); |
544 } | 574 } |
553 ASSERT_FLOAT_EQ(-(x + 2.5), extent.GetX1()); | 583 ASSERT_FLOAT_EQ(-(x + 2.5), extent.GetX1()); |
554 ASSERT_FLOAT_EQ(y - 0.5, extent.GetY1()); | 584 ASSERT_FLOAT_EQ(y - 0.5, extent.GetY1()); |
555 ASSERT_FLOAT_EQ(-(x - 0.5), extent.GetX2()); | 585 ASSERT_FLOAT_EQ(-(x - 0.5), extent.GetX2()); |
556 ASSERT_FLOAT_EQ(y + 2.5, extent.GetY2()); | 586 ASSERT_FLOAT_EQ(y + 2.5, extent.GetY2()); |
557 | 587 |
558 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 15, 15)); | 588 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 15, 15, false)); |
559 ASSERT_TRUE(IsConstImageWithExclusion(0.0f, *rendered, 3, 8, 3, 3)); | 589 ASSERT_TRUE(IsConstImageWithExclusion(0.0f, *rendered, 3, 8, 3, 3)); |
560 | 590 |
561 Orthanc::ImageAccessor p; | 591 Orthanc::ImageAccessor p; |
562 rendered->GetRegion(p, 3, 8, 3, 3); | 592 rendered->GetRegion(p, 3, 8, 3, 3); |
563 ASSERT_TRUE(AreSameImages(p, patternX)); | 593 ASSERT_TRUE(AreSameImages(p, patternX)); |
566 { | 596 { |
567 OrthancStone::CoordinateSystem3D cuttingPlane(OrthancStone::LinearAlgebra::CreateVector(0, 0, 0), | 597 OrthancStone::CoordinateSystem3D cuttingPlane(OrthancStone::LinearAlgebra::CreateVector(0, 0, 0), |
568 OrthancStone::LinearAlgebra::CreateVector(1, 0, 0), | 598 OrthancStone::LinearAlgebra::CreateVector(1, 0, 0), |
569 OrthancStone::LinearAlgebra::CreateVector(0, -1, 0)); | 599 OrthancStone::LinearAlgebra::CreateVector(0, -1, 0)); |
570 | 600 |
571 std::unique_ptr<OrthancStone::TextureBaseSceneLayer> layer(Slice3x3x1Pattern(axial, cuttingPlane, static_cast<SlicerType>(mode))); | 601 std::unique_ptr<OrthancStone::TextureBaseSceneLayer> layer( |
602 Slice3x3x1Pattern(OrthancStone::VolumeProjection_Axial, axial, cuttingPlane, static_cast<SlicerType>(mode))); | |
572 if (mode == 1) | 603 if (mode == 1) |
573 { | 604 { |
574 ASSERT_TRUE(AreSameImages(layer->GetTexture(), patternY)); | 605 ASSERT_TRUE(AreSameImages(layer->GetTexture(), patternY)); |
575 } | 606 } |
576 else | 607 else |
583 ASSERT_FLOAT_EQ(x - 0.5, extent.GetX1()); | 614 ASSERT_FLOAT_EQ(x - 0.5, extent.GetX1()); |
584 ASSERT_FLOAT_EQ(-(y + 2.5), extent.GetY1()); | 615 ASSERT_FLOAT_EQ(-(y + 2.5), extent.GetY1()); |
585 ASSERT_FLOAT_EQ(x + 2.5, extent.GetX2()); | 616 ASSERT_FLOAT_EQ(x + 2.5, extent.GetX2()); |
586 ASSERT_FLOAT_EQ(-(y - 0.5), extent.GetY2()); | 617 ASSERT_FLOAT_EQ(-(y - 0.5), extent.GetY2()); |
587 | 618 |
588 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 15, 15)); | 619 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 15, 15, false)); |
589 ASSERT_TRUE(IsConstImageWithExclusion(0.0f, *rendered, 9, 4, 3, 3)); | 620 ASSERT_TRUE(IsConstImageWithExclusion(0.0f, *rendered, 9, 4, 3, 3)); |
590 | 621 |
591 Orthanc::ImageAccessor p; | 622 Orthanc::ImageAccessor p; |
592 rendered->GetRegion(p, 9, 4, 3, 3); | 623 rendered->GetRegion(p, 9, 4, 3, 3); |
593 ASSERT_TRUE(AreSameImages(p, patternY)); | 624 ASSERT_TRUE(AreSameImages(p, patternY)); |
596 { | 627 { |
597 OrthancStone::CoordinateSystem3D cuttingPlane(OrthancStone::LinearAlgebra::CreateVector(0, 0, 0), | 628 OrthancStone::CoordinateSystem3D cuttingPlane(OrthancStone::LinearAlgebra::CreateVector(0, 0, 0), |
598 OrthancStone::LinearAlgebra::CreateVector(-1, 0, 0), | 629 OrthancStone::LinearAlgebra::CreateVector(-1, 0, 0), |
599 OrthancStone::LinearAlgebra::CreateVector(0, -1, 0)); | 630 OrthancStone::LinearAlgebra::CreateVector(0, -1, 0)); |
600 | 631 |
601 std::unique_ptr<OrthancStone::TextureBaseSceneLayer> layer(Slice3x3x1Pattern(axial, cuttingPlane, static_cast<SlicerType>(mode))); | 632 std::unique_ptr<OrthancStone::TextureBaseSceneLayer> layer( |
633 Slice3x3x1Pattern(OrthancStone::VolumeProjection_Axial, axial, cuttingPlane, static_cast<SlicerType>(mode))); | |
602 if (mode == 1) | 634 if (mode == 1) |
603 { | 635 { |
604 ASSERT_TRUE(AreSameImages(layer->GetTexture(), patternXY)); | 636 ASSERT_TRUE(AreSameImages(layer->GetTexture(), patternXY)); |
605 } | 637 } |
606 else | 638 else |
613 ASSERT_FLOAT_EQ(-(x + 2.5), extent.GetX1()); | 645 ASSERT_FLOAT_EQ(-(x + 2.5), extent.GetX1()); |
614 ASSERT_FLOAT_EQ(-(y + 2.5), extent.GetY1()); | 646 ASSERT_FLOAT_EQ(-(y + 2.5), extent.GetY1()); |
615 ASSERT_FLOAT_EQ(-(x - 0.5), extent.GetX2()); | 647 ASSERT_FLOAT_EQ(-(x - 0.5), extent.GetX2()); |
616 ASSERT_FLOAT_EQ(-(y - 0.5), extent.GetY2()); | 648 ASSERT_FLOAT_EQ(-(y - 0.5), extent.GetY2()); |
617 | 649 |
618 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 15, 15)); | 650 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 15, 15, false)); |
619 ASSERT_TRUE(IsConstImageWithExclusion(0.0f, *rendered, 3, 4, 3, 3)); | 651 ASSERT_TRUE(IsConstImageWithExclusion(0.0f, *rendered, 3, 4, 3, 3)); |
620 | 652 |
621 Orthanc::ImageAccessor p; | 653 Orthanc::ImageAccessor p; |
622 rendered->GetRegion(p, 3, 4, 3, 3); | 654 rendered->GetRegion(p, 3, 4, 3, 3); |
623 ASSERT_TRUE(AreSameImages(p, patternXY)); | 655 ASSERT_TRUE(AreSameImages(p, patternXY)); |