MCPcopy Create free account
hub / github.com/LAStools/LAStools / update_header

Method update_header

LASlib/src/laswriter_las.cpp:933–1279  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

931}
932
933BOOL LASwriterLAS::update_header(const LASheader* header, BOOL use_inventory, BOOL update_extra_bytes)
934{
935 I32 i;
936 if (header == 0)
937 {
938 laserror("header pointer is zero");
939 return FALSE;
940 }
941 if (stream == 0)
942 {
943 laserror("stream pointer is zero");
944 return FALSE;
945 }
946 if (!stream->isSeekable())
947 {
948 LASMessage(LAS_WARNING, "stream not seekable. cannot update header.");
949 return FALSE;
950 }
951 if (use_inventory)
952 {
953 U32 number;
954 stream->seek(header_start_position + 107);
955 if (header->point_data_format >= 6)
956 {
957 number = 0; // legacy counters are zero for new point types
958 }
959 else if (inventory.extended_number_of_point_records > U32_MAX)
960 {
961 if (header->version_minor >= 4)
962 {
963 number = 0;
964 }
965 else
966 {
967 LASMessage(LAS_WARNING, "too many points in LAS %d.%d file. limit is %u.", header->version_major, header->version_minor, U32_MAX);
968 number = U32_MAX;
969 }
970 }
971 else
972 {
973 number = (U32)inventory.extended_number_of_point_records;
974 }
975 if (!stream->put32bitsLE((const U8*)&number))
976 {
977 laserror("updating inventory.number_of_point_records");
978 return FALSE;
979 }
980 npoints = inventory.extended_number_of_point_records;
981 for (i = 0; i < 5; i++)
982 {
983 if (header->point_data_format >= 6)
984 {
985 number = 0; // legacy counters are zero for new point types
986 }
987 else if (inventory.extended_number_of_points_by_return[i + 1] > U32_MAX)
988 {
989 if (header->version_minor >= 4)
990 {

Callers

nothing calls this directly

Calls 9

laserrorFunction · 0.85
LASMessageFunction · 0.85
isSeekableMethod · 0.45
seekMethod · 0.45
put32bitsLEMethod · 0.45
put64bitsLEMethod · 0.45
put16bitsLEMethod · 0.45
seekEndMethod · 0.45
putBytesMethod · 0.45

Tested by

no test coverage detected