From 6d830ac29949faf147c8705d091f7add1ceae83c Mon Sep 17 00:00:00 2001 From: Rick Vause Date: Tue, 9 Jun 2026 14:26:52 +0200 Subject: [PATCH] Add libisyntax_get_data_model_major_version --- src/isyntax/isyntax.c | 5 ++--- src/isyntax/isyntax.h | 1 + src/libisyntax.c | 8 ++++++++ src/libisyntax.h | 4 +++- src/platform/common.h | 1 + 5 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/isyntax/isyntax.c b/src/isyntax/isyntax.c index cbfe5d7..7879c87 100644 --- a/src/isyntax/isyntax.c +++ b/src/isyntax/isyntax.c @@ -476,7 +476,8 @@ static void isyntax_parse_ufsimport_child_node(isyntax_t* isyntax, u32 group, u3 } break; case 0x1001: /*PIM_DP_UFS_INTERFACE_VERSION*/ { // Value will likely be "5.0" for v1 iSyntax files, "100.5" for v2 iSyntax files - isyntax->data_model_major_version = atoi(value); + if (sscanf(value, "%" SCNd32 ".%" SCNd32, &isyntax->data_model_major_version, &isyntax->data_model_minor_version) != 2) + isyntax->data_model_minor_version = 0; } break; case 0x1002: /*PIM_DP_UFS_BARCODE*/ { // "" @@ -3675,5 +3676,3 @@ void isyntax_destroy(isyntax_t* isyntax) { } file_handle_close(isyntax->file_handle); } - - diff --git a/src/isyntax/isyntax.h b/src/isyntax/isyntax.h index b944c1a..bed94b5 100644 --- a/src/isyntax/isyntax.h +++ b/src/isyntax/isyntax.h @@ -398,6 +398,7 @@ typedef struct isyntax_t { float loading_time; float total_rgb_transform_time; i32 data_model_major_version; // <100 (usually 5) for iSyntax format v1, >= 100 for iSyntax format v2 + i32 data_model_minor_version; char barcode[64]; bool is_barcode_read; isyntax_cache_t* cache; diff --git a/src/libisyntax.c b/src/libisyntax.c index 7b80948..6f471cc 100644 --- a/src/libisyntax.c +++ b/src/libisyntax.c @@ -369,6 +369,14 @@ const char* libisyntax_get_lossy_image_compression_method(const isyntax_t* isynt return isyntax->dicom_lossy_image_compression_method; } +int32_t libisyntax_get_data_model_major_version(const isyntax_t* isyntax) { + return isyntax->data_model_major_version; +} + +int32_t libisyntax_get_data_model_minor_version(const isyntax_t* isyntax) { + return isyntax->data_model_minor_version; +} + int32_t libisyntax_image_get_level_count(const isyntax_image_t* image) { return image->level_count; } diff --git a/src/libisyntax.h b/src/libisyntax.h index 3f3a37c..f753585 100644 --- a/src/libisyntax.h +++ b/src/libisyntax.h @@ -78,6 +78,8 @@ const char* libisyntax_get_time_of_last_calibration(const isyntax_t* bool libisyntax_is_lossy_image_compression(const isyntax_t* isyntax); double libisyntax_get_lossy_image_compression_ratio(const isyntax_t* isyntax); const char* libisyntax_get_lossy_image_compression_method(const isyntax_t* isyntax); +int32_t libisyntax_get_data_model_major_version(const isyntax_t* isyntax); +int32_t libisyntax_get_data_model_minor_version(const isyntax_t* isyntax); const char* libisyntax_scale_unit(const isyntax_t* isyntax); int32_t libisyntax_image_get_level_count(const isyntax_image_t* image); @@ -128,4 +130,4 @@ isyntax_error_t libisyntax_read_macro_image(isyntax_t* isyntax, int32_t* width, uint32_t** pixels_buffer, int32_t pixel_format); isyntax_error_t libisyntax_read_label_image_jpeg(isyntax_t* isyntax, uint8_t** jpeg_buffer, uint32_t* jpeg_size); isyntax_error_t libisyntax_read_macro_image_jpeg(isyntax_t* isyntax, uint8_t** jpeg_buffer, uint32_t* jpeg_size); -isyntax_error_t libisyntax_read_icc_profile(isyntax_t* isyntax, isyntax_image_t* image, uint8_t** icc_profile_buffer, uint32_t* icc_profile_size); \ No newline at end of file +isyntax_error_t libisyntax_read_icc_profile(isyntax_t* isyntax, isyntax_image_t* image, uint8_t** icc_profile_buffer, uint32_t* icc_profile_size); diff --git a/src/platform/common.h b/src/platform/common.h index 1fc72ed..58a9f72 100644 --- a/src/platform/common.h +++ b/src/platform/common.h @@ -128,6 +128,7 @@ #include #include #include +#include #if COMPILER_MSVC #include