summaryrefslogtreecommitdiff
path: root/xicc/ccss.c
diff options
context:
space:
mode:
Diffstat (limited to 'xicc/ccss.c')
-rw-r--r--xicc/ccss.c35
1 files changed, 9 insertions, 26 deletions
diff --git a/xicc/ccss.c b/xicc/ccss.c
index 6b5ebeb..663a789 100644
--- a/xicc/ccss.c
+++ b/xicc/ccss.c
@@ -35,6 +35,7 @@
#endif
#include "cgats.h"
#include "xspect.h"
+#include "disptechs.h"
#include "ccss.h"
#ifdef NT /* You'd think there might be some standards.... */
@@ -88,8 +89,9 @@ cgats **pocg /* return CGATS structure */
if (p->disp)
ocg->add_kword(ocg, 0, "DISPLAY",p->disp, NULL);
- if (p->tech)
- ocg->add_kword(ocg, 0, "TECHNOLOGY", p->tech,NULL);
+
+ ocg->add_kword(ocg, 0, "TECHNOLOGY", disptech_get_id(p->dtech)->strid,NULL);
+
if (p->disp == NULL && p->tech == NULL) {
sprintf(p->err, "write_ccss: ccss doesn't contain display or techology strings");
ocg->del(ocg);
@@ -251,12 +253,10 @@ cgats *icg /* input cgats structure */
if (icg->ntables == 0 || icg->t[0].tt != tt_other || icg->t[0].oi != 0) {
sprintf(p->err, "read_ccss: Input file isn't a CCSS format file");
- icg->del(icg);
return 1;
}
if (icg->ntables != 1) {
sprintf(p->err, "Input file doesn't contain exactly one table");
- icg->del(icg);
return 1;
}
@@ -265,21 +265,18 @@ cgats *icg /* input cgats structure */
if ((ti = icg->find_kword(icg, 0, "DESCRIPTOR")) >= 0) {
if ((p->desc = strdup(icg->t[0].kdata[ti])) == NULL) {
sprintf(p->err, "read_ccss: malloc failed");
- icg->del(icg);
return 2;
}
}
if ((ti = icg->find_kword(icg, 0, "ORIGINATOR")) >= 0) {
if ((p->orig = strdup(icg->t[0].kdata[ti])) == NULL) {
sprintf(p->err, "read_ccss: malloc failed");
- icg->del(icg);
return 2;
}
}
if ((ti = icg->find_kword(icg, 0, "CREATED")) >= 0) {
if ((p->crdate = strdup(icg->t[0].kdata[ti])) == NULL) {
sprintf(p->err, "read_ccss: malloc failed");
- icg->del(icg);
return 2;
}
}
@@ -287,20 +284,19 @@ cgats *icg /* input cgats structure */
if ((ti = icg->find_kword(icg, 0, "DISPLAY")) >= 0) {
if ((p->disp = strdup(icg->t[0].kdata[ti])) == NULL) {
sprintf(p->err, "read_ccss: malloc failed");
- icg->del(icg);
return 2;
}
}
if ((ti = icg->find_kword(icg, 0, "TECHNOLOGY")) >= 0) {
if ((p->tech = strdup(icg->t[0].kdata[ti])) == NULL) {
sprintf(p->err, "read_ccss: malloc failed");
- icg->del(icg);
return 2;
}
+ /* Get disptech enum from standard TECHNOLOGY string */
+ p->dtech = disptech_get_strid(p->tech)->dtech;
}
if (p->disp == NULL && p->tech == NULL) {
sprintf(p->err, "read_ccss: Input file doesn't contain keyword DISPLAY or TECHNOLOGY");
- icg->del(icg);
return 1;
}
if ((ti = icg->find_kword(icg, 0, "DISPLAY_TYPE_REFRESH")) >= 0) {
@@ -313,7 +309,6 @@ cgats *icg /* input cgats structure */
if ((ti = icg->find_kword(icg, 0, "UI_SELECTORS")) >= 0) {
if ((p->sel = strdup(icg->t[0].kdata[ti])) == NULL) {
sprintf(p->err, "read_ccss: malloc failed");
- icg->del(icg);
return 2;
}
}
@@ -321,26 +316,22 @@ cgats *icg /* input cgats structure */
if ((ti = icg->find_kword(icg, 0, "REFERENCE")) >= 0) {
if ((p->ref = strdup(icg->t[0].kdata[ti])) == NULL) {
sprintf(p->err, "read_ccss: malloc failed");
- icg->del(icg);
return 2;
}
}
if ((ii = icg->find_kword(icg, 0, "SPECTRAL_BANDS")) < 0) {
sprintf(p->err,"Input file doesn't contain keyword SPECTRAL_BANDS");
- icg->del(icg);
return 1;
}
sp.spec_n = atoi(icg->t[0].kdata[ii]);
if ((ii = icg->find_kword(icg, 0, "SPECTRAL_START_NM")) < 0) {
sprintf(p->err,"Input file doesn't contain keyword SPECTRAL_START_NM");
- icg->del(icg);
return 1;
}
sp.spec_wl_short = atof(icg->t[0].kdata[ii]);
if ((ii = icg->find_kword(icg, 0, "SPECTRAL_END_NM")) < 0) {
sprintf(p->err,"Input file doesn't contain keyword SPECTRAL_END_NM");
- icg->del(icg);
return 1;
}
sp.spec_wl_long = atof(icg->t[0].kdata[ii]);
@@ -364,7 +355,6 @@ cgats *icg /* input cgats structure */
if ((spi[j] = icg->find_field(icg, 0, buf)) < 0) {
sprintf(p->err,"Input file doesn't contain field %s",buf);
- icg->del(icg);
return 1;
}
}
@@ -372,7 +362,6 @@ cgats *icg /* input cgats structure */
if ((p->no_samp = icg->t[0].nsets) < 3) {
sprintf(p->err, "Input file doesn't contain at least three spectral samples");
p->no_samp = 0;
- icg->del(icg); /* Clean up */
return 1;
}
@@ -380,7 +369,6 @@ cgats *icg /* input cgats structure */
if ((p->samples = (xspect *)malloc(sizeof(xspect) * p->no_samp)) == NULL) {
strcpy(p->err, "Malloc failed!");
p->no_samp = 0;
- icg->del(icg); /* Clean up */
return 2;
}
@@ -478,8 +466,8 @@ static int set_ccss(ccss *p,
char *orig, /* Originator (May be NULL) */
char *crdate, /* Creation date in ctime() format (May be NULL) */
char *desc, /* General description (optional) */
-char *disp, /* Display make and model (optional if tech) */
-char *tech, /* Display technology description (optional if disp) */
+char *disp, /* Display make and model (optional) */
+disptech dtech, /* Display technology enum */
int refrmode, /* Display refresh mode, -1 = unknown, 0 = n, 1 = yes */
char *sel, /* UI selector characters - NULL for none */
char *refd, /* Reference spectrometer description (optional) */
@@ -513,12 +501,7 @@ int no_samp /* Number of spectral samples */
return 2;
}
}
- if (tech != NULL) {
- if ((p->tech = strdup(tech)) == NULL) {
- sprintf(p->err, "set_ccss: malloc tech failed");
- return 2;
- }
- }
+ p->dtech = dtech;
p->refrmode = refrmode;
if (sel != NULL) {
if ((p->sel = strdup(sel)) == NULL) {