27 std::vector<bool> segments_done;
28 int seg_height = 0, seg_width = 0;
31 void init(
int bit_depth,
int max_seg,
int segment_width,
int segment_height)
34 segments_done.resize(seg_count,
false);
37 image =
image::Image(bit_depth, segment_width, segment_width, 1);
38 seg_height = segment_height;
39 seg_width = segment_width;
44 GK2ASegmentedImageDecoder(
XRITFile &file)
48 init(image_structure_record.bit_per_pixel > 8 ? 16 : 8,
50 image_structure_record.columns_count,
51 image_structure_record.lines_count);
56 if (segc >= seg_count || segc < 0 || pos < 0)
58 if (data.
height() + pos > image.height() || data.
width() != seg_width)
60 logger->error(
"Image of the wrong size! %dx%d | %dx%d | %d/%d", seg_width, seg_height, data.
width(), data.
height(), data.
height() + pos, image.height());
63 image::imemcpy(image, seg_width * pos, data, 0, data.
size());
64 segments_done[segc] =
true;
71 std::vector<std::string> header_parts = splitString(file.filename,
'_');
74 if (header_parts.size() >= 7)
76 seg_number = std::stoi(header_parts[6].substr(0, header_parts.size() - 4)) - 1;
80 logger->critical(
"Could not parse segment number from filename!");
87 logger->error(
"Segment header missing!");
93 for (
int i = 0; i < seg_count; i++)
94 complete = complete && segments_done[i];
100 for (
int i = 0; i < seg_count; i++)
101 segments_done[i] =
false;
107 for (
int i = 0; i < seg_count; i++)
108 if (segments_done[i])
image::Image getImageFromXRITFile(xrit_file_type_t type, XRITFile &file)
This converts a xRIT file (given its type) into an image object handling missing-specific details and...
Definition get_img.h:28