| 223 | } |
| 224 | |
| 225 | bool LASzip::check_item(const LASitem* item) |
| 226 | { |
| 227 | switch (item->type) |
| 228 | { |
| 229 | case LASitem::POINT10: |
| 230 | if (item->size != 20) return return_error("POINT10 has size != 20"); |
| 231 | if (item->version > 2) return return_error("POINT10 has version > 2"); |
| 232 | break; |
| 233 | case LASitem::GPSTIME11: |
| 234 | if (item->size != 8) return return_error("GPSTIME11 has size != 8"); |
| 235 | if (item->version > 2) return return_error("GPSTIME11 has version > 2"); |
| 236 | break; |
| 237 | case LASitem::RGB12: |
| 238 | if (item->size != 6) return return_error("RGB12 has size != 6"); |
| 239 | if (item->version > 2) return return_error("RGB12 has version > 2"); |
| 240 | break; |
| 241 | case LASitem::BYTE: |
| 242 | if (item->size < 1) return return_error("BYTE has size < 1"); |
| 243 | if (item->version > 2) return return_error("BYTE has version > 2"); |
| 244 | break; |
| 245 | case LASitem::POINT14: |
| 246 | if (item->size != 30) return return_error("POINT14 has size != 30"); |
| 247 | if ((item->version != 0) && (item->version != 2) && (item->version != 3) && (item->version != 4)) return return_error("POINT14 has version != 0 and != 2 and != 3 and != 4"); // version == 2 from lasproto, version == 4 fixes context-switch |
| 248 | break; |
| 249 | case LASitem::RGB14: |
| 250 | if (item->size != 6) return return_error("RGB14 has size != 6"); |
| 251 | if ((item->version != 0) && (item->version != 2) && (item->version != 3) && (item->version != 4)) return return_error("RGB14 has version != 0 and != 2 and != 3 and != 4"); // version == 2 from lasproto, version == 4 fixes context-switch |
| 252 | break; |
| 253 | case LASitem::RGBNIR14: |
| 254 | if (item->size != 8) return return_error("RGBNIR14 has size != 8"); |
| 255 | if ((item->version != 0) && (item->version != 2) && (item->version != 3) && (item->version != 4)) return return_error("RGBNIR14 has version != 0 and != 2 and != 3 and != 4"); // version == 2 from lasproto, version == 4 fixes context-switch |
| 256 | break; |
| 257 | case LASitem::BYTE14: |
| 258 | if (item->size < 1) return return_error("BYTE14 has size < 1"); |
| 259 | if ((item->version != 0) && (item->version != 2) && (item->version != 3) && (item->version != 4)) return return_error("BYTE14 has version != 0 and != 2 and != 3 and != 4"); // version == 2 from lasproto, version == 4 fixes context-switch |
| 260 | break; |
| 261 | case LASitem::WAVEPACKET13: |
| 262 | if (item->size != 29) return return_error("WAVEPACKET13 has size != 29"); |
| 263 | if (item->version > 1) return return_error("WAVEPACKET13 has version > 1"); |
| 264 | break; |
| 265 | case LASitem::WAVEPACKET14: |
| 266 | if (item->size != 29) return return_error("WAVEPACKET14 has size != 29"); |
| 267 | if ((item->version != 0) && (item->version != 3) && (item->version != 4)) return return_error("WAVEPACKET14 has version != 0 and != 3 and != 4"); // version == 4 fixes context-switch |
| 268 | break; |
| 269 | default: |
| 270 | if (1) |
| 271 | { |
| 272 | char error[64]; |
| 273 | snprintf(error, sizeof(error), "item unknown (%d,%d,%d)", item->type, item->size, item->version); |
| 274 | return return_error(error); |
| 275 | } |
| 276 | } |
| 277 | return true; |
| 278 | } |
| 279 | |
| 280 | bool LASzip::check_items(const U16 num_items, const LASitem* items, const U16 point_size) |
| 281 | { |
nothing calls this directly
no outgoing calls
no test coverage detected