|
From: <kin...@us...> - 2023-07-13 22:46:28
|
Revision: 7093
http://sourceforge.net/p/teem/code/7093
Author: kindlmann
Date: 2023-07-13 22:46:18 +0000 (Thu, 13 Jul 2023)
Log Message:
-----------
updating hest usage, and exploting hparm->noArgsIsNoProblem and either isatty(STDIN_FILENO) or nrrdHestNrrdNoTTY to gracefully handle being invoked with no args, while not being piped to
Modified Paths:
--------------
teem/trunk/src/unrrdu/block.c
teem/trunk/src/unrrdu/ccsettle.c
teem/trunk/src/unrrdu/cksum.c
teem/trunk/src/unrrdu/dnorm.c
teem/trunk/src/unrrdu/grid.c
teem/trunk/src/unrrdu/head.c
teem/trunk/src/unrrdu/minmax.c
teem/trunk/src/unrrdu/unorient.c
teem/trunk/src/unrrdu/unquantize.c
Modified: teem/trunk/src/unrrdu/block.c
===================================================================
--- teem/trunk/src/unrrdu/block.c 2023-07-13 22:28:30 UTC (rev 7092)
+++ teem/trunk/src/unrrdu/block.c 2023-07-13 22:46:18 UTC (rev 7093)
@@ -42,11 +42,9 @@
airArray *mop;
int pret;
- /* if we gave a default for this, then there it would fine to have
- no command-line arguments whatsoever, and then the user would not
- know how to get the basic usage information */
- hestOptAdd(&opt, "i", "nin", airTypeOther, 1, 1, &nin, NULL, "input nrrd", NULL, NULL,
- nrrdHestNrrd);
+ /* nrrdHestNrrdNoTTY simplifies this, just like unquantize and unorient */
+ hparm->noArgsIsNoProblem = AIR_TRUE;
+ hestOptAdd_1_Other(&opt, "i", "nin", &nin, "-", "input nrrd", nrrdHestNrrdNoTTY);
OPT_ADD_NOUT(out, "output nrrd");
mop = airMopNew();
Modified: teem/trunk/src/unrrdu/ccsettle.c
===================================================================
--- teem/trunk/src/unrrdu/ccsettle.c 2023-07-13 22:28:30 UTC (rev 7092)
+++ teem/trunk/src/unrrdu/ccsettle.c 2023-07-13 22:46:18 UTC (rev 7093)
@@ -35,12 +35,13 @@
int pret;
mop = airMopNew();
- hestOptAdd(&opt, "i,input", "nin", airTypeOther, 1, 1, &nin, NULL, "input nrrd", NULL,
- NULL, nrrdHestNrrd);
- hestOptAdd(&opt, "v,values", "filename", airTypeString, 1, 1, &valS, "",
- "Giving a filename here allows you to save out the mapping "
- "from new (settled) values to old values, in the form of a "
- "1-D lookup table");
+ hparm->noArgsIsNoProblem = AIR_TRUE;
+ hestOptAdd_1_Other(&opt, "i,input", "nin", &nin, "-",
+ "input nrrd. By default try to read from stdin", nrrdHestNrrdNoTTY);
+ hestOptAdd_1_String(&opt, "v,values", "filename", &valS, "",
+ "Giving a filename here allows you to save out the mapping "
+ "from new (settled) values to old values, in the form of a "
+ "1-D lookup table");
OPT_ADD_NOUT(out, "output nrrd");
airMopAdd(mop, opt, hestOptFree_vp, airMopAlways);
Modified: teem/trunk/src/unrrdu/cksum.c
===================================================================
--- teem/trunk/src/unrrdu/cksum.c 2023-07-13 22:28:30 UTC (rev 7092)
+++ teem/trunk/src/unrrdu/cksum.c 2023-07-13 22:46:18 UTC (rev 7093)
@@ -22,6 +22,8 @@
#include "unrrdu.h"
#include "privateUnrrdu.h"
+#include <unistd.h> /* for isatty() and STDIN_FILENO */
+
#define INFO "Compute 32-bit CRC of nrrd data (same as via \"cksum\")"
static const char *_unrrdu_cksumInfoL
= (INFO ". Unlike other commands, this doesn't produce a nrrd. It only "
@@ -37,6 +39,11 @@
char stmp[AIR_STRLEN_SMALL + 1], ends[AIR_STRLEN_SMALL + 1];
size_t nn;
+ if (!strcmp("-", inS) && isatty(STDIN_FILENO)) {
+ biffAddf(me, "declining to try reading Nrrd from stdin as tty (terminal)");
+ return 1;
+ }
+
mop = airMopNew();
airMopAdd(mop, nrrd = nrrdNew(), (airMopper)nrrdNuke, airMopAlways);
if (nrrdLoad(nrrd, inS, NULL)) {
@@ -59,36 +66,49 @@
hestOpt *opt = NULL;
char *err, **inS;
airArray *mop;
- int pret, endian, printend;
+ int pret, endian, printend, okay;
unsigned int ni, ninLen;
mop = airMopNew();
- hestOptAdd(&opt, "en,endian", "end", airTypeEnum, 1, 1, &endian,
- airEnumStr(airEndian, airMyEndian()),
- "Endianness in which to compute CRC; \"little\" for Intel and "
- "friends; \"big\" for everyone else. "
- "Defaults to endianness of this machine",
- NULL, airEndian);
- hestOptAdd(&opt, "pen,printendian", "bool", airTypeBool, 1, 1, &printend, "false",
- "whether or not to indicate after the CRC value the endianness "
- "with which the CRC was computed; doing so clarifies "
- "that the CRC result depends on endianness and may remove "
- "confusion in comparing results on platforms of different "
- "endianness");
- hestOptAdd(&opt, NULL, "nin1", airTypeString, 1, -1, &inS, NULL, "input nrrd(s)",
- &ninLen);
+ hparm->noArgsIsNoProblem = AIR_TRUE;
+ hestOptAdd_1_Enum(&opt, "en,endian", "end", &endian,
+ airEnumStr(airEndian, airMyEndian()),
+ "Endianness in which to compute CRC; \"little\" for Intel and "
+ "friends; \"big\" for everyone else. "
+ "Defaults to endianness of this machine",
+ airEndian);
+ hestOptAdd_1_Bool(&opt, "pen,printendian", "bool", &printend, "false",
+ "whether or not to indicate after the CRC value the endianness "
+ "with which the CRC was computed; doing so clarifies "
+ "that the CRC result depends on endianness and may remove "
+ "confusion in comparing results on platforms of different "
+ "endianness");
+ hestOptAdd_Nv_String(&opt, NULL, "nin1", 1, -1, &inS, "-",
+ "input nrrd(s). By default tries to read from stdin", &ninLen);
airMopAdd(mop, opt, hestOptFree_vp, airMopAlways);
USAGE_OR_PARSE(_unrrdu_cksumInfoL);
airMopAdd(mop, opt, (airMopper)hestParseFree, airMopAlways);
+ /* HEY "okay" logic copied from head.c */
+ okay = AIR_FALSE;
for (ni = 0; ni < ninLen; ni++) {
if (unrrdu_cksumDoit(me, inS[ni], endian, printend, stdout)) {
airMopAdd(mop, err = biffGetDone(me), airFree, airMopAlways);
fprintf(stderr, "%s: trouble with \"%s\":\n%s", me, inS[ni], err);
/* continue working on the remaining files */
+ } else {
+ okay = AIR_TRUE;
}
}
+ if (!okay) {
+ /* none of the given files could be read; something is wrong */
+ if (ninLen > 1) {
+ fprintf(stderr, "\n%s: Unable to read any file\n", me);
+ }
+ hestUsage(stderr, opt, me, hparm);
+ fprintf(stderr, "\nFor more info: \"%s --help\"\n", me);
+ }
airMopOkay(mop);
return 0;
Modified: teem/trunk/src/unrrdu/dnorm.c
===================================================================
--- teem/trunk/src/unrrdu/dnorm.c 2023-07-13 22:28:30 UTC (rev 7092)
+++ teem/trunk/src/unrrdu/dnorm.c 2023-07-13 22:46:18 UTC (rev 7093)
@@ -45,27 +45,28 @@
hestOpt *opt = NULL;
char *err;
airArray *mop;
-
- hestOptAdd(&opt, "h,header", NULL, airTypeInt, 0, 0, &headerOnly, NULL,
- "output header of nrrd file only, not the data itself");
- hestOptAdd(&opt, "v,version", "version", airTypeEnum, 1, 1, &version, "alpha",
- "what version of canonical meta-data to convert to; "
- "\"alpha\" is what has been used for Diderot until at least "
- "2016",
- NULL, nrrdMetaDataCanonicalVersion);
- hestOptAdd(&opt, "to", NULL, airTypeInt, 0, 0, &trivialOrient, NULL,
- "(*t*rivial *o*rientation) "
- "even if the input nrrd comes with full orientation or "
- "per-axis min-max info, ignore it and instead assert the "
- "identity mapping between index and world space");
- hestOptAdd(&opt, "rc,recenter", NULL, airTypeInt, 0, 0, &recenter, NULL,
- "re-locate output spaceOrigin so that field is centered "
- "around origin of space coordinates");
- hestOptAdd(&opt, "sp,spacing", "scl", airTypeDouble, 1, 1, &newSpacing, "1.0",
- "when having to contrive orientation information and there's "
- "no per-axis min/max or spacing, this is the sample spacing "
- "to assert");
- OPT_ADD_NIN(nin, "input image");
+ hparm->noArgsIsNoProblem = AIR_TRUE;
+ hestOptAdd_Flag(&opt, "h,header", &headerOnly,
+ "output header of nrrd file only, not the data itself");
+ hestOptAdd_1_Enum(&opt, "v,version", "version", &version, "alpha",
+ "what version of canonical meta-data to convert to; "
+ "\"alpha\" is what has been used for Diderot until at least "
+ "2016",
+ nrrdMetaDataCanonicalVersion);
+ hestOptAdd_Flag(&opt, "to", &trivialOrient,
+ "(*t*rivial *o*rientation) "
+ "even if the input nrrd comes with full orientation or "
+ "per-axis min-max info, ignore it and instead assert the "
+ "identity mapping between index and world space");
+ hestOptAdd_Flag(&opt, "rc,recenter", &recenter,
+ "re-locate output spaceOrigin so that field is centered "
+ "around origin of space coordinates");
+ hestOptAdd_1_Double(&opt, "sp,spacing", "scl", &newSpacing, "1.0",
+ "when having to contrive orientation information and there's "
+ "no per-axis min/max or spacing, this is the sample spacing "
+ "to assert");
+ hestOptAdd_1_Other(&opt, "i,input", "nin", &nin, "-",
+ "input image. By default reads from stdin", nrrdHestNrrdNoTTY);
OPT_ADD_NOUT(outS, "output filename");
mop = airMopNew();
Modified: teem/trunk/src/unrrdu/grid.c
===================================================================
--- teem/trunk/src/unrrdu/grid.c 2023-07-13 22:28:30 UTC (rev 7092)
+++ teem/trunk/src/unrrdu/grid.c 2023-07-13 22:46:18 UTC (rev 7093)
@@ -22,6 +22,8 @@
#include "unrrdu.h"
#include "privateUnrrdu.h"
+#include <unistd.h> /* for isatty() and STDIN_FILENO */
+
static int /* Biff: 1 */
gridGen(Nrrd *nout, int typeOut, const Nrrd *nin, int psz, int psg) {
static const char me[] = "gridGen";
@@ -151,20 +153,16 @@
Nrrd *nin, *nout;
int typeOut, psz, psg;
NrrdIoState *nio;
-
- hestOptAdd(&opt, "i,input", "nin", airTypeString, 1, 1, &inS, NULL,
- "input nrrd. That this argument is required instead of "
- "optional, as with most unu commands, is a quirk caused by the "
- "need to have \"unu grid\" generate usage info, combined "
- "with the fact that the other arguments have sensible "
- "defaults");
- hestOptAdd(&opt, "ps", NULL, airTypeInt, 0, 0, &psz, NULL,
- "instead of the default behavior of flattening all but the "
- "fastest axis, preserve the sizes of axes, so that the output "
- "is more like that of the input");
- hestOptAdd(&opt, "pg", NULL, airTypeInt, 0, 0, &psg, NULL,
- "(overrides -ps) generate a 2D array that represents "
- "the sampling grid in the way that \"gprobe -pg\" understands");
+ hparm->noArgsIsNoProblem = AIR_TRUE;
+ hestOptAdd_1_String(&opt, "i,input", "nin", &inS, "-",
+ "input nrrd. By default reads from stdin");
+ hestOptAdd_Flag(&opt, "ps", &psz,
+ "instead of the default behavior of flattening all but the "
+ "fastest axis, preserve the sizes of axes, so that the output "
+ "is more like that of the input");
+ hestOptAdd_Flag(&opt, "pg", &psg,
+ "(overrides -ps) generate a 2D array that represents "
+ "the sampling grid in the way that \"gprobe -pg\" understands");
OPT_ADD_TYPE(typeOut, "type of output", "double");
OPT_ADD_NOUT(outS, "output nrrd");
@@ -174,6 +172,15 @@
USAGE_OR_PARSE(_unrrdu_gridInfoL);
airMopAdd(mop, opt, (airMopper)hestParseFree, airMopAlways);
+ if (!strcmp("-", inS) && isatty(STDIN_FILENO)) {
+ fprintf(stderr, "%s: declining to try reading Nrrd from stdin as tty (terminal)\n/",
+ me);
+ hestUsage(stderr, opt, me, hparm);
+ fprintf(stderr, "\nFor more info: \"%s --help\"\n", me);
+ airMopError(mop);
+ return 1;
+ }
+
nio = nrrdIoStateNew();
airMopAdd(mop, nio, (airMopper)nrrdIoStateNix, airMopAlways);
nin = nrrdNew();
Modified: teem/trunk/src/unrrdu/head.c
===================================================================
--- teem/trunk/src/unrrdu/head.c 2023-07-13 22:28:30 UTC (rev 7092)
+++ teem/trunk/src/unrrdu/head.c 2023-07-13 22:46:18 UTC (rev 7093)
@@ -22,6 +22,8 @@
#include "unrrdu.h"
#include "privateUnrrdu.h"
+#include <unistd.h> /* for isatty() and STDIN_FILENO */
+
#define INFO "Print header of one or more nrrd files"
static const char *_unrrdu_headInfoL
= (INFO ". The value of this is simply to print the contents of nrrd "
@@ -32,14 +34,18 @@
"* Uses nrrdOneLine");
static int /* Biff: 1 */
-unrrdu_headDoit(const char *me, NrrdIoState *nio, char *inS, FILE *fout) {
+unrrdu_headDoit(const char *me, NrrdIoState *nio, const char *inS, FILE *fout) {
airArray *mop;
unsigned int len;
FILE *fin;
+ if (!strcmp("-", inS) && isatty(STDIN_FILENO)) {
+ biffAddf(me, "declining to try reading Nrrd from stdin as tty (terminal)");
+ return 1;
+ }
mop = airMopNew();
if (!(fin = airFopen(inS, stdin, "rb"))) {
- biffAddf(me, "%s: couldn't fopen(\"%s\",\"rb\"): %s\n", me, inS, strerror(errno));
+ biffAddf(me, "couldn't fopen(\"%s\",\"rb\"): %s\n", inS, strerror(errno));
airMopError(mop);
return 1;
}
@@ -46,17 +52,17 @@
airMopAdd(mop, fin, (airMopper)airFclose, airMopAlways);
if (nrrdOneLine(&len, nio, fin)) {
- biffAddf(me, "%s: error getting first line of file \"%s\"", me, inS);
+ biffAddf(me, "error getting first line of file \"%s\"", inS);
airMopError(mop);
return 1;
}
if (!len) {
- biffAddf(me, "%s: immediately hit EOF\n", me);
+ biffAddf(me, "immediately hit EOF\n");
airMopError(mop);
return 1;
}
if (!(nrrdFormatNRRD->contentStartsLike(nio))) {
- biffAddf(me, "%s: first line (\"%s\") isn't a nrrd magic\n", me, nio->line);
+ biffAddf(me, "first line (\"%s\") isn't a nrrd magic\n", nio->line);
airMopError(mop);
return 1;
}
@@ -85,12 +91,13 @@
char *err, **inS;
NrrdIoState *nio;
airArray *mop;
- int pret;
+ int pret, okay;
unsigned int ni, ninLen;
mop = airMopNew();
- hestOptAdd(&opt, NULL, "nin1", airTypeString, 1, -1, &inS, NULL, "input nrrd(s)",
- &ninLen);
+ hparm->noArgsIsNoProblem = AIR_TRUE;
+ hestOptAdd_Nv_String(&opt, NULL, "nin1", 1, -1, &inS, "-",
+ "input nrrd(s). By default tries to read from stdin", &ninLen);
airMopAdd(mop, opt, hestOptFree_vp, airMopAlways);
USAGE_OR_PARSE(_unrrdu_headInfoL);
@@ -99,6 +106,7 @@
nio = nrrdIoStateNew();
airMopAdd(mop, nio, (airMopper)nrrdIoStateNix, airMopAlways);
+ okay = AIR_FALSE;
for (ni = 0; ni < ninLen; ni++) {
if (ninLen > 1) {
fprintf(stdout, "==> %s <==\n", inS[ni]);
@@ -107,11 +115,22 @@
airMopAdd(mop, err = biffGetDone(me), airFree, airMopAlways);
fprintf(stderr, "%s: trouble reading from \"%s\":\n%s", me, inS[ni], err);
/* continue working on the remaining files */
+ } else {
+ /* processed at least one file ok */
+ okay = AIR_TRUE;
}
if (ninLen > 1 && ni < ninLen - 1) {
fprintf(stdout, "\n");
}
}
+ if (!okay) {
+ /* none of the given files could be read; something is wrong */
+ if (ninLen > 1) {
+ fprintf(stderr, "\n%s: Unable to read from any file\n", me);
+ }
+ hestUsage(stderr, opt, me, hparm);
+ fprintf(stderr, "\nFor more info: \"%s --help\"\n", me);
+ }
airMopOkay(mop);
return 0;
Modified: teem/trunk/src/unrrdu/minmax.c
===================================================================
--- teem/trunk/src/unrrdu/minmax.c 2023-07-13 22:28:30 UTC (rev 7092)
+++ teem/trunk/src/unrrdu/minmax.c 2023-07-13 22:46:18 UTC (rev 7093)
@@ -22,6 +22,8 @@
#include "unrrdu.h"
#include "privateUnrrdu.h"
+#include <unistd.h> /* for isatty() and STDIN_FILENO */
+
#define INFO "Print out min and max values in one or more nrrds"
static const char *_unrrdu_minmaxInfoL
= (INFO ". Unlike other commands, this doesn't produce a nrrd. It only "
@@ -36,6 +38,11 @@
NrrdRange *range;
airArray *mop;
+ if (!strcmp("-", inS) && isatty(STDIN_FILENO)) {
+ biffAddf(me, "declining to try reading Nrrd from stdin as tty (terminal)");
+ return 1;
+ }
+
mop = airMopNew();
airMopAdd(mop, nrrd = nrrdNew(), (airMopper)nrrdNuke, airMopAlways);
if (nrrdLoad(nrrd, inS, NULL)) {
@@ -80,11 +87,12 @@
hestOpt *opt = NULL;
char *err, **inS;
airArray *mop;
- int pret, blind8BitRange, singleLine;
+ int pret, blind8BitRange, singleLine, okay;
unsigned int ni, ninLen;
#define B8DEF "false"
mop = airMopNew();
+ hparm->noArgsIsNoProblem = AIR_TRUE;
hestOptAdd_1_Bool(&opt, "blind8", "bool", &blind8BitRange,
B8DEF, /* NOTE: not using nrrdStateBlind8BitRange here
for consistency with previous behavior */
@@ -103,12 +111,14 @@
"and max, possibly followed by the single word \"non-existent\" if and "
"only if there were non-existent values. If there are multiple inputs, "
"the input filename is printed first on the per-input single line.");
- hestOptAdd_Nv_String(&opt, NULL, "nin1", 1, -1, &inS, NULL, "input nrrd(s)", &ninLen);
+ hestOptAdd_Nv_String(&opt, NULL, "nin1", 1, -1, &inS, "-", "input nrrd(s)", &ninLen);
airMopAdd(mop, opt, hestOptFree_vp, airMopAlways);
USAGE_OR_PARSE(_unrrdu_minmaxInfoL);
airMopAdd(mop, opt, (airMopper)hestParseFree, airMopAlways);
+ /* HEY "okay" logic copied from head.c */
+ okay = AIR_FALSE;
for (ni = 0; ni < ninLen; ni++) {
if (ninLen > 1) {
if (singleLine) {
@@ -121,11 +131,22 @@
airMopAdd(mop, err = biffGetDone(me), airFree, airMopAlways);
fprintf(stderr, "%s: trouble with \"%s\":\n%s", me, inS[ni], err);
/* continue working on the remaining files */
+ } else {
+ /* processed at least one file ok */
+ okay = AIR_TRUE;
}
if (ninLen > 1 && ni < ninLen - 1 && !singleLine) {
fprintf(stdout, "\n");
}
}
+ if (!okay) {
+ /* none of the given files could be read; something is wrong */
+ if (ninLen > 1) {
+ fprintf(stderr, "\n%s: Unable to read data from any file\n", me);
+ }
+ hestUsage(stderr, opt, me, hparm);
+ fprintf(stderr, "\nFor more info: \"%s --help\"\n", me);
+ }
airMopOkay(mop);
return 0;
Modified: teem/trunk/src/unrrdu/unorient.c
===================================================================
--- teem/trunk/src/unrrdu/unorient.c 2023-07-13 22:28:30 UTC (rev 7092)
+++ teem/trunk/src/unrrdu/unorient.c 2023-07-13 22:46:18 UTC (rev 7093)
@@ -35,14 +35,22 @@
int setMinsFromOrigin;
airArray *mop;
- /* if we gave a default for this, then there it would fine to have
- no command-line arguments whatsoever, and then the user would not
- know how to get the basic usage information */
- hestOptAdd(&opt, "i,input", "nin", airTypeOther, 1, 1, &nin, NULL,
- "input nrrd "
- "(sorry, can't use usual default of \"-\" for stdin "
- "because of hest quirk)",
- NULL, NULL, nrrdHestNrrd);
+ /*
+ * with new nrrdHestNrrdNoTTY, can let "-" be default input as normal; no more need
+ * for this awkwardness:
+ *
+ * / * if we gave a default for this, then there it would fine to have
+ * no command-line arguments whatsoever, and then the user would not
+ * know how to get the basic usage information * /
+ * hestOptAdd(&opt, "i,input", "nin", airTypeOther, 1, 1, &nin, NULL,
+ * "input nrrd "
+ * "(sorry, can't use usual default of \"-\" for stdin "
+ * "because of hest quirk)",
+ * NULL, NULL, nrrdHestNrrd);
+ */
+ hparm->noArgsIsNoProblem = AIR_TRUE;
+ hestOptAdd_1_Other(&opt, "i,input", "nin", &nin, "-",
+ "input nrrd. By default reads from stdin", nrrdHestNrrdNoTTY);
hestOptAdd_Flag(&opt, "smfo", &setMinsFromOrigin,
"set some axis mins based on space origin (hack)");
OPT_ADD_NOUT(out, "output nrrd");
Modified: teem/trunk/src/unrrdu/unquantize.c
===================================================================
--- teem/trunk/src/unrrdu/unquantize.c 2023-07-13 22:28:30 UTC (rev 7092)
+++ teem/trunk/src/unrrdu/unquantize.c 2023-07-13 22:46:18 UTC (rev 7093)
@@ -38,14 +38,19 @@
double oldMin, oldMax;
airArray *mop;
- /* mandatory arg so that "unu unquantize" produces usage info */
- hestOptAdd(&opt, "i,input", "nin", airTypeOther, 1, 1, &nin, NULL,
- "input nrrd. That this argument is required instead of "
- "optional, as with most unu commands, is a quirk caused by the "
- "need to have \"unu unquantize\" generate usage info, combined "
- "with the fact that all the other arguments have sensible "
- "defaults",
- NULL, NULL, nrrdHestNrrd);
+ /*
+ * with new nrrdHestNrrdNoTTY, can let "-" be default input as normal; no more need
+ * for this awkwardness:
+ * hestOptAdd(&opt, "i,input", "nin", airTypeOther, 1, 1, &nin, NULL,
+ * "input nrrd. That this argument is required instead of "
+ * "optional, as with most unu commands, is a quirk caused by the "
+ * "need to have \"unu unquantize\" generate usage info, combined "
+ * "with the fact that all the other arguments have sensible "
+ * "defaults",
+ * NULL, NULL, nrrdHestNrrd);
+ */
+ hparm->noArgsIsNoProblem = AIR_TRUE;
+ hestOptAdd_1_Other(&opt, "i,input", "nin", &nin, "-", "input nrrd", nrrdHestNrrdNoTTY);
hestOptAdd_1_Double(&opt, "min,minimum", "value", &oldMin, "nan",
"Lowest value prior to quantization. Defaults to "
"nin->oldMin if it exists, otherwise 0.0");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|