mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	Initial version of sl1 import with sla::Raster refactor.
This commit is contained in:
		
							parent
							
								
									6eb51a1cca
								
							
						
					
					
						commit
						247fca6d55
					
				
					 39 changed files with 2136 additions and 1094 deletions
				
			
		
							
								
								
									
										89
									
								
								src/libslic3r/SLA/RasterBase.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								src/libslic3r/SLA/RasterBase.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,89 @@ | |||
| #ifndef SLARASTER_CPP | ||||
| #define SLARASTER_CPP | ||||
| 
 | ||||
| #include <functional> | ||||
| 
 | ||||
| #include <libslic3r/SLA/RasterBase.hpp> | ||||
| #include <libslic3r/SLA/AGGRaster.hpp> | ||||
| 
 | ||||
| // minz image write:
 | ||||
| #include <miniz.h> | ||||
| 
 | ||||
| namespace Slic3r { namespace sla { | ||||
| 
 | ||||
| const RasterBase::TMirroring RasterBase::NoMirror = {false, false}; | ||||
| const RasterBase::TMirroring RasterBase::MirrorX  = {true, false}; | ||||
| const RasterBase::TMirroring RasterBase::MirrorY  = {false, true}; | ||||
| const RasterBase::TMirroring RasterBase::MirrorXY = {true, true}; | ||||
| 
 | ||||
| EncodedRaster PNGRasterEncoder::operator()(const void *ptr, size_t w, size_t h, | ||||
|                                            size_t      num_components) | ||||
| { | ||||
|     std::vector<uint8_t> buf; | ||||
|     size_t s = 0; | ||||
|      | ||||
|     void *rawdata = tdefl_write_image_to_png_file_in_memory( | ||||
|         ptr, int(w), int(h), int(num_components), &s); | ||||
|      | ||||
|     // On error, data() will return an empty vector. No other info can be
 | ||||
|     // retrieved from miniz anyway...
 | ||||
|     if (rawdata == nullptr) return EncodedRaster({}, "png"); | ||||
|      | ||||
|     auto pptr = static_cast<std::uint8_t*>(rawdata); | ||||
|      | ||||
|     buf.reserve(s); | ||||
|     std::copy(pptr, pptr + s, std::back_inserter(buf)); | ||||
|      | ||||
|     MZ_FREE(rawdata); | ||||
|     return EncodedRaster(std::move(buf), "png"); | ||||
| } | ||||
| 
 | ||||
| std::ostream &operator<<(std::ostream &stream, const EncodedRaster &bytes) | ||||
| { | ||||
|     stream.write(reinterpret_cast<const char *>(bytes.data()), | ||||
|                  std::streamsize(bytes.size())); | ||||
|      | ||||
|     return stream; | ||||
| } | ||||
| 
 | ||||
| EncodedRaster PPMRasterEncoder::operator()(const void *ptr, size_t w, size_t h, | ||||
|                                            size_t      num_components) | ||||
| { | ||||
|     std::vector<uint8_t> buf; | ||||
|      | ||||
|     auto header = std::string("P5 ") + | ||||
|             std::to_string(w) + " " + | ||||
|             std::to_string(h) + " " + "255 "; | ||||
|      | ||||
|     auto sz = w * h * num_components; | ||||
|     size_t s = sz + header.size(); | ||||
|      | ||||
|     buf.reserve(s); | ||||
| 
 | ||||
|     auto buff = reinterpret_cast<const std::uint8_t*>(ptr); | ||||
|     std::copy(header.begin(), header.end(), std::back_inserter(buf)); | ||||
|     std::copy(buff, buff+sz, std::back_inserter(buf)); | ||||
|      | ||||
|     return EncodedRaster(std::move(buf), "ppm"); | ||||
| } | ||||
| 
 | ||||
| std::unique_ptr<RasterBase> create_raster_grayscale_aa( | ||||
|     const RasterBase::Resolution &res, | ||||
|     const RasterBase::PixelDim &  pxdim, | ||||
|     double                        gamma, | ||||
|     const RasterBase::Trafo &     tr) | ||||
| { | ||||
|     std::unique_ptr<RasterBase> rst; | ||||
|      | ||||
|     if (gamma > 0) | ||||
|         rst = std::make_unique<RasterGrayscaleAAGammaPower>(res, pxdim, tr, gamma); | ||||
|     else | ||||
|         rst = std::make_unique<RasterGrayscaleAA>(res, pxdim, tr, agg::gamma_threshold(.5)); | ||||
|      | ||||
|     return rst; | ||||
| } | ||||
| 
 | ||||
| } // namespace sla
 | ||||
| } // namespace Slic3r
 | ||||
| 
 | ||||
| #endif // SLARASTER_CPP
 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 tamasmeszaros
						tamasmeszaros