Skip to content

Commit a8ec3de

Browse files
committed
Merge remote-tracking branch 'louwers/vector-mlt-tile-data-impl' into vector-mlt-tile-data-impl
2 parents 8fa68f0 + a788c31 commit a8ec3de

1 file changed

Lines changed: 58 additions & 21 deletions

File tree

rustutils/src/mlt.rs

Lines changed: 58 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,7 @@ mod ffi {
8181
feature_index: usize,
8282
name: &str,
8383
) -> MltValue;
84-
fn property_values(
85-
&self,
86-
layer_index: usize,
87-
feature_index: usize,
88-
) -> &[MltValue];
84+
fn property_values(&self, layer_index: usize, feature_index: usize) -> &[MltValue];
8985
fn property_string_value(
9086
&self,
9187
layer_index: usize,
@@ -178,7 +174,10 @@ pub fn decode_mlt_tile(data: &[u8]) -> Result<Box<MltTile>, String> {
178174
let mut decoder = Decoder::default();
179175
let mut result = Vec::with_capacity(layers.len());
180176
for layer in layers {
181-
match layer.decode_all(&mut decoder).map_err(|err| err.to_string())? {
177+
match layer
178+
.decode_all(&mut decoder)
179+
.map_err(|err| err.to_string())?
180+
{
182181
Layer::Tag01(layer) => {
183182
let triangles = feature_triangles(layer.geometry_values());
184183
result.push(convert_layer(&layer, triangles)?);
@@ -230,7 +229,8 @@ fn parse_layers(data: &[u8]) -> Result<Vec<Layer<'_>>, String> {
230229

231230
fn feature_triangles(geometry: &mlt_core::GeometryValues) -> Vec<Vec<u32>> {
232231
let mut result = vec![Vec::new(); geometry.feature_count()];
233-
let (Some(triangle_counts), Some(index_buffer)) = (geometry.triangles(), geometry.index_buffer())
232+
let (Some(triangle_counts), Some(index_buffer)) =
233+
(geometry.triangles(), geometry.index_buffer())
234234
else {
235235
return result;
236236
};
@@ -431,9 +431,19 @@ fn append_geometry_parts(
431431
let Some(ring_index) = offset(parts, part_index) else {
432432
return;
433433
};
434-
push_vertex_range(vertices, offset_range(rings, ring_index), false, coordinates);
434+
push_vertex_range(
435+
vertices,
436+
offset_range(rings, ring_index),
437+
false,
438+
coordinates,
439+
);
435440
} else {
436-
push_vertex_range(vertices, offset_range(parts, part_index), false, coordinates);
441+
push_vertex_range(
442+
vertices,
443+
offset_range(parts, part_index),
444+
false,
445+
coordinates,
446+
);
437447
}
438448
push_part_offset(coordinates, part_offsets);
439449
}
@@ -446,10 +456,19 @@ fn append_geometry_parts(
446456
}) else {
447457
return;
448458
};
449-
append_polygon_parts(vertices, parts, rings, part_index, coordinates, part_offsets);
459+
append_polygon_parts(
460+
vertices,
461+
parts,
462+
rings,
463+
part_index,
464+
coordinates,
465+
part_offsets,
466+
);
450467
}
451468
GeometryType::MultiPoint => {
452-
let Some(geometry_range) = geometry_offsets.and_then(|offsets| offset_range(offsets, feature_index)) else {
469+
let Some(geometry_range) =
470+
geometry_offsets.and_then(|offsets| offset_range(offsets, feature_index))
471+
else {
453472
return;
454473
};
455474
for index in geometry_range {
@@ -487,7 +506,12 @@ fn append_geometry_parts(
487506
let Some(ring_index) = offset(parts, index) else {
488507
continue;
489508
};
490-
push_vertex_range(vertices, offset_range(rings, ring_index), false, coordinates);
509+
push_vertex_range(
510+
vertices,
511+
offset_range(rings, ring_index),
512+
false,
513+
coordinates,
514+
);
491515
} else {
492516
push_vertex_range(vertices, offset_range(parts, index), false, coordinates);
493517
}
@@ -504,7 +528,14 @@ fn append_geometry_parts(
504528
return;
505529
};
506530
for part_index in geometry_range {
507-
append_polygon_parts(vertices, parts, rings, part_index, coordinates, part_offsets);
531+
append_polygon_parts(
532+
vertices,
533+
parts,
534+
rings,
535+
part_index,
536+
coordinates,
537+
part_offsets,
538+
);
508539
}
509540
}
510541
}
@@ -538,11 +569,7 @@ fn vertex(vertices: &[i32], index: usize) -> Option<ffi::MltCoordinate> {
538569
})
539570
}
540571

541-
fn push_vertex(
542-
vertices: &[i32],
543-
index: usize,
544-
coordinates: &mut Vec<ffi::MltCoordinate>,
545-
) {
572+
fn push_vertex(vertices: &[i32], index: usize, coordinates: &mut Vec<ffi::MltCoordinate>) {
546573
if let Some(coordinate) = vertex(vertices, index) {
547574
coordinates.push(coordinate);
548575
}
@@ -697,7 +724,10 @@ impl MltTile {
697724
}
698725

699726
fn feature_id(&self, layer_index: usize, feature_index: usize) -> ffi::MltFeatureId {
700-
match self.feature(layer_index, feature_index).and_then(|feature| feature.id) {
727+
match self
728+
.feature(layer_index, feature_index)
729+
.and_then(|feature| feature.id)
730+
{
701731
Some(value) => ffi::MltFeatureId {
702732
has_id: true,
703733
value,
@@ -711,7 +741,9 @@ impl MltTile {
711741

712742
fn feature_type(&self, layer_index: usize, feature_index: usize) -> ffi::MltGeometryType {
713743
self.feature(layer_index, feature_index)
714-
.map_or(ffi::MltGeometryType::Unknown, |feature| feature.geometry_type)
744+
.map_or(ffi::MltGeometryType::Unknown, |feature| {
745+
feature.geometry_type
746+
})
715747
}
716748

717749
fn property_count(&self, layer_index: usize) -> usize {
@@ -721,7 +753,12 @@ impl MltTile {
721753

722754
fn property_index_by_name(&self, layer_index: usize, name: &str) -> i64 {
723755
self.layer(layer_index)
724-
.and_then(|layer| layer.property_names.iter().position(|property| property == name))
756+
.and_then(|layer| {
757+
layer
758+
.property_names
759+
.iter()
760+
.position(|property| property == name)
761+
})
725762
.map_or(-1, |index| index as i64)
726763
}
727764

0 commit comments

Comments
 (0)