MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/splashsurf / parse_header

Function parse_header

splashsurf_lib/src/io/bgeo_format.rs:487–524  ·  view source on GitHub ↗

Parses the full BGEO file header

(input: &[u8])

Source from the content-addressed store, hash-verified

485
486 /// Parses the full BGEO file header
487 fn parse_header(input: &[u8]) -> IResult<&[u8], BgeoHeader, BgeoParserError<&[u8]>> {
488 let (input, magic_bytes) = parse_header_magic(input)?;
489 let (input, (version_char, version)) = parse_version(input)?;
490
491 let (input, num_points) = number::be_i32(input)?;
492 let (input, num_prims) = number::be_i32(input)?;
493
494 let (input, num_point_groups) = number::be_i32(input)?;
495 let (input, num_prim_groups) = number::be_i32(input)?;
496
497 let (input, num_point_attrib) = number::be_i32(input)?;
498 let (input, num_vertex_attrib) = number::be_i32(input)?;
499 let (input, num_prim_attrib) = number::be_i32(input)?;
500 let (input, num_attrib) = number::be_i32(input)?;
501
502 let header = BgeoHeader {
503 magic_bytes: [
504 magic_bytes[0],
505 magic_bytes[1],
506 magic_bytes[2],
507 magic_bytes[3],
508 ],
509 version_char,
510 version,
511 num_points,
512 num_prims,
513 num_point_groups,
514 num_prim_groups,
515 num_point_attrib,
516 num_vertex_attrib,
517 num_prim_attrib,
518 num_attrib,
519 };
520
521 // TODO: Validate header, e.g. values >= 0
522
523 Ok((input, header))
524 }
525
526 /// Parses a single BGEO attribute definition
527 fn parse_attr_def(input: &[u8]) -> IResult<&[u8], AttribDefinition, BgeoParserError<&[u8]>> {

Callers 1

bgeo_parserFunction · 0.85

Calls 2

parse_header_magicFunction · 0.85
parse_versionFunction · 0.85

Tested by

no test coverage detected