Changes required by update of libbgcode library interface

This commit is contained in:
enricoturri1966 2023-08-14 09:38:22 +02:00
parent 0bea17c128
commit 8e391d00da
3 changed files with 17 additions and 16 deletions

View File

@ -741,7 +741,8 @@ ConfigSubstitutions ConfigBase::load(const std::string& filename, ForwardCompati
if (file == nullptr) if (file == nullptr)
throw Slic3r::RuntimeError("Error opening the file: " + filename + "\n"); throw Slic3r::RuntimeError("Error opening the file: " + filename + "\n");
file_type = (bgcode::core::is_valid_binary_gcode(*file, true) == bgcode::core::EResult::Success) ? EFileType::BinaryGCode : EFileType::AsciiGCode; std::vector<uint8_t> cs_buffer(65536);
file_type = (bgcode::core::is_valid_binary_gcode(*file, true, cs_buffer.data(), cs_buffer.size()) == bgcode::core::EResult::Success) ? EFileType::BinaryGCode : EFileType::AsciiGCode;
fclose(file); fclose(file);
} }
else else
@ -1070,7 +1071,8 @@ ConfigSubstitutions ConfigBase::load_from_binary_gcode_file(const std::string& f
if (file.f == nullptr) if (file.f == nullptr)
throw Slic3r::RuntimeError(format("Error opening the file: %1%", filename)); throw Slic3r::RuntimeError(format("Error opening the file: %1%", filename));
bgcode::core::EResult res = bgcode::core::is_valid_binary_gcode(*file.f); std::vector<uint8_t> cs_buffer(65536);
bgcode::core::EResult res = bgcode::core::is_valid_binary_gcode(*file.f, true, cs_buffer.data(), cs_buffer.size());
if (res != bgcode::core::EResult::Success) if (res != bgcode::core::EResult::Success)
throw Slic3r::RuntimeError(format("The selected file is not a valid binary gcode.\nError: %1%", throw Slic3r::RuntimeError(format("The selected file is not a valid binary gcode.\nError: %1%",
std::string(bgcode::core::translate_result(res)))); std::string(bgcode::core::translate_result(res))));
@ -1083,7 +1085,7 @@ ConfigSubstitutions ConfigBase::load_from_binary_gcode_file(const std::string& f
throw Slic3r::RuntimeError(format("Error while reading file '%1%': %2%", filename, std::string(bgcode::core::translate_result(res)))); throw Slic3r::RuntimeError(format("Error while reading file '%1%': %2%", filename, std::string(bgcode::core::translate_result(res))));
bgcode::core::BlockHeader block_header; bgcode::core::BlockHeader block_header;
res = read_next_block_header(*file.f, file_header, block_header, bgcode::core::EBlockType::SlicerMetadata, true); res = read_next_block_header(*file.f, file_header, block_header, bgcode::core::EBlockType::SlicerMetadata, cs_buffer.data(), cs_buffer.size());
if (res != bgcode::core::EResult::Success) if (res != bgcode::core::EResult::Success)
throw Slic3r::RuntimeError(format("Error while reading file '%1%': %2%", filename, std::string(bgcode::core::translate_result(res)))); throw Slic3r::RuntimeError(format("Error while reading file '%1%': %2%", filename, std::string(bgcode::core::translate_result(res))));
if ((bgcode::core::EBlockType)block_header.type != bgcode::core::EBlockType::SlicerMetadata) if ((bgcode::core::EBlockType)block_header.type != bgcode::core::EBlockType::SlicerMetadata)

View File

@ -1041,7 +1041,8 @@ void GCodeProcessor::process_file(const std::string& filename, std::function<voi
if (file == nullptr) if (file == nullptr)
throw Slic3r::RuntimeError("Error opening the file: " + filename + "\n"); throw Slic3r::RuntimeError("Error opening the file: " + filename + "\n");
const bool is_binary = bgcode::core::is_valid_binary_gcode(*file, true) == bgcode::core::EResult::Success; std::vector<uint8_t> cs_buffer(65536);
const bool is_binary = bgcode::core::is_valid_binary_gcode(*file, true, cs_buffer.data(), cs_buffer.size()) == bgcode::core::EResult::Success;
fclose(file); fclose(file);
if (is_binary) if (is_binary)
@ -1134,8 +1135,6 @@ void GCodeProcessor::process_binary_file(const std::string& filename, std::funct
const long file_size = ftell(file.f); const long file_size = ftell(file.f);
rewind(file.f); rewind(file.f);
bgcode::core::set_checksum_max_cache_size(1024);
// read file header // read file header
bgcode::core::FileHeader file_header; bgcode::core::FileHeader file_header;
bgcode::core::EResult res = bgcode::core::read_header(*file.f, file_header, nullptr); bgcode::core::EResult res = bgcode::core::read_header(*file.f, file_header, nullptr);
@ -1143,11 +1142,10 @@ void GCodeProcessor::process_binary_file(const std::string& filename, std::funct
throw Slic3r::RuntimeError("File: " + filename + "does not contain a valid binary gcode\n Error: " + throw Slic3r::RuntimeError("File: " + filename + "does not contain a valid binary gcode\n Error: " +
std::string(bgcode::core::translate_result(res)) + "\n"); std::string(bgcode::core::translate_result(res)) + "\n");
const bool verify_checksum = true;
// read file metadata block // read file metadata block
bgcode::core::BlockHeader block_header; bgcode::core::BlockHeader block_header;
res = bgcode::core::read_next_block_header(*file.f, file_header, block_header, verify_checksum); std::vector<uint8_t> cs_buffer(65536);
res = bgcode::core::read_next_block_header(*file.f, file_header, block_header, cs_buffer.data(), cs_buffer.size());
if (res != bgcode::core::EResult::Success) if (res != bgcode::core::EResult::Success)
throw Slic3r::RuntimeError("Error while reading file '" + filename + "': " + std::string(bgcode::core::translate_result(res)) + "\n"); throw Slic3r::RuntimeError("Error while reading file '" + filename + "': " + std::string(bgcode::core::translate_result(res)) + "\n");
if ((bgcode::core::EBlockType)block_header.type != bgcode::core::EBlockType::FileMetadata) if ((bgcode::core::EBlockType)block_header.type != bgcode::core::EBlockType::FileMetadata)
@ -1164,7 +1162,7 @@ void GCodeProcessor::process_binary_file(const std::string& filename, std::funct
m_producer = EProducer::Unknown; m_producer = EProducer::Unknown;
// read printer metadata block // read printer metadata block
res = bgcode::core::read_next_block_header(*file.f, file_header, block_header, verify_checksum); res = bgcode::core::read_next_block_header(*file.f, file_header, block_header, cs_buffer.data(), cs_buffer.size());
if (res != bgcode::core::EResult::Success) if (res != bgcode::core::EResult::Success)
throw Slic3r::RuntimeError("Error while reading file '" + filename + "': " + std::string(bgcode::core::translate_result(res)) + "\n"); throw Slic3r::RuntimeError("Error while reading file '" + filename + "': " + std::string(bgcode::core::translate_result(res)) + "\n");
if ((bgcode::core::EBlockType)block_header.type != bgcode::core::EBlockType::PrinterMetadata) if ((bgcode::core::EBlockType)block_header.type != bgcode::core::EBlockType::PrinterMetadata)
@ -1184,7 +1182,7 @@ void GCodeProcessor::process_binary_file(const std::string& filename, std::funct
#endif // ENABLE_BINARIZED_GCODE_WIN_DEBUG #endif // ENABLE_BINARIZED_GCODE_WIN_DEBUG
// read thumbnail blocks // read thumbnail blocks
res = bgcode::core::read_next_block_header(*file.f, file_header, block_header, verify_checksum); res = bgcode::core::read_next_block_header(*file.f, file_header, block_header, cs_buffer.data(), cs_buffer.size());
if (res != bgcode::core::EResult::Success) if (res != bgcode::core::EResult::Success)
throw Slic3r::RuntimeError("Error while reading file '" + filename + "': " + std::string(bgcode::core::translate_result(res)) + "\n"); throw Slic3r::RuntimeError("Error while reading file '" + filename + "': " + std::string(bgcode::core::translate_result(res)) + "\n");
@ -1217,7 +1215,7 @@ void GCodeProcessor::process_binary_file(const std::string& filename, std::funct
} }
#endif // ENABLE_BINARIZED_GCODE_DEBUG #endif // ENABLE_BINARIZED_GCODE_DEBUG
res = bgcode::core::read_next_block_header(*file.f, file_header, block_header, verify_checksum); res = bgcode::core::read_next_block_header(*file.f, file_header, block_header, cs_buffer.data(), cs_buffer.size());
if (res != bgcode::core::EResult::Success) if (res != bgcode::core::EResult::Success)
throw Slic3r::RuntimeError("Error while reading file '" + filename + "': " + std::string(bgcode::core::translate_result(res)) + "\n"); throw Slic3r::RuntimeError("Error while reading file '" + filename + "': " + std::string(bgcode::core::translate_result(res)) + "\n");
} }
@ -1240,7 +1238,7 @@ void GCodeProcessor::process_binary_file(const std::string& filename, std::funct
#endif // ENABLE_BINARIZED_GCODE_WIN_DEBUG #endif // ENABLE_BINARIZED_GCODE_WIN_DEBUG
// read slicer metadata block // read slicer metadata block
res = bgcode::core::read_next_block_header(*file.f, file_header, block_header, verify_checksum); res = bgcode::core::read_next_block_header(*file.f, file_header, block_header, cs_buffer.data(), cs_buffer.size());
if (res != bgcode::core::EResult::Success) if (res != bgcode::core::EResult::Success)
throw Slic3r::RuntimeError("Error while reading file '" + filename + "': " + std::string(bgcode::core::translate_result(res)) + "\n"); throw Slic3r::RuntimeError("Error while reading file '" + filename + "': " + std::string(bgcode::core::translate_result(res)) + "\n");
if ((bgcode::core::EBlockType)block_header.type != bgcode::core::EBlockType::SlicerMetadata) if ((bgcode::core::EBlockType)block_header.type != bgcode::core::EBlockType::SlicerMetadata)
@ -1275,7 +1273,7 @@ void GCodeProcessor::process_binary_file(const std::string& filename, std::funct
initialize_result_moves(); initialize_result_moves();
// read gcodes block // read gcodes block
res = bgcode::core::read_next_block_header(*file.f, file_header, block_header, verify_checksum); res = bgcode::core::read_next_block_header(*file.f, file_header, block_header, cs_buffer.data(), cs_buffer.size());
if (res != bgcode::core::EResult::Success) if (res != bgcode::core::EResult::Success)
throw Slic3r::RuntimeError("Error while reading file '" + filename + "': " + std::string(bgcode::core::translate_result(res)) + "\n"); throw Slic3r::RuntimeError("Error while reading file '" + filename + "': " + std::string(bgcode::core::translate_result(res)) + "\n");
if ((bgcode::core::EBlockType)block_header.type != bgcode::core::EBlockType::GCode) if ((bgcode::core::EBlockType)block_header.type != bgcode::core::EBlockType::GCode)
@ -1295,7 +1293,7 @@ void GCodeProcessor::process_binary_file(const std::string& filename, std::funct
if (ftell(file.f) == file_size) if (ftell(file.f) == file_size)
break; break;
res = bgcode::core::read_next_block_header(*file.f, file_header, block_header, verify_checksum); res = bgcode::core::read_next_block_header(*file.f, file_header, block_header, cs_buffer.data(), cs_buffer.size());
if (res != bgcode::core::EResult::Success) if (res != bgcode::core::EResult::Success)
throw Slic3r::RuntimeError("Error while reading file '" + filename + "': " + std::string(bgcode::core::translate_result(res)) + "\n"); throw Slic3r::RuntimeError("Error while reading file '" + filename + "': " + std::string(bgcode::core::translate_result(res)) + "\n");
} }

View File

@ -883,7 +883,8 @@ ConfigSubstitutions PresetBundle::load_config_file(const std::string &path, Forw
FILE* file = boost::nowide::fopen(path.c_str(), "rb"); FILE* file = boost::nowide::fopen(path.c_str(), "rb");
if (file == nullptr) if (file == nullptr)
throw Slic3r::RuntimeError("Error opening the file: " + path + "\n"); throw Slic3r::RuntimeError("Error opening the file: " + path + "\n");
const bool is_binary = bgcode::core::is_valid_binary_gcode(*file, true) == bgcode::core::EResult::Success; std::vector<uint8_t> cs_buffer(65536);
const bool is_binary = bgcode::core::is_valid_binary_gcode(*file, true, cs_buffer.data(), cs_buffer.size()) == bgcode::core::EResult::Success;
fclose(file); fclose(file);
DynamicPrintConfig config; DynamicPrintConfig config;