| 1424 | } |
| 1425 | |
| 1426 | BOOL LASreadOpener::reopen(LASreader* lasreader, BOOL remain_buffered) { |
| 1427 | if (lasreader == 0) { |
| 1428 | LASMessage(LAS_WARNING, "pointer to LASreader is NULL"); |
| 1429 | return FALSE; |
| 1430 | } |
| 1431 | |
| 1432 | // make sure the LASreader was closed |
| 1433 | |
| 1434 | lasreader->close(); |
| 1435 | |
| 1436 | if (filter) filter->reset(); |
| 1437 | if (transform) transform->reset(); |
| 1438 | |
| 1439 | if (pipe_on) { |
| 1440 | LASreaderPipeOn* lasreaderpipeon = (LASreaderPipeOn*)lasreader; |
| 1441 | lasreaderpipeon->p_idx = 0; |
| 1442 | lasreaderpipeon->p_cnt = 0; |
| 1443 | lasreader = lasreaderpipeon->get_lasreader(); |
| 1444 | } |
| 1445 | |
| 1446 | if (stored) { |
| 1447 | LASreaderStored* lasreaderstored = (LASreaderStored*)lasreader; |
| 1448 | if (!lasreaderstored->reopen()) { |
| 1449 | LASMessage(LAS_WARNING, "could not reopen lasreaderstored for stored input"); |
| 1450 | return FALSE; |
| 1451 | } |
| 1452 | return TRUE; |
| 1453 | } else if (file_names) { |
| 1454 | if ((file_name_number > 1) && merged) { |
| 1455 | LASreaderMerged* lasreadermerged = (LASreaderMerged*)lasreader; |
| 1456 | if (!lasreadermerged->reopen()) { |
| 1457 | LASMessage(LAS_WARNING, "cannot reopen lasreadermerged"); |
| 1458 | return FALSE; |
| 1459 | } |
| 1460 | if (inside_rectangle || inside_tile || inside_circle) { |
| 1461 | lasreadermerged->inside_none(); |
| 1462 | if (inside_rectangle) |
| 1463 | lasreadermerged->inside_rectangle(inside_rectangle[0], inside_rectangle[1], inside_rectangle[2], inside_rectangle[3]); |
| 1464 | else if (inside_tile) |
| 1465 | lasreadermerged->inside_tile(inside_tile[0], inside_tile[1], inside_tile[2]); |
| 1466 | else |
| 1467 | lasreadermerged->inside_circle(inside_circle[0], inside_circle[1], inside_circle[2]); |
| 1468 | } |
| 1469 | if (inside_depth_opener) lasreadermerged->inside_copc_depth(inside_depth_opener, copc_depth, copc_resolution); |
| 1470 | return TRUE; |
| 1471 | } else if ((buffer_size > 0) && ((file_name_number > 1) || (neighbor_file_name_number > 0))) { |
| 1472 | LASreaderBuffered* lasreaderbuffered = (LASreaderBuffered*)lasreader; |
| 1473 | if (!lasreaderbuffered->reopen()) { |
| 1474 | laserror("cannot reopen lasreaderbuffered"); |
| 1475 | return FALSE; |
| 1476 | } |
| 1477 | if (inside_rectangle || inside_tile || inside_circle) { |
| 1478 | lasreaderbuffered->inside_none(); |
| 1479 | if (inside_rectangle) |
| 1480 | lasreaderbuffered->inside_rectangle(inside_rectangle[0], inside_rectangle[1], inside_rectangle[2], inside_rectangle[3]); |
| 1481 | else if (inside_tile) |
| 1482 | lasreaderbuffered->inside_tile(inside_tile[0], inside_tile[1], inside_tile[2]); |
| 1483 | else |
no test coverage detected