mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 12:11:15 -06:00 
			
		
		
		
	PNG image read with libpng
This commit is contained in:
		
							parent
							
								
									19e1d877aa
								
							
						
					
					
						commit
						2bcd36d155
					
				
					 6 changed files with 164 additions and 15 deletions
				
			
		|  | @ -17,6 +17,8 @@ add_executable(${_TEST_NAME}_tests | |||
| 	test_marchingsquares.cpp | ||||
| 	test_timeutils.cpp | ||||
| 	test_voronoi.cpp | ||||
|     test_png_io.cpp | ||||
|     test_timeutils.cpp | ||||
| 	) | ||||
| 
 | ||||
| if (TARGET OpenVDB::openvdb) | ||||
|  |  | |||
							
								
								
									
										52
									
								
								tests/libslic3r/test_png_io.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								tests/libslic3r/test_png_io.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,52 @@ | |||
| #define NOMINMAX | ||||
| #include <catch2/catch.hpp> | ||||
| 
 | ||||
| #include "libslic3r/PNGRead.hpp" | ||||
| #include "libslic3r/SLA/AGGRaster.hpp" | ||||
| 
 | ||||
| using namespace Slic3r; | ||||
| 
 | ||||
| static sla::RasterGrayscaleAA create_raster(const sla::RasterBase::Resolution &res) | ||||
| { | ||||
|     sla::RasterBase::PixelDim pixdim{1., 1.}; | ||||
| 
 | ||||
|     auto bb = BoundingBox({0, 0}, {scaled(1.), scaled(1.)}); | ||||
|     sla::RasterBase::Trafo trafo; | ||||
|     trafo.center_x = bb.center().x(); | ||||
|     trafo.center_y = bb.center().y(); | ||||
| 
 | ||||
|     return sla::RasterGrayscaleAA{res, pixdim, trafo, agg::gamma_threshold(.5)}; | ||||
| } | ||||
| 
 | ||||
| TEST_CASE("PNG read", "[PNG]") { | ||||
|     auto rst = create_raster({100, 100}); | ||||
| 
 | ||||
|     size_t rstsum = 0; | ||||
|     for (size_t r = 0; r < rst.resolution().height_px; ++r) | ||||
|         for (size_t c = 0; c < rst.resolution().width_px; ++c) | ||||
|             rstsum += rst.read_pixel(c, r); | ||||
| 
 | ||||
|     SECTION("Correct png buffer should be recognized as such.") { | ||||
|         auto enc_rst = rst.encode(sla::PNGRasterEncoder{}); | ||||
|         REQUIRE(Slic3r::png::is_png({enc_rst.data(), enc_rst.size()})); | ||||
|     } | ||||
| 
 | ||||
|     SECTION("Fake png buffer should be recognized as such.") { | ||||
|         std::vector<uint8_t> fake(10, '\0'); | ||||
|         REQUIRE(!Slic3r::png::is_png({fake.data(), fake.size()})); | ||||
|     } | ||||
| 
 | ||||
|     SECTION("Decoded PNG buffer resolution should match the original") { | ||||
|         auto enc_rst = rst.encode(sla::PNGRasterEncoder{}); | ||||
| 
 | ||||
|         png::ImageGreyscale img; | ||||
|         png::decode_png({enc_rst.data(), enc_rst.size()}, img); | ||||
| 
 | ||||
|         REQUIRE(img.rows == rst.resolution().height_px); | ||||
|         REQUIRE(img.cols == rst.resolution().width_px); | ||||
| 
 | ||||
|         size_t sum = std::accumulate(img.buf.begin(), img.buf.end(), size_t(0)); | ||||
| 
 | ||||
|         REQUIRE(sum == rstsum); | ||||
|     } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 tamasmeszaros
						tamasmeszaros