summaryrefslogtreecommitdiff
path: root/xicc/iccgamut.c
diff options
context:
space:
mode:
Diffstat (limited to 'xicc/iccgamut.c')
-rw-r--r--xicc/iccgamut.c32
1 files changed, 29 insertions, 3 deletions
diff --git a/xicc/iccgamut.c b/xicc/iccgamut.c
index 77f8fdd..ecbab7f 100644
--- a/xicc/iccgamut.c
+++ b/xicc/iccgamut.c
@@ -42,14 +42,13 @@
#include "gamut.h"
#include "counters.h"
#include "vrml.h"
-#include "ui.h"
static void diag_gamut(icxLuBase *p, double detail, int doaxes,
double tlimit, double klimit, char *outname);
void usage(char *diag) {
int i;
- fprintf(stderr,"Create Lab/Jab gamut plot Version %s\n",ARGYLL_VERSION_STR);
+ fprintf(stderr,"Create ICC profile Lab/Jab gamut & plot Version %s\n",ARGYLL_VERSION_STR);
fprintf(stderr,"Author: Graeme W. Gill, licensed under the AGPL Version 3\n");
fprintf(stderr,"usage: iccgamut [options] profile\n");
if (diag != NULL)
@@ -89,7 +88,8 @@ void usage(char *diag) {
fprintf(stderr," g:glare Flare light %% of ambient (default %d)\n",XICC_DEFAULT_GLARE);
fprintf(stderr," g:X:Y:Z Flare color as XYZ (default media white, Abs: D50)\n");
fprintf(stderr," g:x:y Flare color as x, y\n");
- fprintf(stderr," -s Create special cube surface topology plot\n");
+ fprintf(stderr," -x pcent Expand/compress gamut cylindrically by percent\n");
+ fprintf(stderr," -s Create special cube surface topology plot\n");
fprintf(stderr,"\n");
exit(1);
}
@@ -126,6 +126,7 @@ main(int argc, char *argv[]) {
double vc_g = -1.0; /* Glare % overide */
double vc_gXYZ[3] = {-1.0, -1.0, -1.0}; /* Glare color override in XYZ */
double vc_gxy[2] = {-1.0, -1.0}; /* Glare color override in x,y */
+ double expand = 1.0; /* Expand gamut cylindrically */
icxLuBase *luo;
@@ -288,6 +289,18 @@ main(int argc, char *argv[]) {
usage("Parameter after flag -d seems out of range");
}
+ /* Expand gamut cylindrically */
+ else if (argv[fa][1] == 'x') {
+ double rr;
+ fa = nfa;
+ if (na == NULL) usage("No parameter after flag -x");
+ rr = atof(na)/100.0;
+
+ if (rr < 0.01 || rr > 100.0)
+ usage("-x ratio is out of range");
+ expand = rr;
+ }
+
/* Viewing conditions */
else if (argv[fa][1] == 'c' || argv[fa][1] == 'C') {
fa = nfa;
@@ -489,6 +502,19 @@ main(int argc, char *argv[]) {
if ((gam = luo->get_gamut(luo, gamres)) == NULL)
error ("%d, %s",xicco->errc, xicco->err);
+ /* Expand gamut cylindrically */
+ if (expand != 1.0) {
+ gamut *xgam;
+
+ if ((xgam = new_gamut(1.0, 0, 0)) == NULL
+ || xgam->exp_cyl(xgam, gam, expand)) {
+ error ("Creating expanded gamut failed");
+ }
+
+ gam->del(gam);
+ gam = xgam;
+ }
+
if (gam->write_gam(gam, out_name))
error ("write gamut failed on '%s'",out_name);