| 669 | } |
| 670 | |
| 671 | bool OriginAnyParser::readCurveElement() |
| 672 | { |
| 673 | LOG_PRINT(logfile, "readCurveElement()\n") |
| 674 | /* get general info and details of a Curve |
| 675 | * return true if a Curve is found, otherwise return false */ |
| 676 | unsigned int cve_header_size = 0, cve_data_size = 0; |
| 677 | std::streamoff cvh_start = 0, cvd_start = 0; |
| 678 | |
| 679 | // get curve header size |
| 680 | cve_header_size = readObjectSize(); |
| 681 | if (cve_header_size == 0) |
| 682 | return false; |
| 683 | |
| 684 | curpos = file.tellg(); |
| 685 | cvh_start = curpos; |
| 686 | LOG_PRINT(logfile, " Curve: header size %d [0x%X], starts at %" PRId64 " [0x%" PRIx64 "], ", |
| 687 | cve_header_size, cve_header_size, curpos, curpos) |
| 688 | string cve_header = readObjectAsString(cve_header_size); |
| 689 | |
| 690 | // TODO: get known info from curve header |
| 691 | string name = cve_header.substr(0x12, 12); |
| 692 | |
| 693 | // go to end of header, get curve data size |
| 694 | file.seekg(cvh_start + cve_header_size + 1, ios_base::beg); |
| 695 | cve_data_size = readObjectSize(); |
| 696 | cvd_start = file.tellg(); |
| 697 | LOG_PRINT(logfile, "data size %d [0x%X], from %" PRId64 " [0x%" PRIx64 "]", cve_data_size, |
| 698 | cve_data_size, cvd_start, cvd_start) |
| 699 | string cve_data = readObjectAsString(cve_data_size); |
| 700 | |
| 701 | // TODO: get known info from curve data |
| 702 | |
| 703 | // go to end of data |
| 704 | file.seekg(cvd_start + cve_data_size, ios_base::beg); |
| 705 | if (cve_data_size > 0) |
| 706 | file.seekg(1, ios_base::cur); |
| 707 | |
| 708 | curpos = file.tellg(); |
| 709 | LOG_PRINT(logfile, "to %" PRId64 " [0x%" PRIx64 "]: %s\n", curpos, curpos, name.c_str()) |
| 710 | |
| 711 | // get curve (or column) info |
| 712 | getCurveProperties(cve_header, cve_header_size, cve_data, cve_data_size); |
| 713 | |
| 714 | return true; |
| 715 | } |
| 716 | |
| 717 | bool OriginAnyParser::readAxisBreakElement() |
| 718 | { |