From d048fc181539330cca6845886c4896f8c83f53ad Mon Sep 17 00:00:00 2001 From: Miles Lucas Date: Thu, 6 Jun 2024 11:21:21 -1000 Subject: [PATCH 1/2] add direct formatting option to ImageKeyword struct with tests --- ImCreate_cube.c | 4 ++++ ImCreate_img.c | 6 ++++++ ImageStruct.h | 8 +++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ImCreate_cube.c b/ImCreate_cube.c index b9edb44..9305a11 100644 --- a/ImCreate_cube.c +++ b/ImCreate_cube.c @@ -82,6 +82,10 @@ int main() strncpy(imarray.kw[2].value.valstr, "ImCreate_cube", KEYWORD_MAX_STRING-1); strncpy(imarray.kw[2].comment, "source value", KEYWORD_MAX_COMMENT-1); + strcpy(imarray.kw[3].name, "keyword_custom"); + imarray.kw[3].type = 'F'; + strcpy(imarray.kw[3].format, "%6.2f"); + imarray.kw[3].value.numf = 12.335; free(imsize); diff --git a/ImCreate_img.c b/ImCreate_img.c index da6be5f..e498b04 100644 --- a/ImCreate_img.c +++ b/ImCreate_img.c @@ -78,6 +78,12 @@ int main() imarray.kw[2].type = 'S'; strcpy(imarray.kw[2].value.valstr, "Hello!"); + strcpy(imarray.kw[3].name, "keyword_custom"); + imarray.kw[3].type = 'F'; + strcpy(imarray.kw[3].format, "%6.2f"); + imarray.kw[3].value.numf = 12.335; + + float angle; float r; float r1; diff --git a/ImageStruct.h b/ImageStruct.h index de591a1..b2b07e2 100644 --- a/ImageStruct.h +++ b/ImageStruct.h @@ -18,7 +18,7 @@ #ifndef _IMAGESTRUCT_H #define _IMAGESTRUCT_H -#define IMAGESTRUCT_VERSION "2.00" +#define IMAGESTRUCT_VERSION "2.01" #define STRINGMAXLEN_IMAGE_NAME 80 #define STRINGMAXLEN_FILE_NAME 200 @@ -26,6 +26,7 @@ #define KEYWORD_MAX_STRING 16 /**< maximun size of the keyword's name */ #define KEYWORD_MAX_COMMENT 80 /**< maximun size of a keyword's comment */ +#define KEYWORD_MAX_FORMAT 10 /**< maximun size of a keyword's format */ // comment if no write history //#define IMAGESTRUCT_WRITEHISTORY @@ -165,13 +166,14 @@ extern "C" { * The IMAGE_KEYWORD structure includes : * - name * - type + * - (optional) formatter string * - value */ typedef struct { char name[KEYWORD_MAX_STRING]; /**< keyword name */ - char type; /**< N: unused, L: long, D: double, S: 16-char string */ - uint64_t : 0; // align array to 8-byte boundary for speed + char type; /**< N: unused, L: long, D: double, S: 16-char string, F: formatted */ + char format[KEYWORD_MAX_FORMAT]; // String formatter for card when type is F union { From 9921bd0ac9198d945b942ec87796a1501a841afd Mon Sep 17 00:00:00 2001 From: Miles Lucas Date: Thu, 6 Jun 2024 11:26:48 -1000 Subject: [PATCH 2/2] switch max format length to 8 --- ImageStruct.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ImageStruct.h b/ImageStruct.h index b2b07e2..2d8a779 100644 --- a/ImageStruct.h +++ b/ImageStruct.h @@ -26,7 +26,7 @@ #define KEYWORD_MAX_STRING 16 /**< maximun size of the keyword's name */ #define KEYWORD_MAX_COMMENT 80 /**< maximun size of a keyword's comment */ -#define KEYWORD_MAX_FORMAT 10 /**< maximun size of a keyword's format */ +#define KEYWORD_MAX_FORMAT 8 /**< maximun size of a keyword's format */ // comment if no write history //#define IMAGESTRUCT_WRITEHISTORY