summaryrefslogtreecommitdiff
path: root/src/label_formats/large_label_format.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/label_formats/large_label_format.rs')
-rw-r--r--src/label_formats/large_label_format.rs38
1 files changed, 20 insertions, 18 deletions
diff --git a/src/label_formats/large_label_format.rs b/src/label_formats/large_label_format.rs
index f717ac5..244c7d3 100644
--- a/src/label_formats/large_label_format.rs
+++ b/src/label_formats/large_label_format.rs
@@ -42,25 +42,27 @@ fn flood(source: &LargeLabelFormat, destination: &mut Vec<u16>,
}
}
-pub fn compress_large_labels(largelabels: LargeLabelFormat) -> LabelFormat {
- let mut label: u16 = 1;
- let mut output_buffer: Vec<u16> = vec![0u16; largelabels.buffer.len()];
- for y in 0..largelabels.height {
- for x in 0..largelabels.width {
- let index = x + y*largelabels.width;
- if largelabels.buffer[index] == 0 {
- continue;
- }
- if output_buffer[index] == 0 {
- let color = largelabels.buffer[index];
- flood(&largelabels, &mut output_buffer, x, y, color, label);
- label += 1;
+impl LargeLabelFormat {
+ pub fn compress(&self) -> LabelFormat {
+ let mut label: u16 = 1;
+ let mut output_buffer: Vec<u16> = vec![0u16; self.buffer.len()];
+ for y in 0..self.height {
+ for x in 0..self.width {
+ let index = x + y*self.width;
+ if self.buffer[index] == 0 {
+ continue;
+ }
+ if output_buffer[index] == 0 {
+ let color = self.buffer[index];
+ flood(&self, &mut output_buffer, x, y, color, label);
+ label += 1;
+ }
}
}
+ return LabelFormat {
+ buffer: output_buffer,
+ width: self.width,
+ height: self.height,
+ };
}
- return LabelFormat {
- buffer: output_buffer,
- width: largelabels.width,
- height: largelabels.height,
- };
}